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
A pesar de que TCP y UDP utilizan la misma capa de red (IP), TCP ofrece un servicio totalmente diferente a la capa de aplicación que UDP no. TCP proporciona una conexión-orientada, confiable, al de flujo de bytes.
- 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.
- 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.
Establecimiento de protocolo de conexión
- 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 ACK del 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).
Espero les sirva.
[…] inició un ataque de SYN flood hacia rimmon, para anestesiarlo y poder suplantarlo, como es esto? Anteriormente, veíamos como funcionaba el protocolo TCP/IP, y mencionábamos el saludo de tres vías (three-way […]
Como es la secuencia de mensajes al intentar iniciar una conexion TCP si el puerto al que me quiero conectar esta cerrado??