El
protocolo TCP/IP permite que los ordenadores de todos los tamaños, de
arquitecturas diferentes, que ejecutan sistemas operativos totalmente
diferentes, puedan comunicarse unos con otros. Es bastante sorprendente, porque
su uso ha superado con creces sus previsiones originales. Lo que comenzó en la
década de 1960 como un proyecto financiado por el gobierno para la
investigación sobre conmutación de paquetes en red, se convirtió, en la década
de 1990, en la forma más utilizada de la creación de redes entre computadoras.
Es
realmente un sistema abierto en el que la definición del conjunto de protocolos
y muchas de sus implementaciones están disponibles al público con poco o ningún
costo. Constituye la base para lo que llamamos Internet, una red de área amplia
(WAN) de más de un millón de computadoras que, literalmente, se extiende por el
todo mundo.
Los
Protocolos de red se desarrollan normalmente en capas, cada capa es responsable
de una faceta diferente de las comunicaciones. Una suite de protocolos, como
TCP/IP, es la combinación de diferentes protocolos en diferentes capas. TCP/IP
se considera normalmente como un sistema de 4-capas:
·
La capa de enlace
(link), a veces llamada la capa de enlace de datos o de la capa de interfaz de
red, que normalmente incluye el controlador de dispositivo en el sistema
operativo y la correspondiente tarjeta de interfaz de red en el equipo. Juntos
manejan todos los detalles de hardware de la interfaz física con el cable (o
cualquier tipo de medios de comunicación se está utilizando)
·
La capa de red
-network- (a veces llamada la capa de Internet) se encarga de la circulación de
los paquetes por la red. El enrutamiento de los paquetes, por ejemplo, tiene
lugar aquí. El IP (Internet Protocol), ICMP (Internet Control Message Protocol)
e IGMP (Internet Group Management Protocol) proporcionan la capa de red en el
protocolo TCP/IP.
·
La capa de transporte
(transport) proporciona un flujo de datos entre dos ordenadores, por encima de
la capa de aplicación. En el protocolo TCP/IP se tienen dos protocolos de
transporte muy diferentes: TCP (Transmission Control Protocol) y UDP (User
Datagram Protocol). TCP proporciona un flujo fiable de datos entre dos hosts.
Se ocupa de cosas tales como dividir los datos que se le pasan a la aplicación
en tramas de tamaño adecuado para la capa de red a continuación, reconociendo
los paquetes recibidos, el establecimiento de tiempos de espera para asegurarse
que el otro extremo reconoce los paquetes que se envían, y así sucesivamente.
Debido a que este flujo confiable de datos es proporcionado por la capa de
transporte, la capa de aplicación puede pasar por alto todos estos detalles.
UDP, en cambio, ofrece un servicio mucho más simple de la capa de aplicación.
Simplemente envía paquetes de datos llamados datagramas de un host a otro, pero
no hay garantía de que los datagramas lleguen al otro extremo. Toda la
fiabilidad deseada hay que añadirla en la capa de aplicación.
·
La capa de aplicación
(application) se encarga de los detalles de cada aplicación en particular. Hay
muchas aplicaciones comunes de TCP/IP que casi todas las implementaciones del
protocolo proporcionan:
Telnet
para acceso remoto,
FTP,
File Transfer Protocol, para trasferencia de archivos,
SMTP,
Simple Mail Transfer Protocol, para correo electrónico,
SNMP,
Simple Network Management Protocol, para administración vía red.
SERVICIOS TCP
TCP
proporciona una conexión-orientada, confiable, al de flujo de
bytes.
El
termino conexión-orientada significa que dos aplicaciones que
utilizan TCP (habitualmente se considera un cliente y un servidor) deben
establecer una conexión TCP entre sí, antes de que puedan intercambiar datos.
La analogía típica es marcar un número de teléfono, esperando que la otra parte
conteste el teléfono y decir “hola“, y luego preguntar quien está
llamando.
TCP
proporciona la confiabilidad de la siguiente manera:
Empaqueta
los datos del usuario en segmentos, establece un tiempo de espera al momento
que envía los datos, reconoce los datos recibidos por el otro extremo, reordena
los datos, descarta datos duplicados, dispone de extremo a extremo de control
de flujo, y calcula y verifica un control end-to-end.
Una
conexion TCP tiene dos puntas identificadas cada una por un par de elementos IP
y puerto: la dirección IP y el número de puerto local, y la dirección IP y el
número de puerto externo. La combinación de una dirección IP y un número de
puerto es llamado un socket. Cada vez que se termina una relación,
un extremo debe mantener la administración de la conexión, el estado (TIME_WAIT) maneja esta situación.
Existen
seis bits de banderas (flags) en la cabecera TCP. Uno o más de ellos se puede
activar al mismo tiempo:
- URG El puntero
urgente (urgent pointer) es válido.
- ACK el número de
confirmación (acknowledgment number) es válido.
- PSH El receptor debe
pasar estos datos a la aplicación tan pronto como sea posible.
- RST Conexión perdida
(reset).
- SYN Sincronizar números
de secuencia para iniciar una conexión.
- FIN El remitente ha
terminado el envío de datos.
Cuando
una nueva conexión es establecida, el flag SYN es activado. El campo número
de secuencia contiene elnúmero de secuencia inicial (ISN) elegido por el host para esta
conexión. El número de secuencia del primer byte de los datos
enviados por este host será el ISN más uno, porque el flag SYN consume
un número de secuencia.
Este número
de secuencia es un número de 32 bits generado aleatoriamente por el host. Sirve para
comprobar que ningún segmento se ha perdido, y que llegan en el orden correcto.
Su significado varía dependiendo del valor de SYN:
- Si el flag SYN está activo (1), entonces este campo
indica el número inicial de secuencia (con lo cual el número de secuencia
del primer byte de datos será este número de secuencia más uno).
- Si el flag SYN no está activo (0), entonces este campo
indica el número de secuencia del primer byte de datos.
Dado
que cada byte que se intercambia es numerado, el número de confirmación (acknowledgment
number) contiene el siguiente número de secuencia que el emisor espera
recibir como acuse de recibo. Esto es, por tanto, el número de secuencia más 1
de los últimos bytes de datos que se han recibido correctamente. Este campo
sólo es válido si el flag ACK está
activo.
TCP
proporciona un servicio full-duplex para la capa de
aplicación. Esto significa que los datos puedan fluir en cada sentido,
independiente de la otra dirección. Por lo tanto, cada extremo de una conexión
debe mantener un número de secuencia del flujo de datos en cada dirección.
Establecimiento de protocolo de conexión
Para
establecer una conexión TCP:
- El solicitante
(normalmente llamado el cliente) envía un segmento SYN especificando el número
de puerto del servidor al que quiere conectarse, y su número de secuencia
inicial (ISN, 1415531521, por ejemplo). Este es el segmento 1.
- El servidor
responde con su propio segmento SYN que contiene su
número de secuencia inicial (segmento 2). El servidor también reconoce el SYN del
cliente por el flag ACKdel ISN del
cliente más uno. Un SYN consume un número de secuencia.
- El cliente debe
reconocer este SYN del servidor por el flag ACK del ISN del
servidor más uno (segmento 3).
Estos
tres segmentos completan el establecimiento de la conexión. Esto es a menudo
llamado el saludo de tres vías (three-way handshake).


No hay comentarios:
Publicar un comentario