clase 04 - protocolos de transporte

73
1 El Nivel de Transporte en Internet Bibliografía : 1. Redes de Computadores en Internet, Fred Halsall 5°ed. Cap 7. 2. Comunicaciones y redes de Computadoras, Williams Stallings 6° ed – cap 17 3. Internetworking with TCP/IP vol 1, Comer 5° ed. 4. TCP/IP Tutorial and Technical Overview, Adolfo Rodriguez y otros. Ed IBM redbook 2001 (PDF)

Upload: leo-bullo

Post on 01-Jan-2016

65 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase 04 - Protocolos de Transporte

1

El Nivel de Transporte en Internet

Bibliografía:1. Redes de Computadores en Internet, Fred Halsall

5°ed. Cap 7.

2. Comunicaciones y redes de Computadoras, Williams Stallings 6° ed – cap 17

3. Internetworking with TCP/IP vol 1, Comer 5° ed.

4. TCP/IP Tutorial and Technical Overview, Adolfo Rodriguez y otros. Ed IBM redbook 2001 (PDF)

Page 2: Clase 04 - Protocolos de Transporte

Funciones del Nivel de Transporte

2

Se encarga del transporte de los datos extremo a extremo (host a

host).

Realiza la comunicación de forma transparente al medio físico. Usa

los servicios del nivel de red

Multiplexa tráfico de diversas instancias (procesos) del nivel de

aplicación

La unidad de transferencia de información a nivel de transporte es la

TPDU (Transport Protocol Data Unit)

Page 3: Clase 04 - Protocolos de Transporte

Tipo de servicio del Nivel de Transporte

3

Servicio confiable:

Sin pérdidas ni datos duplicados.

Para ello se utiliza un servicio orientado a conexión (CONS).

Si el servicio de interconexión (IP) es no seguro, el protocolo

orientado a conexión resulta muy complejo

Ej.: TCP, TP4 (OSI)

Servicio no confiable:

No orientado a conexión (CLNS).

Ej.: UDP, TP0 (OSI)

Page 4: Clase 04 - Protocolos de Transporte

Modelo TCP/IP

4

Aplicación

TCPUDP

IPIEEE 802.3

Red FR

Frame

Segmento (PDU)

Mensaje (APDU)

IPIEEE 802.3

IPFrame Relay

IPIEEE 802.3

Aplicación

TCPUDP

IPIEEE 802.3

Datagrama Datagrama

EthernetEthernet

A

B

C

A B CDatagrama Datagrama

Mensaje a Y

XY

Page 5: Clase 04 - Protocolos de Transporte

32 bits

Especificación del protocolo de transporte

Versión Lon. Cab. DS (DiffServ) Longitud Total

Identificación Res. DF MF Desplazam. de Fragmento

Tiempo de vida (TTL) Protocolo Checksum

Dirección de origen

Dirección de destino

Opciones (de 0 a 40 octetos)

Valor Protocolo1 ICMP

4 IP

6 TCP

17 UDP

89 OSPF

Algunos ejemplos de los valores que puede tener el campo ‘protocolo’ en un datagrama IP

Cabecera del datagrama IPv4

Page 6: Clase 04 - Protocolos de Transporte

Funciones de TCP

6

Principal función:

secuenciamiento seguro en redes no homogéneas

Establecer y terminar conexiones

Gestionar los buffers y ejercer control de flujo de forma eficiente

Multiplexar el nivel de aplicación (puerto) e intercambiar datos con las

aplicaciones

Controlar errores, retransmitir segmentos perdidos o erróneos y

eliminar duplicados

Efectuar control de congestion

Page 7: Clase 04 - Protocolos de Transporte

Servicio orientado a conexión

7

Los servicios orientados a conexión requieren un procedimiento

explícito de establecimiento y terminación de la comunicación.

Para describir los servicios orientados a conexión se utiliza el modelo

cliente/servidor:

Cliente: el que inicia la conexión

Servidor: el que es invitado a conectar

Una conexión puede terminarse tanto por iniciativa del cliente como

del servidor.

Page 8: Clase 04 - Protocolos de Transporte

Modelo cliente/servidor

8

TCP es un protocolo orientado a conexión.

No hay relaciones maestro/esclavo. Las aplicaciones, sin embargo, utilizan un modelo cliente/servidor en las comunicaciones.

Un servidor es una aplicación que ofrece un servicio a usuarios de Internet

Un cliente es el que pide ese servicio.

Una aplicación consta de una parte de servidor y una de cliente, que se pueden ejecutar en el mismo o en diferentes sistemas.

Page 9: Clase 04 - Protocolos de Transporte

Modelo cliente servidor en la pila TCP/IP

9

Cliente Servidor

Petición de serviciosPuerto bien conocido

Respuesta Puerto bien conocido

TCP/IP TCP/IP

Cliente

TCP/IP

Servidor

TCP/IP

Puerto del cliente

(efímero)

Proceso de una petición de servicio en una aplicación

Puerto del cliente

(efímero)

Los puertos bien conocidos son

asignados por el IANA 0-1023

Puertos del cliente1024 -65535

Puerto: numero de 16 bits que identifica el

protocolo de aplicación

Page 10: Clase 04 - Protocolos de Transporte

Zócalos (socket)

10

Un zócalo es un tipo especial de descriptor de archivo que un proceso usa para solicitar servicios de red al sistema operativo.

Una dirección de zócalos es conjunto de tres elementos: {protocolo, dirección local, proceso local }

En la pila TCP/IP, por ejemplo:{tcp, 193.44.234.3, 12345}

Una conversación es el enlace de comunicaciones entre dos procesos.

