PDF de programación - Capítulo 4. El Protocolo TCP

Imágen de pdf Capítulo 4. El Protocolo TCP

Capítulo 4. El Protocolo TCPgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 4 de Marzo del 2018)
373 visualizaciones desde el 4 de Marzo del 2018
218,6 KB
17 paginas
Creado hace 13a (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
  • Links de descarga
http://lwp-l.com/pdf9199

Comentarios de: Capítulo 4. El Protocolo TCP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad