Introducción a TCP/IP.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

Introducción.

TCP/IP fue desarrollado y presentado por el Departamento de Defensa de EE.UU. En 1972 y fue aplicado en ARPANET (Advanced Research Projects Agency Network), que era la red de área extensa del Departamento de Defensa como medio de comunicación para los diferentes organismos de EE.UU. La transición hacia TCP/IP en ARPANET se concretó en 1983.

Se conoce como familia de protocolos de Internet al conjunto de protocolos de red que son implementados por la pila de protocolos sobre los cuales se fundamenta Internet y que permiten la transmisión de datos entre las redes de computadoras.

Los dos protocolos más importantes y que fueron también los primeros en definirse y también los más utilizados, son TCP (Protocolo de Control de Transmisión o Transmission Control Protocol) e IP (Protocolo de Internet o Internet Protocol), de ahí que se denomine también como Conjunto de Protocolos TCP/IP. Los tipos de protocolos existentes superan los cien, ente los cuales podemos mencionar como los más conocidos a HTTP, FTP, SMTP, POP, ARP, etc.

TCP/IP es la plataforma que sostiene Internet y que permite la comunicación entre diferentes sistemas operativos en diferentes computadoras, ya sea sobre redes de área local (LAN) o redes de área extensa (WAN).

Niveles de pila.

En la actualidad continúa la discusión respecto a si el modelo TCP/IP de cinco niveles encaja dentro del modelo OSI (Interconexión de Sistemas Abiertos u OpenSystems Interconnection) de siete niveles.

Modelo

Niveles

TCP/IP 5 Aplicación
4 Transporte
3 Red
2 Enlace
1 Físico.
OSI 7 Aplicación
6 Presentación
5 Sesión
4 Transporte
3 Red
2 Enlace de datos
1 Físico

Modelo TCP/IP.

Utiliza encapsulamiento para proveer la abstracción de protocolos y servicios hacia diferentes capas en la pila. La pila consiste de cinco niveles:

Nivel

Nombre

Descripción

5 Aplicación. Se compone de diversos protocolos de servicios como:

  • DNS (Domain Name System)
  • TLS/SSL (Transport Layer Security)
  • TFTP (Trivial File Transfer Protocol)
  • FTP (File Transfer Protocol)
  • HTTP (Hyper Text Transfer Protocol)
  • IMAP (Internet Messsage Access Protocol)
  • IRC (Internet Relay Chat)
  • NNTP (Network News Transfer Protocol)
  • POP3 (Post Office Protocol)
  • SIP (Session Iniciation Protocol)
  • SMTP (Simple Mail Transfer Protocol)
  • SNMP (Simple Network Management Protcol)
  • SSH (Secure Shell)
  • TELNET
  • BitTorrent
  • RTP (Real-time Transport Protocol)
  • rlogin
  • ENRP (Endpoint Handlespace Redundancy Protocol)

Los protocolos de encaminamiento como BGP (Border Gateway Protocol) y RIP (Routing Information Protocol) que utilizan transporte por TCP y UDP respectivamente pueden ser considerados como parte de esta capa.

4 Transporte. Se compone de diversos protocolos de servicios como:

  • TCP (Transmision Control Protocol)
  • UDP (User Datagram Protocol),
  • DCCP (Datagram Congestion Control Protocol)
  • SCTP (Stream Control Transmision Protococol)
  • IL (Internet Link Protocol, similar a TCP pero más simple)
  • RUDP (Reliable User Datagram Protocol), etc.

Los protocolos como OSPF (Open Shortest Path First), que corren sobre IP, pueden ser también considerados como parte de esta capa. ICMP (Internet Control Message Protocol) e IGMP (Internet Group Management Protocol) que también utilizan IP pueden ser considerados parte del Nivel de Red.

3 Red. Se compone de diversos protocolos de servicios como IP (incluyendo IPv4 e IPv6). Protocolos como ARP (Address Resolution Protocol) y RARP (Reverse Address Resolution Protocol) operan por debajo de IP, pero arriba del Nivel de enlace, de modo que pertenecen a un punto intermedio entre el Nivel de Red y el Nivel de Enlace.
2 Enlace. Compuesto de protocolos como:

  • Ethernet
  • Wi-Fi
  • Token ring
  • PPP (Point-to-Point Protocol)
  • SLIP (Serial Line Internet Protocol)
  • FDDI (Fiber Distributed Data Interface)
  • ATM (Asynchronous Transfer Protocol)
  • Frame Relay
  • SMDS (Switched Multi-megabit Data Services)
1 Físico. Medio físico.

Los niveles más cercanos altos son los más cercanos al usuario, mientras que los que están más hacia abajo están más cercanos a la transmisión física de los datos. Salvo por evidentes razones en el primer y último niveles, cada nivel tiene un nivel superior y un nivel inferior que, respectivamente o bien utilizan un servicio del nivel o proveen un servicio. Un método de abstracción para entender esto es mirar los niveles como proveedores o consumidores de servicios. Ejemplo: TCP en el nivel de transporte requiere un protocolo del nivel de Red, como sería IPv4, el cual a su vez requiere de un protocolo del nivel de enlace, siendo TCP un proveedor de servicio para los protocolos del nivel de aplicación.

Nivel de aplicación.

Es el nivel que utilizan los programas de red más comunes a fin de comunicarse a través de una red. La comunicación que se presenta en este nivel es especifica de las aplicaciones y los datos transportados desde el programa están en el formato utilizado por la aplicación y van encapsulados en un protocolo del Nivel de Transporte. Siendo que el modelo TCP/IP no tiene niveles intermedios, el nivel de Aplicación debe incluir cualquier protocolo que actúe del mismo modo que los protocolos del Nivel de Presentación y Nivel de Sesión del Modelo OSI. Los protocolos del Nivel de Transporte más comúnmente utilizados son TCP y UDP, mismos que requieren un puerto disponible y específico para el servicio para los servidores y puertos efímeros. Aunque los encaminadores (routers) e interruptores (switches) no utilizan este nivel, las aplicaciones que controlan el ancho de banda si lo utilizan.

Nivel de Transporte.

Este nivel principalmente provee lo necesario para conectar aplicaciones entere si a través de puertos. Mientras que IP (Internet Protocol),del Nivel de Red, provee solamente la mejor forma de entrega, el nivel de transporte es el primer nivel que se encarga de la fiabilidad. De entre todos los protocolos de este nivel, tanto TCP como UDP son utilizados para transportar un gran numero de aplicaciones de alto nivel. Las aplicaciones en cualquier nivel se distinguen a través de los puertos TCP o UDP que utilicen.

TCP.

El mejor ejemplo del nivel transporte. Es un protocolo orientado hacia conexión que resuelve numerosos problemas de fiabilidad para proveer una transmisión de bytes fiable ya que se encarga de que los datos lleguen en orden, tenga un mínimo de correcciones de errores, se descarten datos duplicados, se vuelvan a enviar los paquetes perdidos o descartados e incluya control de congestión de tráfico.

La conexiones a través de TCP tienen tres fases:

Establecimiento de la conexión.

Antes de que el cliente intente conectarse con el servidor, éste último debe primero ligarse hacia el puerto para abrirlo para las conexiones, es decir, una apertura pasiva. Una vez establecida el cliente puede iniciar la apertura activa. Se requiere de un saludo de tres etapas:

  1. La apertura activa se realiza enviando un paquete SYN (sincroniza) hacia el servidor.
  2. En respuesta, el servidor responde con un paquete SYN-ACK (conformación de sincronización).
  3. Finalmente el cliente envía un paquete ACK (confirmación) de regreso hacia el servidor.

En este punto tanto cliente como servidor han recibido una conformación de la conexión.

Transferencia de datos.

Hay varias funciones clave que diferencian a TCP de UDP:

  • Transferencia de datos libre de errores.
  • Transferencia de datos ordenada.
  • Retransmisión de paquetes perdidos.
  • Descartado de paquetes duplicados.
  • Ajuste en la congestión de la transmisión de datos.
Terminación de la conexión.

Esta etapa utiliza un saludo de tres vías, con cada extremo de la conexión terminando independientemente. Cuando una de los extremos desea detener su parte de la conexión, envía un paquete FIN, que la otra parte confirma con un paquete ACK. Por tanto una interrupción de la conexión requiere un par de paquetes FIN y ACK desde cada lado de la conexión TCP.

Una conexión puede quedar abierta a medias cuando uno de los extremos ha terminado la conexión desde su lado pero el otro extremo no. El extremo que terminó la conexión ya no puede enviar datos en la conexión, pero el otro extremo si.

El método más común sea un saludo de tres etapas donde un anfitrión A envía un paquete FIN y el anfitrión B responde con un paquete FIN y un ACK (en el mismo paso) y el anfitrión A responde con un paquete ACK.

TCP realiza las siguientes etapas en su zócalo:

  1. LISTEN
  2. SYN-SENT
  3. SYN-RECEIVED
  4. ESTABLISHED
  5. FIN-WAIT-1
  6. FIN-WAIT-2
  7. CLOSE-WAIT
  8. CLOSING
  9. LAST-ACK
  10. TIME-WAIT
  11. CLOSED

LISTEN representa la conexión en espera de peticiones desde cualquier puerto TCP remoto. SYN-SENT representa la espera del TCP remoto para enviar de regreso el paquete TCP estableciendo banderas SYN y ACK. SYN-RECIVED representa la espera para el TCP remoto para enviar de regreso la confirmación después de haber enviado de regreso otra confirmación de conexión al TCP remoto (establecido por el servidor TCP). ESTABLISHED representa que el puerto está listo para recibir/enviar datos desde/hacia el TCP remoto (lo hacen tanto clientes como servidores TCP). TIME-WAIT representa el tiempo de espera necesario para asegurar que el TCP remoto ha recibido la confirmación de su solicitud de terminación de la conexión.

UDP.

UDP, a veces referido sarcásticamente como Unreliable Datagram Protocol (Protcolo no fiable de datagrama), es un protocolo de datagrama sin corrección; no provee las garantía de fiabilidad y ordenamiento de TCP a los protocolos del Nivel de Aplicación y los datagramas pueden llegar en desorden o perderse sin notificación. Como consecuencia de lo anterior es que UDP es un protocolo más rápido y eficiente para tareas ligeras o sensibles al tiempo proveiendo una interfaz muy simple entre el Nivel de Red y Nivel de Aplicación. Si se requiere algún tipo de fiabilidad para los datos transmitidos, esta debe ser implementada en los niveles superiores de la pila.

Al igual que IP y a diferencia de TCP, es un protocolo de mejor esfuerzo o no-fiable. El único problema de fiabilidad que resuelve es la corrección de errores en la cabecera y datos transmitidos a través de un campo de 16 bits para suma de verificación (checksum), una forma de control de redundancia con la finalidad de proteger la integridad de datos verificando que no hayan sido corrompidos.

La estructura de paquetes UDP consiste de 4 campos.

Las aplicaciones más comunes que hacen uso de este tipo de protocolo son DNS, aplicaciones de transmisión de medios, voz sobre IP (VoIP), TFTP y juegos en línea.

SCTP.

SCTP es un mecanismo de transporte fiable orientado hacia conexión. Está orientado también hacia transmisión de datos pero no está orientado hacia bytes como TCP. Provee múltiples transmisiones distribuidos sobre una misma conexión. Puede además representar una conexión con múltiples direcciones IP de modo que si una IP falla, la conexión no se interrumpe. Se desarrollo inicialmente para aplicaciones de telefonía pero se puede utilizar en otras aplicaciones.

DCCP.

DCCP se encuentra en fase de desarrollo y bajo la tutela de la IETF (Internet Engineering Task Force) que pretende proveer la semántica de control de flujo de TCP y el modelo de servicio de datagrama de UDP a la vista del usuario.

RTP.

RTP es un protocolo de datagrama que fue diseñado para datos en tiempo real como la transmisión de audio y vídeo. Es un nivel de sesión que utiliza el formato de paquetes de UDP como base. Sin embargo se considera que pudiera acomodar debajo del nivel de transporte del modelo TCP/IP.

Nivel de Red.

Este nivel resuelve el problema de capturar los datos a través de una red única. IP (Internet Protocol) realiza la tarea básica de capturar los paquetes de datos desde una fuente hacia un destino. IP puede transportar datos para una gran cantidad de protocolos del nivel superior (Nivel de Transporte). Otro ejemplo de protocolo de este nivel es X.25, que es un conjunto de protocolos para redes WAN utilizando líneas telefónicas o sistema ISDN.