Los puertos se identifican por un número entero de 16 bits (rango de 0 a 65535)

Los puertos 0 a 1023 están reservados para los servidores que ofrecen servicios

‘bien conocidos’ en el nivel de aplicación: ej puerto 80 → servicio web (HTTP)

Page 11: Clase 04 - Protocolos de Transporte

Conexión TCP

11

Una asociación (conexión) es conjunto de cinco elementos que especifica completamente los dos procesos comprendidos en una conexión:

{proto., dir. local, proceso local, dir. dest., proceso dest.}

En la pila TCP/IP, por ejemplo:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

SOCK_STREAM - Servicio orientado a la conexión: TCP

SOCK_DGRAM - Servicio no orientado a la conexión: UDP

Page 12: Clase 04 - Protocolos de Transporte

12

Aplicación

Transporte

Red

Enlace

Física

Host 1 Host 2

NSAP NSAP

Cliente Servidor

TSAP TSAP

TSAP y NSAP de una conexión

200.7.135.22 200.7.1.11

200.7.1.11:80 (TCP)

200.7.135.22:8000 (TCP)

Page 13: Clase 04 - Protocolos de Transporte

13

El socket es la conexión entre el proceso de aplicación y TCP.El desarrollador de aplicaciones tiene el control de todo en el lado de la capa de aplicación del socket, sin embargo, tiene poco control de la parte de capa de transporte.En la mayoría de los casos, el desarrollador de aplicaciones tiene la capacidad de fijar los parámetros de TCP. p.e. tamaño máximo del búfer y tamaño máximo de segmento.

TCP con buffers y variables

TCP con buffers y variables

Proceso

Controlado por El desarrolladorDe la aplicación

Controlado por el

sistema operativo

Controlado por el sistema operativo

Controlado por El desarrolladorDe la aplicación

socket socket

Host Host

Internet Proceso

Page 14: Clase 04 - Protocolos de Transporte

Modelo Cliente Servidor – Primitivas de socket

14

AP cliente

RB SB

Entidad TCP

AP servidor

RB SB

Entidad TCP

Procesos/protocolos de aplicación

Núcleo del sistema operativo

Interfaz IP

Primitivas de socket

Segmentos TCP

Primitivas de socket

Segmentos TCP

Conexión lógica dúplex

Internet

TCP + IP

requerimiento respuesta Buffer interno TCP

SB/RB = buffers de envio/recepción de zocket

PDU TCP

Page 15: Clase 04 - Protocolos de Transporte

Proceso de un servicio

15

Negocia con el sistema operativo la obtención del permiso para utilizar la ID del puerto TCP/UDP reservada para el servicio solicitado.

Obtenido el permiso entra en un ciclo interminable que incluye tres pasos:

1. Espera que el datagrama llegue al puerto del servicio

2. Invierte las direcciones destino y origen (IP e identificadores

TCP/UDP)

3. Devuelve el datagrama al emisor original

Page 16: Clase 04 - Protocolos de Transporte

Primitivas para operar sockets TCP

Operación Significado

socket Crea un socketbind Vincula una direcciónlisten Se indican que se esperan conexionesaccept Espera hasta que se establece una conexiónconnect Intenta establece una conexiónSend, write Envía datosreceive, read Recibe datosclose Cierra la conexiónsendto Envio de un datagramarecvfrom Recepción de un datagrama

16

Page 17: Clase 04 - Protocolos de Transporte

Funcionamiento de los servidores

17

El programa servidor maestro ejecuta lo siguiente:

Abre el puerto. Bien conocido del servicio

Espera al cliente. Queda en un ciclo infinito esperando para dar el servicio

Elije un puerto. Si es necesario ubica un nuevo puerto para dar el servicio.

Inicia el esclavo. Para manejar la petición que termina cuando lo procesa y no espera nuevos clientes

Continua. Vuelve al paso de espera aceptando nuevas peticiones.

Page 18: Clase 04 - Protocolos de Transporte

18

Inactivo

Pendiente de conexión

pasiva

Pendiente de conexión

activa

Conexión establecida

Inactivo

Pendiente desconexión

pasiva

Pendiente desconexión

activa

ServidorClientePrimitiva Connect

ejecutadaTPDU de conexión

recibida

Primitiva Connect ejecutada

TPDU de conexión recibida

TPDU de desconexión

recibida

Primitiva Disconnect ejecutada

Primitiva Disconnect ejecutada

TPDU de desconexión recibida

Evolución de estados en una conexión/desconexión

Page 19: Clase 04 - Protocolos de Transporte

Tipos de servidores

19

Iterativos

Concurrentes

Con estado ( stateful )

Sin estado ( stateless)

Sin conexión Con conexión

Sin conexión Con conexión

Típico de servicios orientados a la conexiónEl servidor mantiene información de los clientes entre sucesivas invocaciones de los servicios por parte de ellos

El servidor no mantiene ninguna información entre invocaciones sucesivas de un mismo cliente

Page 20: Clase 04 - Protocolos de Transporte

Funcionamiento del protocolo TCP

20

El protocolo TCP ofrece el servicio de transporte orientado a conexión (CONS) en Internet.

Está diseñado para ofrecer un transporte confiable sobre un servicio no confiable del nivel de red (el que le suministra IP).

Las TPDUs de TCP se llaman segmentos.

El TCP actual se especificó en 1981 en el RFC 793 y sigue plenamente vigente.

Page 21: Clase 04 - Protocolos de Transporte

El encabezado TCP

Puerto de origen Puerto de destino

Número de secuencia

Número de acuse de recibo

Long. cab.

Reserv. 4 bits

Flags 8 bits Tamaño de ventana

