Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Grados Ing. Informática / Ing. de Computadores / Ing. del Software / Doble Grado
Universidad Complutense de Madrid
PROFESORES:
Rafael Moreno Vozmediano
Rubén Santiago Montero
Juan Carlos Fabero Jiménez
Inmaculada Pardines Lence
Carlos González Calvo
Julio Septién del Castillo
Protocolos de transporte en Internet: TCP y UDP
● El protocolo TCP (Transmission Control Protocol)
○ Protocolo de transporte "orientado a conexión"
○ Garantiza un servicio extremo a extremo fiable
■ Detectar/retransmitir segmentos de datos perdidos o erróneos
■ Detectar y descartar segmentos duplicados
■ Ordenar los segmentos en el destino y pasarlos de forma ordenada a la
capa de aplicación
○ Utilizado en aplicaciones en las que la fiabilidad en la entrega es más
importante que la rapidez
■ Ejemplos: FTP, HTTP, Telnet, SMTP, etc.
Ejemplos Telnet, FTP, HTTP, SMTP, POP3... DNS, RIP, SNMP, DHCP...
El modelo cliente-servidor
● El modelo cliente-servidor
○ Es el patrón de comunicación usado por la mayoría de las aplicaciones
TCP/UDP
○ El funcionamiento básico se emplea en otros modelos (e.g. peer-to-peer)
● Cliente
○ Es la aplicación que inicia la conexión o el intercambio de datos con la
máquina remota (servidor)
○ La aplicación cliente normalmente la arranca un usuario cuando quiere
utilizar un servicio de la red
○ Ejemplos: Navegador web (TCP), cliente de e-mail (TCP), consulta al
servidor DNS (UDP)
● Servidor
○ Es la aplicación que recibe y acepta la solicitud de conexión o intercambio
de datos del cliente
○ Esta aplicación normalmente está ejecutándose continuamente en la
máquina remota y está a la espera de solicitudes de clientes
○ Ejemplos: Servidor Web (TCP), Servidor de correo electrónico (TCP),
Servidor DNS (UDP)
El modelo cliente-servidor: Sockets y Puertos
● Sockets y Puertos
○ El canal de comunicación establecido entre el cliente y el servidor se
denomina “socket” (enchufe)
○ El socket permite el intercambio de datos bidireccional entre cliente y
servidor
○ Cada aplicación servidor o cliente está identificada por un número de puerto
FTP 21 DNS 53
SSH 22 HTTP 80
Máquina Cliente A
(IP: 100.10.1.1) Máquina Servidor
(IP: 173.194.34.240)
Puerto 2222
Máquina Cliente A
(IP: 147.89.2.1)
Puerto 2222
El protocolo UDP: Características
Datos Datos
El protocolo UDP: Campos de la Cabecera
● Puerto origen y destino:
○ Identifican a las aplicaciones que se comunican
● Longitud UDP
○ Longitud total en bytes del datagrama UDP (incluyendo datos y cabecera)
● Suma de comprobación
○ Se calcula como el complemento a 1 de la suma en complemento a 1 de
todas las palabras de 16 bits que forman parte de:
■ El datagrama UDP (datos + cabecera UDP)
■ Una pseudo-cabecera formada por información de la cabecera IP:dir. IP
fuente, dir. IP destino, campo Protocolo y longitud UDP.
Dir. IP fuente
Dir. IP destino Pseudo-cabecera
0 17 (protocolo) Longitud UDP
Cabecera UDP
Datagrama
Datos UDP
Byte de relleno (0)
Si el nº de bytes de datos es impar
El protocolo UDP: Mecanismos de transmisión
● Envío de paquetes UDP a un puerto de servicio ABIERTO
Emisor Receptor
Datagrama UDP
Datagrama UDP
Datagrama UDP
Datagrama UDP
Datagrama UDP
Datagrama UDP
Emisor Receptor
Datagrama UDP
Puerto destino CERRADO
100 101 102 ... 170 171 172 ... 200 201
bytes enviados y
no confirmados bytes que se pueden
enviar sin confirmación
Estrechamiento de la ventana
(control flujo)
Números de Secuencia, número de
byte en el flujo de datos. Primer byte
del segmento
Deslizamiento de la ventana
cuando se recibe una confirmación
El protocolo TCP: Ventana Deslizante (recepción)
Ventana de Recepción, bytes que
se pueden recibir (control flujo)
100 101 102 ... 170 171 172 ... 200 201
bytes recibidos y
confirmados
Buffer de recepción
Deslizamiento de la ventana
cuando se consumen los datos
Números Confirmación (ACK), número del primer byte en el flujo de datos que
se espera recibir.
● Acumulativos, confirman todos los bytes anteriores al de ACK
● Piggybacking, se solapan con el envío de datos
Ventana Deslizante: Funcionamiento
Ejemplo: Transmisión sin errores. Tamaño de la ventana 100 bytes, Tamaño del
segmento 100 bytes.
Emisor Receptor
SEQ = 1
(bytes del 1 al 100)
ACK = 101 (bytes del 1 al 100)
SEQ = 101
(bytes del 101 al 200)
ACK = 201 (bytes del 101 al 200)
SEQ = 201
(bytes del 201 al 300)
ACK = 301 (bytes del 201 al 300)
SEQ = 301
(bytes del 301 al 400)
ACK = 401 (bytes del 301 al 400)
Número de secuencia
Cabecera TCP
Número de confirmación
Long.
Reservado Tamaño de ventana
Cabec.
Suma de comprobación Puntero de urgente
Datos (opcional)
El protocolo TCP: Formato del segmento
● Suma de comprobación
○ Se calcula como el complemento a 1 de la suma en complemento a 1 de
todas las palabras de 16 bits que forman parte de:
■ El segmento TCP (datos + cabecera TCP)
■ Una pseudo-cabecera formada por información de la cabecera IP: dir.
IP fuente, dir. IP destino, campo Protocolo y longitud del segmento
TCP.
Dir. IP fuente
Dir. IP destino Pseudo-
0 6 (protocolo) Longitud segmento TCP cabecera
Cabecera TCP
Segmento
Datos TCP
Byte de relleno (0)
Si el nº de bytes de datos es impar
El protocolo TCP: Formato del segmento
● Opciones
○ Permite negociar parámetros adicionales de la conexión
○ Principales opciones
■ Tamaño máximo del segmento (MSS, Maximun Segment Size)
● Permite negociar el tamaño máximo del bloque de datos que
contienen los segmentos que se envían al destinatario
● Si no se negocia el MSS al inicio de una conexión, se establece un
valor por defecto de 536 bytes.
■ Factor de escala de ventana
● Permite trabajar con ventanas mayores de 216 bytes
■ Sello de tiempo (timestamp)
● Permite introducir la hora de envío de un segmento
● Se utiliza para calcular el tiempo de ida y vuelta de los segmentos y
sus correspondientes confirmaciones
■ Opción de confirmación selectiva (SACK, Selective ACK)
● Permite confirmar segmentos fuera de orden
El protocolo TCP: Establecimiento y Cierre
● Establecimiento de la conexión: Protocolo de 3 vías (3-way handshake)
SYN
SYN,ACK
ACK
(SEQ=x+1, ACK=y+1)
El protocolo TCP: Establecimiento y Cierre
● Mecanismo de desconexión: Protocolo de 4 vías
○ Uno de los extremos (A) ha terminado de transmitir y cierra primero la
conexión
○ El extremo A ya no enviará más datos, pero puede recibir datos del extremo
contrario y devolver confirmaciones
○ El otro extremo (B) todavía puede tener datos pendientes de envío
Cierre activo A B Cierre pasivo
FIN*
ACK
FIN*
ACK
(*) Los dos segmentos de FIN, también llevan el ACK activado y transportan un nº de confirmación válido
El protocolo TCP: Establecimiento y Cierre
● Mecanismo de desconexión: Protocolo de 3 vías
○ Ambos extremos (A y B) han terminado de transmitir y están de acuerdo en
cerrar la conexión
FIN*
ACK
(*) Los dos segmentos de FIN, también llevan el ACK activado y transportan un nº de confirmación válido
El protocolo TCP: Establecimiento y Cierre
● Mecanismo de desconexión abrupta (comunicación abortada)
El protocolo TCP: Mecanismos de transmisión
Emisor Recepto
Datos enviados
SEQ = 1 (bytes 1 - 100) r a la aplicación
SEQ = 101 (bytes 101 - 200) ACK = 101 → bytes 1 al 100
SEQ = 201 (bytes 201 - 300) ACK = 201 → bytes 101 al 200
SEQ = 301 (bytes 301 - 400)
ACK = 201
SEQ = 401 (bytes 401 - 500) ACK = 401 → bytes 201 al 400
ACK = 501 → bytes 401 al 500
SEQ = 501 (bytes 501 - 600)
Datos enviados
SEQ = 1 (bytes 1 - 100) a la aplicación
SEQ = 101 (bytes 101 - 200) ACK = 101 → bytes 1 al 100
SEQ = 201 (bytes 201 - 300) ACK = 201 → bytes 101 al 200
SEQ = 301 (bytes 301 - 400)
SEQ = 401 (bytes 401 - 500) ACK = 201 (I)
SEQ = 501 (bytes 501 - 600) ACK = 201 (II)
SEQ = 601 (bytes 601 - 700)
ACK = 201 (III)
SEQ = 701 (bytes 701 - 800)
ACK = 201
SEQ = 201 (bytes 201 - 300)
ACK = 201
ACK = 801 → bytes 201 al 800