jueves, 21 de junio de 2012
SINCRONIZACION
Sincronización de los números de secuencia. Se utiliza al crear una conexión
para indicar al otro extremo cual va a ser el primer número de secuencia con el que va
a comenzar a transmitir (veremos que no tiene porqué ser el cero).
CONEXIONES
Conexiones
Una conexión son dos pares
dirección IP:puerto. No puede haber dos conexiones iguales en
un mismo instante en toda la Red. Aunque bien es posible que un mismo ordenador tenga dos
conexiones distintas y simultáneas utilizando un mismo puerto. El protocolo TCP utiliza el concepto
de conexión para identificar las transmisiones. En el siguiente ejemplo se han creado tres
conexiones. Las dos primeras son al mismo servidor Web (puerto 80) y la tercera a un servidor de
FTP (puerto 21).
Host 1 | Host 2 |
194.35.133.5:1256 | 135.22.8.165:80 |
184.42.15.16:1305 | 135.22.8.165:80 |
184.42.15.16:1323 | 135.22.10.15:21 |
Para que se pueda crear una conexión, el extremo del servidor debe hacer una
apertura pasiva del puerto (escuchar su puerto y quedar a la espera de conexiones) y el cliente, una
apertura activa en el puerto del servidor (conectarse con el puerto de un determinado servidor).
ESTABLECIMIENTO Y FIN DE LA CONEXION
Establecimiento
Aunque es posible que un par de entidades finales comiencen una
conexión entre ellas simultáneamente, normalmente una de ellas abre un socket en un determinado puerto TCP
y se queda a la escucha de nuevas conexiones. Es común referirse a esto
como apertura pasiva, y determina el lado servidor de una conexión. El
lado cliente de una conexión realiza una apertura activa de un puerto
enviando un paquete SYN
inicial al servidor como parte de la negociación en tres pasos. En el
lado del servidor se comprueba si el puerto está abierto, es decir, si
existe algún proceso escuchando en ese puerto. En caso de no estarlo, se
envía al cliente un paquete de respuesta con el bit RST
activado, lo que significa el rechazo del intento de conexión. En caso
de que sí se encuentre abierto el puerto, el lado servidor respondería a
la petición SYN válida con un paquete SYN/ACK. Finalmente, el cliente
debería responderle al servidor con un ACK, completando así la negociación en tres pasos (SYN, SYN/ACK y ACK) y la fase de establecimiento de conexión.
Es interesante notar que existe un número de secuencia generado por
cada lado, ayudando de este modo a que no se puedan establecer
conexiones falseadas (spoofing).
Fin de la conexión
La fase de finalización de la conexión usa una negociación en cuatro
pasos (four-way handshake), terminando la conexión desde cada lado
independientemente. Cuando uno de los dos extremos de la conexión desea
parar su "mitad" de conexión transmite un paquete FIN,
que el otro interlocutor asentirá con un ACK. Por tanto, una
desconexión típica requiere un par de segmentos FIN y ACK desde cada
lado de la conexión.
Una conexión puede estar "medio abierta" en el caso de que uno de los
lados la finalice pero el otro no. El lado que ha dado por finalizada
la conexión no puede enviar más datos pero la otra parte si podrá.
Suscribirse a:
Entradas (Atom)