checksum Puntero de datos urgentes

Opciones Relleno

21

Flags: CWR: Congestion Window ReducedECE: ECN Echo (ECN=Explicit Congestion Notification) URG: el segmento contiene datos urgentesACK: el campo número de acuse de recibo tiene sentidoPSH: el segmento contiene datos ‘Pushed’RST: ha habido algún error y la conexión debe cerrarseSYN: indica el inicio de una conexiónFIN: indica el final de una conexión

20bytes

32 bits

Page 22: Clase 04 - Protocolos de Transporte

TCP - Multiplexación

22

Proceso 1 Proceso 2

Puerto x

TCP: demultiplexor de puertos

IP

Puerto y

Proceso 1 Proceso 2

TCP: demultiplexor de puertos

IP

Transmisión de datagramas no

confiables

Conexión TCP confiable

Puerto x Puerto y

conexión

sockets

Dirección de red

Permite que varios procesos de un mismo host utilicen simultáneamente el servicio que ofrece TCP

La multiplexación se realiza mediante el puerto (origen o destino) que puede valer de 0 a 65535.

Page 23: Clase 04 - Protocolos de Transporte

Conexión TCP10.0.1.25:80-10.0.2.47:1038

Puerto 1038

La PC ejecuta el programa IE

Socket: 10.0.2.47:1038

Conexión de un cliente a un servidor web

{TCP, 10.0.1.25,80,10.0.2.47,1038}

IP 10.0.2.47IP 10.0.1.25

Puerto 80

Socket 10.0.1.25:80(rojo = ‘LISTEN’)

Servidor Web

Comunicación entre dos socketsAsociación (conexión)

Cliente

Page 24: Clase 04 - Protocolos de Transporte

Mensaje UDP10.0.1.25:21-10.0.2.47:1038

Puerto 1038

La PC ejecuta DNS cliente

Socket: 10.0.2.47:1038

Consulta de un cliente a un servidor DNS

{TCP, 10.0.1.25,53,10.0.2.47,1038}

IP 10.0.2.47IP 10.0.1.25

Puerto 21

Socket 10.0.1.25:53(rojo = ‘LISTEN’)

DNS

Servidor iterativo

Cliente

petición

respuesta

Page 25: Clase 04 - Protocolos de Transporte

Conexión TCP10.0.1.25.80-10.0.2.47:1038

Puerto 1038

La PC ejecuta telnet cliente

Socket: 10.0.2.47:1038

Conexión de un cliente a un servidor telnet

{TCP, 10.0.1.25,21,10.0.2.47,1038}

IP 10.0.2.47IP 10.0.1.25

Puerto 21

Socket 10.0.1.25:21(rojo = ‘LISTEN’)

telnet

Servidor concurrente

Cliente

peticiónPuerto

21fork

Page 26: Clase 04 - Protocolos de Transporte

26

Cliente IP 200.7.1.202

Servidor IP 200.7.1.25

Cliente IP 158.42.3.47

Socket: 200.7.1.25.23

Socket: 200.7.1.202.1038

Socket: 158.42.3.47.1038

Dos conexiones TCP de clientes con diferentes direcciones IP

Port23

Port 1038

Port 1038

A diferencia de los servidores, los clientes usan números de puerto elegidos

arbitrariamente por el sistema operativo, pero siempre con valores superiores al

1023, para no coincidir con los servidores que pueda haber en ese host

Page 27: Clase 04 - Protocolos de Transporte

Puertos “bien conocidos” y efímeros

Servicio Puerto TCP UDPDayTime 13 X X

FTP 21 X

SSH 22 X

TelNet 23 X

SMTP 25 X

Domain (DNS) 53 X X

BOOTP 67 X

HTTP 80 X

POP3 110 X

NTP 123 X

SNMP 161 X

HTTPS 443 X

Sistema operativo

Puertos efímeros

Microsoft Windows 1024 – 4999

Linux Kernel 2.6 1024 – 4999

FreeBSD 1024 – 5000

NetBSD 49152 – 65535

Solaris 32768 – 65535

AIX 32768 – 65535

OpenBSD 1024 - 65535

Page 28: Clase 04 - Protocolos de Transporte

28

Un puerto es ____________•Un número que identifica un proceso en un cliente•Un número que identifica un proceso en un servidor•Un número de 16 bits empleado por los hosts para identificar a que protocolo de nivel superioro programa deben entregar los mensajes recibidos•Todos los anteriores

Elija todas las opciones que identifican al protocolo TCP•Es un protocolo orientado a conexión•Reensambla los mensajes en la estación de destino•Reenvía los mensajes no recibidos•Es un protocolo poco confiable

Un zócalo (socket) tiene como parámetros•{protocolo, dirección IP, proceso}•{dirección IP, proceso, dirección IP, proceso}•{dirección TCP, protocolo, dirección TCP, proceso}•{dirección UDP, protocolo, dirección UDP, proceso}

indique todas las opciones que representen una función de TCP•Añadir confiabilidad•Establecer una conexión punto a punto•Control de flujo•Conmutación y ruteo

Page 29: Clase 04 - Protocolos de Transporte

29

El número de ACK contiene•La cantidad de paquetes recibidos•El valor del tamaño máximo de la ventana•El siguiente número de secuencia que espera recibir del otro punto•El numero de secuencia de su envío

TCP provee un servicio de conexión de tipo•Semiduplex•Full duplex•De secuenciamiento•Multiplexado

Cuales de las siguientes funciones no son implementadas por la capa de transporte•Conexión confiable•Conmutación de rutas•Control de flujo•Secuenciamiento•Determinación de dirección MAC de destino

