Actualizado el 21 de Marzo del 2018 (Publicado el 4 de Marzo del 2018)
1.163 visualizaciones desde el 4 de Marzo del 2018
218,6 KB
17 paginas
Creado hace 18a (22/09/2006)
Capítulo 4. El Protocolo TCP
CAPÍTULO 4
EL PROTOCOLO TCP
4.1 Introducción al protocolo TCP
En la red Internet, el protocolo principal del nivel de transporte es el
Transmission Control Protocol (TCP) [31]. La pila protocolaria TCP/IP viene
representada en la figura 4.1 [9]:
HTTP-FTP-Telnet-DNS-POP3/IMAP
SMTP-SNMP-RTP
TCP-UDP
IP-ICMP
Ethernet-IEEE
FDDI-ISDN-
802.11-SONET/SDH-PPP-HDLC
802.3-IEEE
Frame
802.5-
Relay-IEEE
Aplicación
Transporte
Red
Network
Access
Figura 4.1: Niveles del TCP/IP
El TCP, definido inicialmente en el RFC 793 [32], ha sido modificado y
corregido en el curso de los años para adaptarlo a cada tipología de red (RFC 1122,
RFC 1323, RFC 2018, RFC 2581, RFC 3782). Actualmente, la mayor parte de las
investigaciones y de los estudios envueltos en el TCP investigan el comportamiento de
51
Capítulo 4. El Protocolo TCP
este protocolo sobre las redes wireless y es de esto el argumento que se verá expuesto en
los próximos capítulos.
El protocolo TCP ha sido proyectado para proporcionar un flujo fiable de byte,
desde la fuente hasta el destino, sobre una red no fiable. Mientras que el protocolo IP,
inferior al protocolo TCP, proporciona un servicio de tipo best-effort, es decir, “hace lo
mejor” para entregar los datagramas entre dos servidores en comunicación, no logra
garantizar que los paquetes alcancen efectivamente un destino y que se respete el orden
de entrega y la integridad de los datos.
Por tanto, el protocolo TCP beneficiándose del servicio del IP, proporciona un
servicio fiable de transferencia de datos entre los procesos. Sus principales funciones
son:
(cid:190) Reconstruir el flujo originariamente transmitido en el caso de
fenómenos de pérdida, duplicación o entrega fuera de secuencia
de las unidades informativas y de congestión;
(cid:190) Adoptar técnicas para el control de flujo y congestión [4].
Con el control de flujo, el TCP previene que el emisor de una comunicación
envíe mensajes superiores a la capacidad actual del buffer del destino, mientras que con
el control de congestión, limita la cantidad de datos introducidos en la red de manera
que se evita sobrecargar a los encaminadores y la consiguiente pérdida de paquetes.
Además, el TCP efectúa la multiplexación de más flujos informativos de usuario
sobre la misma conexión de transporte y soporta transmisiones full-duplex. La conexión
TCP es de tipo point-to-point, es decir, entre un único receptor y un único emisor. Por lo
tanto, el llamado multicasting no es realizable con el TCP. Se dice que: “Para el TCP,
dos servidores son una compañía, tres son multitud” [4].
El servicio ofrecido por el TCP se llama byte-oriented en cuanto los niveles
superiores escriben o leen de los byte de la conexión TCP, pero el mismo TCP no
transmite los byte uno cada vez, sino que los organiza en un paquete llamado segmento
(figura 4.2). La cantidad de datos que pueden ser extraídos e insertados en segmentos
vienen limitados por la dimensión máxima del segmento (MSS, Maximum Segment
Size) que depende de la implementación del TCP relativa al determinado sistema
operativo (valores usuales son 1500, 536, 512 byte) [10].
52
Capítulo 4. El Protocolo TCP
Figura 4.2: Servicio byte-oriented del TCP
Establecida la conexión TCP, el proceso cliente pasa una corriente de byte a
través del socket (la puerta del proceso). Una vez atravesada la puerta, el TCP
direcciona estos bytes en un buffer de envío (send buffer) y de vez en cuando se extraen
algunos y los organiza en un segmento adhiriéndolos a una cabecera TCP. El segmento
viene bajado al nivel de red y encapsulado en un datagrama IP, este último viene
después enviado a la red. En el otro extremo, el TCP recibe los segmentos y los pone en
el buffer de recepción, del cual la aplicación lee la corriente de bytes [10].
4.2 El formato del segmento TCP
La estructura del segmento TCP [9] viene mostrada en la figura 4.3:
53
Capítulo 4. El Protocolo TCP
Figura 4.3: Formato del segmento TCP.
Este consta de un campo de cabecera (header) y de un campo de datos (payload).
• La cabecera comprende números de puerta fuente (Source Port) y de
destino (Destination Port) que, juntos a los valores de la dirección IP fuente y
destino, identifican unívocamente una conexión TCP y hacen posible la
comunicación entre dos procesos en servidores distintos (esto permite incluso
tener más conexiones entre dos servidores iguales, dado que cada uno está
identificado unívocamente).
• En la cabecera hay otros dos campos: los campos Sequence Number y
Acknowledgment Number que tienen, cada uno, longitud de 32 bit y se utilizan
para hacer fiable el servicio de transferencia de datos.
El TCP, de hecho, ve los datos como un flujo de byte no estructurado
pero ordenado: el número de secuencia para un segmento es el número del
primer byte del segmento al interno del flujo.
El Sequence Number contiene el número del primer byte de datos
contenido en el segmento; el campo Acknowledgment Number, sin embargo,
contiene el número de secuencia del sucesivo byte esperado por el destinatario.
54
Capítulo 4. El Protocolo TCP
• Viene después el campo Advertised Window que se utiliza para el control
del flujo. Indica el número de byte que el receptor está dispuesto a aceptar. Este
ocupa 16 bit en la cabecera TCP.
Estos
tres campos
(SequenceNum, Acknowledgment, Advertised
Window) son una parte crítica del servicio de transferencia fiable para los datos
del TCP.
• El campo Header Length (HdrLEN) expresa la longitud de la cabecera
TCP en palabras de 32 bit. Es necesario tener en cuenta en recepción esta
información, ya que el campo Option es de dimensiones variables. Son 4 bit y
debe ser al menos igual a 5 (20 byte, de hecho, es la longitud mínima de la
cabecera de un segmento TCP).
• En la cabecera encontramos, además, el campo Flags, que contiene 6 bit,
los cuales describimos a continuación:
1 bit
URG
1 bit
ACK
1 bit
PSH
1 bit
RST
1 bit
SYN
1 bit
FIN
Figura 4.4: Campo Flags
o El flag URG (Urgent Pointer): es usado para indicar que
en el relativo segmento hay datos que la unidad superior
del remitente ha indicado como urgentes. La dislocación
(offset) del último byte de estos datos urgentes se indica
en el campo urgent data pointer a 16 bit.
o El flag ACK (Acknowledgment): sirve para indicar que el
valor portado en el relativo campo es válido. Este bit vale
1 si el campo ack number contiene un dato válido, sino,
quiere decir que el segmento TCP no contiene una
verificación y el campo ack number se ignora.
o El flag PSH (Push): cuando está puesto a 1 le indica al
protocolo TCP que transmita todos los datos presentes en
el buffer de recepción y los datos apenas recibidos, sin
esperar el rellenado del buffer.
55
Capítulo 4. El Protocolo TCP
o El flag RST (Reset): este bit puesto a 1 indica que
es necesario restablecer la conexión ya que se hace
inestable debido a una avería o cualquier otro motivo.
A menudo viene usado para rechazar un intento de
conexión.
o El
identificar
que
comunicación, cuando su valor es 1.
o El flag FIN (Final): puesto a 1 indica que el emisor
no tiene más datos para enviar, cerrando la conexión
TCP.
(Synchronization): sirve para
la
flag SYN
los mensajes
instauran
Entre el campo Header Length y el campo Flags hay 6 bit que no se utilizan.
• La cabecera comprende también, un campo Checksum, de 16 bit, que
verifica la corrección de la cabecera TCP, de los datos TCP y de un pseudo
preámbulo que contiene la dirección IP de fuente y destino. El número de byte
del segmento TCP es el identificativo para el protocolo TCP que vale 6.
• El campo Urgent Pointer (UrgPtr) indica el desplazamiento en byte
respecto al primer byte del segmento donde finalizan los datos urgentes. Tan
solo sirve si el flag URG vale 1.
• El campo Option, finalmente, es un campo de longitud variable que puede
contener subcampos diseñados con la finalidad de proporcionar un método para
alcanzar nuevos servicios extras. Como, por ejemplo, para negociar entre emisor
y receptor la dimensión máxima del segmento. En el RFC 1323 [33] se propone
la opción Window scale que indica un factor de escala de la ventana para el uso
en las redes a alta velocidad [26] [33].
4.3 La gestión de la conexión TCP
Sabemos ya que el TCP es un protocolo orientado a conexión; esto implica que
una conexión entre emisor y destinatario deba ser instaurada antes de iniciar un
56
Capítulo 4. El Protocolo TCP
intercambio de datos. Las modalidades de las creaciones de las conexiones son
significativas y no despreciables dado que esta fase podría aportar un posterior retardo a
la transmisión. Con el fin de establecer una conexión, el TCP usa un procedimiento
denominado “three way handshake”, según el cual los dos servidores se intercambian
paquetes (figura 4.5).
Figura 4.5: Three way handshake del TCP
El primer paso de este procedimiento prevé que el emisor envíe un segmento con
el bit SYN y ponga en el campo SequenceNum el número de secuencia (x) que utilizará
para transmitir los datos. El valor del número de secuencia es un número pseudocasual
(generalmente distinto de 0) de modo que evita que los segmentos de la nueva conexión
se confundan con los de una conex
Comentarios de: Capítulo 4. El Protocolo TCP (0)
No hay comentarios