Nivel de Enlace.

Este nivel no es realmente parte del Conjunto de Protocolos TCP/IP, sino que es el método utilizado para pasar paquetes desde el Nivel de Red sobre dos diferentes anfitriones. Este proceso puede ser controlado a través deequipamiento lógico utilizado como controlador del dispositivo para una tarjeta de red así como también sobre la Programación en firme (Firmware) o circuitos integrados auxiliares (chipsets). Estos procesos realizarán funciones de enlace de datos tales como añadir una cabecera de paquete para preparar la transmisión y entonces transmitir el todo a través de un medio físico.

Este nivel es donde los paquetes son interceptados y enviados hacia una Red Privada Virtual (VPN). Cuando esto se lleva a acabo, los datos del Nivel de Enlace se consideran como los datos de la aplicación y procede descendiendo por la pila del modelo TCP/IP para realizar la verdadera transmisión. En el extremo receptor, los datos suben por la pila del modelo TCP/IP dos veces, una para la VPN y otra para el encaminamiento (routing).

Nivel Físico.

Al igual que el Nivel de Enlace, no es realmente parte del Conjunto de Protocolos TCP/IP. Contempla todas las características físicas de la comunicación como la naturaleza del medio, detalles de conectores, código de canales y modulación, potencias de señal, longitudes de onda, sincronización y tiempo de vida y distancias máximas.

Modelo OSI.

El Conjunto de Protocolos TCP/IP (y su correspondiente pila) han sido utilizados antes de que se estableciera el modelo OSI (Interconexión de Sistemas Abiertos u Open Systems Interconnection) y desde entonces el modelo TCP/IP ha sido comparado con el modelo OSI tanto en libros como en instituciones educativas. Ambas se relacionan pero no son equiparables. El modelo OSI utiliza siete niveles, mientras que el modelo TCP/IP utiliza cinco niveles. Los dos niveles que hacen la diferencia en el Modelo OSI son el Nivel de Presentación y el Nivel de Sesión, mismo que podrían ser equivalentes al Nivel de Aplicación del modelo TCP/IP.

Del mismo modo que la pila del modelo TCP/IP, el modelo OSI no es lo suficientemente diverso en los niveles inferiores para abarcar las verdaderas capacidades del Conjunto de Protocolos TCP/IP. Un claro ejemplo es que falta un nivel intermedio para para acomodar entre el Nivel de Red y el Nivel de Transporte para poder determinar donde corresponden los protocolos ICMP e IGMP y otro nivel intermedio entre el Nivel de Red y el Nivel de Transporte para determinar donde corresponden los protocolos ARP y RARP.

Nivel

Nombre

Descripción

7 Aplicación HTTP, SMTP, SNMP, FTP, Telnet, SIP, SSH, NFS, RTSP, XMPP (Extensible Messaging and Presence Protocol), Whois, ENRP Telnet.
6 Presentación XDR (External Data Representation), ASN.1 (Abstract Syntax Notation 1), SMB (Server Message Block),AFP (Apple Filing Protocol), NCP (NetWare Core Protocol)
5 Sesión ASAP (Aggregate Server Access Protocol), TLS, SSH, ISO 8327 / CCITT X.225, RPC (Remote Procedure Call), NetBIOS, ASP (Appletalk Session Protocol), Winsock, BSD sockets
4 Transporte TCP, UDP, RTP, SCTP, SPX, ATP, IL
3 Red IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP, IGRP, EIGRP, IPX, DDP.
2 Enlace de datos Ethernet, Token ring, HDLC, Frame relay, ISDN, ATM, 802.11 WiFi, FDDI, PPP
1 Físico Define todas las especificaciones físicas y eléctricas de los dispositivos, como son disposición de pines, voltajes, especificaciones de cableado, concentradores, repetidores, adaptadores de red, etc.

Cable, Radio, fibra óptica, Red por palomas.

Los niveles 7 al 4 se clasifican como niveles de anfitrión, mientras que los niveles inferiores del 1 al 3 se clasifican como niveles de medios.