¿Cuál es el propósito de los números de puerto?•Los sistemas de origen utilizan estos números para mantener organizada la sesión y seleccionar la aplicación adecuada.•Llevan un control de las distintas conversaciones que atraviesan la red al mismo tiempo•Los sistemas finales los utilizan para asignar dinámicamente usuarios finales a una determinada sesión, según el uso que hagan de la aplicación•Los sistemas de origen generan estos números para predecir las direcciones de destino.

Page 30: Clase 04 - Protocolos de Transporte

30

Con el siguiente esquema del encabezado de TCP

DefinaPuerto de origen_______________________________________Puerto de destino______________________________________Número de secuencia___________________________________Número de ACK_______________________________________HLEN_______________________________________________Ventana______________________________________________Flags _______________________________________________

Puerto de origen Puerto de destino

Número de secuencia

Número de acuse de recibo

Long. cab.

Reserv. 4 bits

Flags 8 bits Tamaño de ventana

checksum Puntero de datos urgentes

Opciones Relleno

Page 31: Clase 04 - Protocolos de Transporte

Conexión en TCP

31

Los dos primeros segmentos de la conexión se identifican con el flagSYN.

El número de secuencia es un campo de 32 bits que cuenta bytes en módulo 232 (el contador da la vuelta cuando llega al valor máximo).

El número de secuencia no empieza normalmente en 0, sino en un valor denominado ISN (Initial Sequence Number) elegido al azar; el ISN sirve de ‘PIN’ en el saludo a tres vías para asegurar la autenticidad de la comunicación.

Una vez establecida la comunicación el ‘seq’ y el ‘ack’ sirven para contar los bytes transmitidos y recibidos.

Page 32: Clase 04 - Protocolos de Transporte

Flags de conexión/desconexión de TCP

Los flags de la cabecera TCP que tienen que ver con el proceso de conexión/desconexión son los siguientes:

SYN (Synchronize): este flag está puesto siempre en los dos primeros segmentos que se intercambian en cualquier conexión TCP, y sirve para indicar que se trata de los segmentos de establecimiento de la conexión.

FIN (Finish): este flag está puesto siempre en los dos segmentos TCP que indican el final de la conexión.

RST (Reset): este flag se utiliza para indicar que la conexión debe interrumpirse inmediatamente debido a que se ha detectado alguna anomalía importante, o porque la aplicación ha pedido abortar la conexión. Este flag no debería aparece nunca en una conexión normal.

Page 33: Clase 04 - Protocolos de Transporte

Flag de sincronismo - SYN

0 16 31

Source port Destination port

Sequence number

Acknowlegedgement

Data offset Reserved

U AR CG K

P RS SH T

S FY IN N

window

cheksum Urgent pointer

Options … padding

Data bytes

33

Bit de sincronismo

Page 34: Clase 04 - Protocolos de Transporte

TCP Cliente10.0.0.2:1304

TCP Servidor10.0.0.1:80

Ti

empo

Visión simplificada de una sesión TCP típica

CLOSEDSYN-SENT

LISTEN

SYN-RECEIVED

ESTABLISHED

ESTABLISHED

FIN-WAIT-1

FIN-WAIT-2

TIME-WAIT

CLOSED

CLOSE-WAIT

LAST-ACK

LISTEN1-4

min.

Conexión(3 mensajes)

Desconexión(3 ó 4 mensajes)

Intercambio de datosSi la aplicación no tiene datos para enviar y responde con rapidez este mensaje no se envía

Page 35: Clase 04 - Protocolos de Transporte

Conexión por ‘Saludo a tres vías’

El mecanismo de conexión utilizado por TCP se basa en el intercambio de tres mensajes, motivo por el cual se le conoce como saludo a tres vías o ‘three way handshake’:

El cliente envía al servidor una invitación a conectar. Decimos

que realiza un ‘active open’

Segmento 1:(cliente)

Segmento 2:(servidor)

Segmento 3:(cliente)

Cuando recibe la invitación el servidor devuelve una respuesta al cliente aceptando.

Efectúa un ‘passive open’

Al recibir la respuesta el cliente considera establecida la conexión y envía un tercer mensaje

en el que acusa recibo del anterior

El servidor considera establecida la conexióncuando recibe este tercer mensaje

Page 36: Clase 04 - Protocolos de Transporte

Saludo de tres vías/abrir conexión

36

Enviar SYNSeq=x

Recibir SYN(seq=y,ACK=x+1)

Recibir ACK(ACK=y+1)

Recibir SYN(seq=x)

Enviar SYN(Seq=y,ACK=x+1)

Recibir ACK(ACK=y+1)

A B

Puerto pasivo(espera un requerimientoactivo)CLOSED LISTEN

ESTABLISHED

ESTABLISHED

SYN-SENT(ISN 100) SYN-RECEIVED

(ISN 300)

Ti

empo

Page 37: Clase 04 - Protocolos de Transporte

Identificadores de conexión (ISN)

Cuando va a establecer una conexión TCP elige un identificador para dicha conexión, llamado ISN (Initial Sequence Number).

El ISN evita el riesgo de que un duplicado retrasado de una conexión anterior provoque una conexión espuria

En una conexión TCP siempre hay dos, y sólo dos, TCPs involucrados.

Cada TCP elige independientemente el ISN que utilizará para esa conexión, por tanto siempre hay dos ISN asociados, uno por cada ‘lado’ de la conexión.

Elección del ISN. Según el RFC 793 (que especifica TCP) el ISN debe ser un entero de 32 bits sin signo que se incremente en 1 cada 4 microsegundos.

En la RFC 1948 se describe como seleccionar el ISN para prevenir ataque

Page 38: Clase 04 - Protocolos de Transporte

Desconexión

38

Puede ser de dos tipos:

Simétrica: la conexión se considera formada por dos circuitos simplex

y cada host solo puede cortar uno (aquel en el que él emite datos). El

cierre de un sentido se interpreta como una ‘invitación’ a cerrar el

otro.

Asimétrica: desconexión unilateral (un host la termina en ambos

sentidos sin esperar a recibir confirmación del otro). Puede provocar

pérdida de información.

Page 39: Clase 04 - Protocolos de Transporte

39

TCP A TCP B

Desconexión a tres vías, caso normal

ESTABLISHED

FIN-WAIT-1

ESTABLISHED

CLOSE-WAIT

FIN-WAIT-2LAST-ACK

TIME-WAIT

CLOSED

CLOSED

2MSL

MSL: Maximum Segment Lifetime (normalmente 2 minutos)

Page 40: Clase 04 - Protocolos de Transporte

40

Host A Host B

Tiem

po

DR: Disconnect Request

Desconexión asimétrica

Conectado Conectado

NoConectado

NoConectado

Datos perdidos

A B

Page 41: Clase 04 - Protocolos de Transporte

Terminar una conexión TCP - RST

0 16 31

Source port Destination port

Sequence number

Acknowlegedgement

Data offset Reserved

U AR CG K

P RS SH T

S FY IN N

window

cheksum Urgent pointer

Options … padding

Data bytes

41

Bit de desconexion

Page 42: Clase 04 - Protocolos de Transporte

Servicios en puertos por encima del 1023

Cuando se quiere que un usuario sin privilegios pueda activar un servicio se

debe usar un número de puerto por encima del 1023.

Los servicios que se consideran ‘no privilegiados’ tienen números de puerto

bien conocidos por encima del 1023, para que cualquier usuario los pueda

activar

Ejemplo: el protocolo SIP (telefonía IP) usa el puerto 5060 para establecer

la conexión. Una vez establecida ésta el flujo de audio de la llamada usa un

número de puerto dinámico (normalmente UDP)

Cualquier usuario sin privilegios puede poner en marcha un servidor web

en un host si usa un puerto superior al 1023

Page 43: Clase 04 - Protocolos de Transporte

Ejemplo: llamada SIP entre dos usuarios

Mafalda200.7.12.24

Manolito170.210.13.26

Puerto 5060(Suena el teléfono

de Manolito)

Puerto 5060

Puerto 38060

Puerto 48753

Audio

Audio

Puerto 5060

Puerto asignado por el sistema a la llamada de Mafalda

Puerto asignado por el sistema a la llamada de Manolito

Page 44: Clase 04 - Protocolos de Transporte

Conexión TCP10.0.1.25:80-10.0.2.47:1038

Puerto 1038

La PC ejecuta un navegador

Socket: 10.0.2.47:1038

Casos de estudio: Conexión de un cliente a un servidor web

IP 10.0.2.47IP 10.0.1.25

Puerto 80

Socket 10.0.1.25:80(rojo = ‘LISTEN’)

Servidor Web

Una conexión, dos sockets

Page 45: Clase 04 - Protocolos de Transporte

Servidor Web IP 10.0.3.47

Puerto 1038

La pc ejecuta navegador hacia

10.0.1.25

Socket 10.0.3.47:80

Socket: 10.0.2.47:1038

Casos de estudio: Conexión simultánea de una PC a dos servidores web

Puerto 1039

Socket: 10.0.2.47:1039

IP 10.0.2.47

Servidor Web IP 10.0.1.25

Puerto 80

Puerto 80

Socket 10.0.1.25:80

La PC ejecuta otro navegador hacia

10.0.3.47

Dos conexiones, cuatro sockets

Page 46: Clase 04 - Protocolos de Transporte

IP 10.0.1.50

Servidor Web IP 10.0.1.25

Puerto80

Puerto 1038

Puerto 1038

IP 10.0.2.47

Este socket tiene dos conexiones simultáneas

Casos de estudio: Conexión desde dos PC a un mismo servidor web

Socket 10.0.1.25:80

Socket: 10.0.1.50:1038

Socket: 10.0.2.47:1038

La PC ejecuta navegador hacia

10.0.1.25

La PC ejecuta navegador hacia

10.0.1.25

Las dos conexiones son diferentes porque

difieren en la dirección IP del

cliente

Dos conexiones, tres sockets

Page 47: Clase 04 - Protocolos de Transporte

Conexión TCP10.0.1.25:80-10.0.2.47:1038 Puerto

1038

La PC ejecuta navegador hacia

10.0.1.25

Socket: 10.0.2.47:1038

Dos conexiones desde una PC a un servidor web y uno POP3, ambos en el mismo host

IP 10.0.2.47

IP 10.0.1.25

Puerto 80

Socket 10.0.1.25:80

Servidor Web y POP3

Puerto 1039

Puerto 110

Conexión TCP10.0.1.25:110-10.0.2.47:1039

Socket: 10.0.2.47:1039Socket 10.0.1.25.110

La PC ejecuta Outlook hacia 10.0.1.25

Dos conexiones, cuatro sockets

Page 48: Clase 04 - Protocolos de Transporte

Servidor Web IP 10.0.1.25

Puerto80

Puerto 1038

Conexión cruzada cliente-servidor web entre dos PC

Socket 10.0.1.25:80

Socket: 10.0.1.50:1038

Socket: 10.0.1.50:80

La PC ejecuta navegador hacia

10.0.1.25

Dos conexiones independientes que no comparten ningún socket

Conexión TCP10.0.1.25:80-10.0.1.50:1038

Puerto80

Puerto 1038

Servidor Web IP 10.0.1.50

Conexión TCP10.0.1.25:1038-10.0.1.50:80

Socket: 10.0.1.25:1038

La PC ejecuta navegador hacia

10.0.1.50

Dos conexiones, cuatro sockets

Page 49: Clase 04 - Protocolos de Transporte

Comando ‘netstat’ en un host

C:\>netstat -n

Conexiones activas

Proto Dirección local Dirección remota Estado

TCP 10.0.1.25:3719 10.0.1.60:21 ESTABLISHED

TCP 10.0.1.25:4111 10.0.1.50:110 TIME_WAIT

TCP 10.0.1.25:4113 10.0.1.50:110 TIME_WAIT

TCP 10.0.2.13:80 10.0.2.40:1056 ESTABLISHED

TCP 10.0.1.25:80 10.0.1.30:2312 ESTABLISHED

TCP *:80 *:* LISTEN

C:\>

IP local

IP remotaPuerto localPuerto remoto

Servidor web a la escucha en este host. Admite conexiones al puerto 80 por todas sus direcciones IP (*:80) desde cualquier dirección IP y puerto (*:*) Conexiones de clientes con este servidor webSesiones pendiente de cerrar de este host como cliente de correo de 10.0.1.50Conexión de este host como cliente ftp de 10.0.1.60

Si no se utiliza la opción ‘–n’ el programa netstat intenta convertir las direcciones IP y los puertos a nombres siempre que puede (por ejemplo pone ‘pop3’ en vez de 110)

Page 50: Clase 04 - Protocolos de Transporte

IP 10.0.2.40

IP 10.0.1.2510.0.2.13

Puerto80

Puerto 1056

Puerto 2312

IP 10.0.1.30

Conexiones del netstat anterior

PC conectada a 10.0.2.13

PC conectada a 10.0.1.25

Puerto110

Puerto21Puerto 3719

Puerto 4111

Puerto 4113

IP 10.0.1.50Servidor POP3

IP 10.0.1.60Servidor FTP

Cliente FTP conectado

con 10.0.1.60

Outlook (cliente POP3) conectado con 10.0.1.50. Conexiones en proceso

de cierre

Servidor Web

Page 51: Clase 04 - Protocolos de Transporte

Ejemplo de conexiones en una PC Windows

51

C:\Documents and Settings\hem>netstat -n

Conexiones activas

Proto Dirección local Dirección remota EstadoTCP 127.0.0.1:445 127.0.0.1:1565 ESTABLISHEDTCP 127.0.0.1:1109 127.0.0.1:1110 ESTABLISHEDTCP 127.0.0.1:1110 127.0.0.1:1109 ESTABLISHEDTCP 127.0.0.1:1354 127.0.0.1:1355 ESTABLISHEDTCP 127.0.0.1:1355 127.0.0.1:1354 ESTABLISHEDTCP 127.0.0.1:1565 127.0.0.1:445 ESTABLISHEDTCP 127.0.0.1:5226 127.0.0.1:1056 ESTABLISHEDTCP 170.210.128.140:1068 170.210.128.138:139 ESTABLISHEDTCP 170.210.128.140:1112 170.210.128.196:143 ESTABLISHEDTCP 170.210.128.140:1471 170.210.128.196:143 CLOSE_WAITTCP 170.210.128.140:1482 170.210.133.6:993 ESTABLISHEDTCP 170.210.128.140:1487 207.46.111.36:80 ESTABLISHEDTCP 170.210.128.140:1554 65.54.195.185:80 CLOSE_WAITTCP 170.210.128.140:1563 170.210.133.6:993 CLOSE_WAIT

C:\Documents and Settings\hem>

Port 139 tcp/udpNETBIOS Session Service. Uses netbios-ssn service.

Port 139 tcp God Message worm,Msinit

Port 143 tcp/udpInternet Message Access Protocol. Uses

imap service.

Port 993 tcp/udpimap4 protocol over TLS/SSL. Uses

imaps service

Port 80 tcp/udpWorld Wide Web HTTP. Uses

http service.

Puertos del cliente

Page 52: Clase 04 - Protocolos de Transporte

Opciones y extensiones de TCP

Intercambio de valores de MSS entre los dos comunicantes. Es la más

habitual

Otras opciones son:

Factor de escala, para ventanas de hasta 1 GB (RFC 1323). Mejora la

eficiencia en redes ‘LFN’ (Long, Fat pipe Network) con elevado valor

de BW*RTT

Repetición selectiva y acuse de recibo negativo (NAK) (RFC 1106).

También especialmente útil en LFNs.

Estas opciones se negocian en el segmento de inicio de la conexión (el

que lleva el bit SYN puesto)

Page 53: Clase 04 - Protocolos de Transporte

53

Aplicaciónorigen

TCPreceptor

TCPemisor

Aplicacióndestino

A criterio de la aplicación(sujeto a disponibilidad de buffer en TCP emisor)

A criterio dela aplicación

A criterio del TCP emisor(sujeto a disponibilidadde buffer en TCP receptory no congestión de la red)

Empuja

Empuja

Tira

Buffer Buffer

Intercambio de datos TCP Aplicación y TCP TCP

Page 54: Clase 04 - Protocolos de Transporte

54

Aplicaciónorigen

TCPreceptor

TCPemisor

Aplicacióndestino

Buffer Buffer

Intercambio de datos TCP Aplicación y TCP TCP

Escribe

Envía

Lee2048 Bytes1024 Bytes

1024 Bytes

512 B 512 B512 B 512 B

(MSS 512 Bytes)

Transferencia orientada a flujo de bytes

Page 55: Clase 04 - Protocolos de Transporte

Intercambio de datos: casos excepcionales

55

Datos ‘Pushed’ (bit PSH)

La aplicación pide al TCP emisor que envíe esos datos lo antes

posible. El TCP receptor los pondrá a disposición de la aplicación de

inmediato, para cuando ésta le pida datos. Ejemplo: telnet.

Datos Urgentes (bit URG y Urgent Offset)

Los datos se quieren entregar a la aplicación remota sin esperar a

que esta los pida. Ejemplo: abortar un programa con CTRL-C en una

sesión telnet

Page 56: Clase 04 - Protocolos de Transporte

Práctico

56

Describa los procesos iterativos y concurrentes. ¿Cuáles son las ventajas y desventajas de cada uno?

Defina aplicaciones (dos) que se adapten mejor a cada tipo de proceso. Justifique la elección.

Describa los conceptos de puerto y socket

Conecte su estación de trabajo con un servidor, por ejemplo servidor de web, y analice los puerto abiertos con el comando netstat

¿Con que comando se pueden averiguar las conexiones TCP establecidas en el host local?

Page 57: Clase 04 - Protocolos de Transporte

57

Diga cual de las siguientes afirmaciones es cierta referida a la elección del ISN (Initial Sequence Number) en el establecimiento de una conexión de TCP:

Siempre se utiliza el valor 0 Se puede utilizar cualquier valor (entre 0 y 232 - 1), pero cuando dos hosts

establecen una conexión han de ponerse de acuerdo y utilizar el mismo ISN Cada host elige un ISN ‘propio’ que utiliza en todas sus conexiones Cada host elige el ISN de forma independiente para cada conexión,

normalmente siguiendo un algoritmo pseudoaleatorio.

¿Para que utiliza el intercambio de señales de tres vías/conexión abierta TCP (handshake)?

Para garantizar que se podrán recuperar datos perdidos si se producen problemas más tarde.

Para determinar cuantos datos puede aceptar la estación receptora a la vez Para brindar un uso eficiente del ancho de banda por parte de los usuarios Para convertir las respuestas ping binarias en información en las capas

superiores

El número de ACK contiene La cantidad de paquetes recibidos El valor del tamaño máximo de la ventana El siguiente número de secuencia que espera recibir del otro punto El numero de secuencia de su envío

Page 58: Clase 04 - Protocolos de Transporte

Protocolo UDP

58

Es un protocolo de transporte que da un servicio sencillo, no orientado a

conexión y no confiable

Las TPDUs de UDP se denominan mensajes o datagramas UDP

UDP multiplexa los datos de las aplicaciones y efectúa opcionalmente

una comprobación de errores, pero NO realiza:

Control de flujo

Control de congestión

Retransmisión de datos perdidos

Conexión/desconexión

Page 59: Clase 04 - Protocolos de Transporte

59

Protocolo UDP

Se utiliza cuando:

El intercambio de mensajes es muy escaso, ej.:consultas al DNS

(servidor de nombres)

La aplicación es en tiempo real y no puede esperar los ACKs. Ej.:

videoconferencia, voz sobre IP.

Los mensajes se producen regularmente y no importa si se pierde

alguno. Ej: NTP, SNMP

El medio de transmisión es altamente confiable y sin congestión

(LANs). Ej: NFS

Se envía tráfico broadcast/multicast

Page 60: Clase 04 - Protocolos de Transporte

60

Puerto de origen Puerto de destino

Longitud datagrama UDP Checksum

El encabezado de UDP

32 bits

Cabecera

Para el cálculo del checksum se crea una pseudocabecera. Lo que permite a UDP comprobar que IP no se ha equivocado en la entrega del datagrama. Esto es opcional, un valor 0 en el campo checksum indica que no se calcula.

El valor 100012 = 1710 en la cabecera IP indica que el protocolo de transporte es UDP

Page 61: Clase 04 - Protocolos de Transporte

Multiplexación de UDP

61

Puerto 1 Puerto 2 Puerto 3

UDP demultiplexación

basado en puertos

Capa de red IP

UDP aporta capacidad de multiplexación al protocolo de la capa red IP

Es importante que este determinado para que la aplicación sepa donde conectarse

Page 62: Clase 04 - Protocolos de Transporte

La multiplexación se realiza mediante el puerto (origen o destino) que puede valer de 0 a 65535.

La combinación de una dirección IP y un puerto identifica un ‘socket’ (origen o destino de los datagramas UDP):

170.210.135.22:1038

Los puertos 0 a 1023 están reservados para servidores ‘bien conocidos’ (‘well known ports’). Normalmente se necesitan privilegios de superusuario para poder utilizar los puertos por debajo del 1024.

Algunos servicios utilizan puertos bien conocidos por encima del 1023 para que pueda acceder un usuario sin privilegios. Ejemplo: telefonía IP.

Multiplexación de UDP

Dirección IP Puerto

Socket

Page 63: Clase 04 - Protocolos de Transporte

Cliente IP 10.0.1.50

Servidor DaytimeIP 170.210.1.25

Port13

Port 1038

Socket: 170.210.1.25:13 Socket: 10.0.1.50:1038

Intercambio de datagramas UDP entre un cliente y un servidor

Mensaje UDPp.o. 1038, p.d. 13

Mensaje UDPp.o. 13, p.d. 1038

En UDP la aplicación tiene un control completo de los envíos.

Cada vez que un programa del nivel de aplicación envía algo (p. ej.

invocando la función ‘sendto’ en sockets) el host manda un datagrama al

puerto de destino especificado.

Si el datagrama creado es demasiado grande para la MTU de la interfaz por

la que va a salir, el nivel de red (IP) se encarga de fragmentarlo

Page 64: Clase 04 - Protocolos de Transporte

64

Función TCP UDP

Transporte Sí Sí

Multiplexación Sí Sí

Detección de errores Sí Opcional(*)

Corrección de errores Sí No

Control de flujo Sí No

Control de congestión Sí No

Establecimiento/ terminación de conexión

Sí No

(*) Obligatorio en IPv6

Comparación Protocolos de transporte

Page 65: Clase 04 - Protocolos de Transporte

Practico 1

65

TCP provee un servicio de conexión de tipo…. Semiduplex Full duplex De secuenciamiento Multiplexado

Cuales de las siguientes funciones no son implementadas por la capa de transporte Conexión confiable Conmutación de rutas Control de flujo Secuenciamiento Determinación de dirección MAC de destino

Que mecanismo utiliza la capa de transporte para detener la recepción de paquetes cuando el buffer de recepción detecta overflowing Segmentación Paquetes Reconocimiento (ACK) Control de flujo PDU

Page 66: Clase 04 - Protocolos de Transporte

Practico 1

66

Responda las siguientes preguntas:

1: El tamaño máximo de un segmento TCP es 65.515 bytes. ¿Podría explicar de donde viene ese valor?

2: ¿Debe TCP preocuparse de reordenar los fragmentos de un datagrama?

3: Sesión TCP con 100 Mb/s de BW y 20 ms de RTT. Calcular caudal máximo aprovechable.

4:¿Por que es necesario UDP? ¿Por qué un programa de usuario no puede acceder directamente a IP?

Page 67: Clase 04 - Protocolos de Transporte

67

Internet

Se quiere poner en el router una regla que impida el establecimiento de conexiones TCP desde fuera

Intranet

Práctico 2

Router filtro

Establezca los criterios de filtros para evitar que se establezcan conexiones desde Internet.

En los firewall se diseñan filtros que funcionan analizando los flag del encabezado TCP

Es posible hacer lo mismo con UDP?

Page 68: Clase 04 - Protocolos de Transporte

Práctico 3

68

1 - Una aplicación genera mensajes de 1540 bytes. El MTU del trayecto es de 800 bytes. Indique cuantos datagramas y bytes recibe el nivel de red en el host de destino

2- Se trata de hacer un programa que establezca una conexión TCP al puerto 13 (servicio daytime) de un servidor. La dirección IP se especificará en tiempo de ejecución.

Cuando la conexión se establece el servidor devuelve una cadena de caracteres que contiene la fecha y hora, y cierra la conexión

El cliente debe leer la cadena recibida y mostrarla por pantalla

Dibuje el diagrama de tiempo de la secuencia de mensajes

Page 69: Clase 04 - Protocolos de Transporte

TCP ClienteTCP Servidor

(daytime, puerto 13)

Ti

empo

Conexión TCP al puerto 13 (daytime)

CLOSED

SYN-SENT

LISTEN

SYN-RECEIVED

ESTABLISHED

ESTABLISHED

CLOSE-WAIT

LAST-ACK

CLOSED

FIN-WAIT-1

TIME-WAIT

LISTEN

2- 4min.

Conexión

Desconexión

Intercambio de datos

(fecha-hora)

....

.

Page 70: Clase 04 - Protocolos de Transporte

Práctico 4: Programa cliente UDP

El cliente envía un datagrama UDP al puerto 13 del servidor. A continuación se queda bloqueado durante un tiempo (por defecto un segundo) a la espera de respuesta

Si antes de agotar el tiempo se recibe la respuesta esta contendrá una cadena de caracteres con la fecha y hora.

El programa la muestra por pantalla y termina

Si no se recibe respuesta dentro del tiempo previsto indicamos ‘timeout’ y terminamos

Page 71: Clase 04 - Protocolos de Transporte

UDP ClienteUDP Servidor

(daytime, puerto 13)

Ti

empo

Intercambio de paquetes UDP al puerto 13

LISTEN

(fecha-hora)

bloqueo

Page 72: Clase 04 - Protocolos de Transporte

Práctico 7 identificación de conexiones TCP

Paso 1: en modo cmd ejecute netstat –a –f –p tcp (busque en el help

que hacen los argumentos del comando)

Paso 2: verifique todas las conexiones TCP y el estado de cada una de

ellas que tiene su equipo.

Paso 3: arrancar el servidor HTTPS hfs.exe (bajarlo de claroline)

Paso 4: Poner en marcha un cliente WEB:

Paso 5: verifique la conexión de los zockets de la aplicación que ha

corrido con mismo comando netstat

Que puerto escucha http? Que puerto utilizo la aplicación para establecer la conexión? Identifique otras conexiones

Page 73: Clase 04 - Protocolos de Transporte

Práctico 8 identificación de campos del header TCP

Paso 0: (opcional) arrancar el servidor HTTP hfs.exe Paso 1: Poner en marcha un cliente WEB Paso 2: Establecer la captura: Para ello, puede usar el programa

wireshark, El mecanismo sería el siguiente: · Ejecución del programa de captura de paquetes · Comienzo de la captura, es conveniente limitar el tráfico a aquel que

se realice con el servidor web que este utilizando. Paso 3: Acceda a la dirección http:// [serv web ]. Espere que la página

cargue totalmente. Paso 4: Detenga la captura y observe las capturas obtenidas.

Encuentre la secuencia de hand-shake Describa el proceso de conexión analizando los paquetes capturados Analice los paquetes transferidos

Cuantos paquetes ip utilizó? Hubo segmentación TCP? Analice todo el proceso de transferencia Como es la forma de terminación de la conexión?