Está en la página 1de 73

El Nivel de Transporte en Internet

Bibliografa: 1. Redes de Computadores en Internet, Fred Halsall 5ed. Cap 7.


2.

Comunicaciones y redes de Computadoras, Williams Stallings 6 ed cap 17 Internetworking with TCP/IP vol 1, Comer 5 ed. TCP/IP Tutorial and Technical Overview, Adolfo Rodriguez y otros. Ed IBM redbook 2001 (PDF)

3. 4.

Funciones del Nivel de Transporte


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

host).
Realiza la comunicacin de forma transparente al medio fsico. Usa

los servicios del nivel de red


Multiplexa trfico de diversas instancias (procesos) del nivel de

aplicacin
La unidad de transferencia de informacin a nivel de transporte es la

TPDU (Transport Protocol Data Unit)

Tipo de servicio del Nivel de Transporte


Servicio confiable: Sin prdidas ni datos duplicados. Para ello se utiliza un servicio orientado a conexin (CONS). Si el servicio de interconexin (IP) es no seguro, el protocolo

orientado a conexin resulta muy complejo


Ej.: TCP, TP4 (OSI) Servicio no confiable: No orientado a conexin (CLNS). Ej.: UDP, TP0 (OSI)
3

Modelo TCP/IP
C A X
Mensaje a Y

Aplicacin TCP UDP IP


IEEE 802.3 Datagrama

Mensaje (APDU) Segmento (PDU) A IP


IEEE 802.3 Datagrama

Aplicacin C IP Frame
IEEE 802.3

B IP
Frame Relay

Datagrama

Datagrama

TCP UDP IP
IEEE 802.3

Ethernet

Red FR

Ethernet

Especificacin del protocolo de transporte


Cabecera del datagrama IPv4

32 bits
Versin Lon. Cab. DS (DiffServ) Res. DF MF Protocolo Direccin de origen Direccin de destino Opciones (de 0 a 40 octetos) Longitud Total Desplazam. de Fragmento Checksum

Identificacin Tiempo de vida (TTL)

Valor 1 4 6 17 89

Protocolo ICMP IP TCP UDP OSPF

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

Funciones de TCP
Principal funcin: secuenciamiento seguro en redes no homogneas Establecer y terminar conexiones Gestionar los buffers y ejercer control de flujo de forma eficiente Multiplexar el nivel de aplicacin (puerto) e intercambiar datos con las

aplicaciones
Controlar errores, retransmitir segmentos perdidos o errneos y

eliminar duplicados
Efectuar control de congestion
6

Servicio orientado a conexin


Los servicios orientados a conexin requieren un procedimiento

explcito de establecimiento y terminacin de la comunicacin.


Para describir los servicios orientados a conexin se utiliza el modelo

cliente/servidor:
Cliente: el que inicia la conexin Servidor: el que es invitado a conectar Una conexin puede terminarse tanto por iniciativa del cliente como

del servidor.

Modelo cliente/servidor
TCP es un protocolo orientado a conexin. No hay relaciones maestro/esclavo. Las aplicaciones, sin embargo,

utilizan un modelo cliente/servidor en las comunicaciones.


Un servidor es una aplicacin que ofrece un servicio a usuarios de

Internet
Un cliente es el que pide ese servicio. Una aplicacin consta de una parte de servidor y una de cliente, que se

pueden ejecutar en el mismo o en diferentes sistemas.

Modelo cliente servidor en la pila TCP/IP


TCP/IP Puerto del cliente (efmero)
Cliente

Peticin de servicios

TCP/IP
Servidor

Puerto bien conocido

Puertos del cliente 1024 -65535

Puerto: numero de 16 bits que identifica el protocolo de aplicacin

Los puertos bien conocidos son asignados por el IANA 0-1023

TCP/IP Puerto del cliente (efmero)


Cliente

Respuesta Proceso de una peticin de servicio en una aplicacin

TCP/IP
Servidor

Puerto bien conocido

Zcalos (socket)
Un zcalo es un tipo especial de descriptor de archivo que un proceso

usa para solicitar servicios de red al sistema operativo.


Una direccin de zcalos es conjunto de tres elementos:

{protocolo, direccin local, proceso local } En la pila TCP/IP, por ejemplo: {tcp, 193.44.234.3, 12345}
Una conversacin es el enlace de comunicaciones entre dos procesos.

Los puertos se identifican por un nmero entero de 16 bits (rango de 0 a 65535) Los puertos 0 a 1023 estn reservados para los servidores que ofrecen servicios bien conocidos en el nivel de aplicacin: ej puerto 80 servicio web (HTTP)
10

Conexin TCP
Una asociacin (conexin) es conjunto de cinco elementos que especifica

completamente los dos procesos comprendidos en una conexin: {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 SOCK_DGRAM

- Servicio orientado a la conexin: TCP - Servicio no orientado a la conexin: UDP

11

TSAP y NSAP de una conexin


Cliente

Aplicacin

Servidor

200.7.135.22:8000 (TCP)

TSAP

Transporte

200.7.1.11:80 (TCP)

TSAP

200.7.135.22

200.7.1.11

NSAP

Red

NSAP

Enlace

Fsica
12

Host 1

Host 2

El socket es la conexin entre el proceso de aplicacin y TCP. El desarrollador de aplicaciones tiene el control de todo en el lado de la capa de aplicacin del socket, sin embargo, tiene poco control de la parte de capa de transporte. En la mayora de los casos, el desarrollador de aplicaciones tiene la capacidad de fijar los parmetros de TCP. p.e. tamao mximo del bfer y tamao mximo de segmento. socket TCP con buffers y variables socket TCP con buffers y variables

Proceso

Internet

Proceso

Controlado por El desarrollador De la aplicacin

Controlado por el sistema operativo

Controlado por El desarrollador De la aplicacin

Controlado por el sistema operativo

13

Host

Host

Modelo Cliente Servidor Primitivas de socket


AP cliente RB SB Procesos/protocolos de aplicacin Ncleo del sistema operativo PDU TCP AP servidor RB SB

Primitivas de socket

Primitivas de socket

Entidad TCP Segmentos TCP

Entidad TCP Segmentos TCP

Interfaz IP Conexin lgica dplex TCP + IP Internet

requerimiento

respuesta

Buffer interno TCP

SB/RB = buffers de envio/recepcin de zocket


14

Proceso de un servicio

Negocia con el sistema operativo la obtencin 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

15

Primitivas para operar sockets TCP


Operacin Significado

socket bind listen accept connect Send, write receive, read close sendto recvfrom

Crea un socket Vincula una direccin Se indican que se esperan conexiones Espera hasta que se establece una conexin Intenta establece una conexin Enva datos Recibe datos Cierra la conexin Envio de un datagrama Recepcin de un datagrama

16

Funcionamiento de los servidores


El programa servidor maestro ejecuta lo siguiente:
Abre el puerto. Espera al cliente.

Bien conocido del servicio Queda en un ciclo infinito esperando para dar el servicio Si es necesario ubica un nuevo puerto para dar el servicio. Para manejar la peticin que termina cuando lo procesa y no espera nuevos clientes Vuelve al paso de espera aceptando nuevas peticiones.

Elije un puerto.

Inicia el esclavo.

Continua.

17

Evolucin de estados en una conexin/desconexin


Cliente
Primitiva Connect ejecutada

Inactivo

Servidor
TPDU de conexin recibida

Pendiente de conexin activa


TPDU de conexin recibida

Pendiente de conexin pasiva Conexin establecida


Primitiva Connect ejecutada

Primitiva Disconnect ejecutada

TPDU de desconexin recibida

Pendiente desconexin activa


TPDU de 18 desconexin recibida

Pendiente desconexin pasiva Inactivo


Primitiva Disconnect ejecutada

Tipos de servidores
Iterativos Sin conexin Con conexin Sin conexin Con conexin

Concurrentes

Con estado ( stateful )

Tpico de servicios orientados a la conexin El servidor mantiene informacin de los clientes entre sucesivas invocaciones de los servicios por parte de ellos

19

Sin estado ( stateless)

El servidor no mantiene ninguna informacin entre invocaciones sucesivas de un mismo cliente

Funcionamiento del protocolo TCP


El protocolo TCP ofrece el servicio de transporte orientado a

conexin (CONS) en Internet.


Est diseado 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.

20

El encabezado TCP
32 bits Puerto de origen Puerto de destino Nmero de secuencia 20 bytes Nmero de acuse de recibo Long. cab. Reserv. 4 bits checksum Opciones
Flags:

Flags 8 bits

Tamao de ventana Puntero de datos urgentes Relleno

21

CWR: ECE: URG: ACK: PSH: RST: SYN: FIN:

Congestion Window Reduced ECN Echo (ECN=Explicit Congestion Notification) el segmento contiene datos urgentes el campo nmero de acuse de recibo tiene sentido el segmento contiene datos Pushed ha habido algn error y la conexin debe cerrarse indica el inicio de una conexin indica el final de una conexin

TCP - Multiplexacin
Conexin TCP confiable

conexin Proceso 1

Proceso 2

Proceso 1

Proceso 2

Puerto x sockets

Puerto y

Puerto x

Puerto y

TCP: demultiplexor de puertos

TCP: demultiplexor de puertos

Direccin de red

IP
Transmisin de datagramas no confiables

IP

Permite que varios procesos de un mismo host utilicen simultneamente el servicio que ofrece TCP
22

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

Comunicacin entre dos sockets Asociacin (conexin)


Socket 10.0.1.25:80 (rojo = LISTEN) Socket: 10.0.2.47:1038

Conexin TCP 10.0.1.25:80-10.0.2.47:1038


Puerto 80 Puerto 1038

La PC ejecuta el programa IE

IP 10.0.1.25 Servidor Web

IP 10.0.2.47 Cliente

Conexin de un cliente a un servidor web {TCP, 10.0.1.25,80,10.0.2.47,1038}

Servidor iterativo
Socket 10.0.1.25:53 (rojo = LISTEN)

Socket: 10.0.2.47:1038

peticin
Puerto 21 Puerto 1038

La PC ejecuta DNS cliente

respuesta
IP 10.0.1.25 DNS
Mensaje UDP 10.0.1.25:21-10.0.2.47:1038

IP 10.0.2.47 Cliente

Consulta de un cliente a un servidor DNS {TCP, 10.0.1.25,53,10.0.2.47,1038}

Servidor concurrente
Socket 10.0.1.25:21 (rojo = LISTEN)
Puerto 21

Socket: 10.0.2.47:1038

peticin

fork

Puerto 21

Puerto 1038

IP 10.0.1.25 telnet

Conexin TCP 10.0.1.25.80-10.0.2.47:1038

La PC ejecuta telnet cliente

IP 10.0.2.47 Cliente

Conexin de un cliente a un servidor telnet {TCP, 10.0.1.25,21,10.0.2.47,1038}

Dos conexiones TCP de clientes con diferentes direcciones IP


Port 1038

Port 23

Cliente IP 158.42.3.47 Socket: 158.42.3.47.1038


Port 1038

Servidor IP 200.7.1.25
Socket: 200.7.1.25.23

Cliente IP 200.7.1.202 Socket: 200.7.1.202.1038

A diferencia de los servidores, los clientes usan nmeros 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
26

Puertos bien conocidos y efmeros


Servicio DayTime FTP SSH TelNet SMTP Domain (DNS) BOOTP HTTP POP3 NTP SNMP HTTPS Puerto 13 21 22 23 25 53 67 80 110 123 161 443 X X X X X TCP X X X X X X X X UDP X

Sistema operativo Microsoft Windows Linux Kernel 2.6 FreeBSD NetBSD Solaris AIX OpenBSD

Puertos efmeros 1024 4999 1024 4999 1024 5000 49152 65535 32768 65535 32768 65535 1024 - 65535

Un puerto es ____________ Un nmero que identifica un proceso en un cliente Un nmero que identifica un proceso en un servidor Un nmero de 16 bits empleado por los hosts para identificar a que protocolo de nivel superior o programa deben entregar los mensajes recibidos Todos los anteriores Elija todas las opciones que identifican al protocolo TCP Es un protocolo orientado a conexin Reensambla los mensajes en la estacin de destino Reenva los mensajes no recibidos Es un protocolo poco confiable Un zcalo (socket) tiene como parmetros {protocolo, direccin IP, proceso} {direccin IP, proceso, direccin IP, proceso} {direccin TCP, protocolo, direccin TCP, proceso} {direccin UDP, protocolo, direccin UDP, proceso} indique todas las opciones que representen una funcin de TCP Aadir confiabilidad Establecer una conexin punto a punto Control de flujo Conmutacin y ruteo
28

El nmero de ACK contiene La cantidad de paquetes recibidos El valor del tamao mximo de la ventana El siguiente nmero de secuencia que espera recibir del otro punto El numero de secuencia de su envo TCP provee un servicio de conexin de tipo Semiduplex Full duplex De secuenciamiento Multiplexado Cuales de las siguientes funciones no son implementadas por la capa de transporte Conexin confiable Conmutacin de rutas Control de flujo Secuenciamiento Determinacin de direccin MAC de destino Cul es el propsito de los nmeros de puerto? Los sistemas de origen utilizan estos nmeros para mantener organizada la sesin y seleccionar la aplicacin adecuada. Llevan un control de las distintas conversaciones que atraviesan la red al mismo tiempo Los sistemas finales los utilizan para asignar dinmicamente usuarios finales a una determinada sesin, segn el uso que hagan de la aplicacin 29 Los sistemas de origen generan estos nmeros para predecir las direcciones de destino.

Con el siguiente esquema del encabezado de TCP

Puerto de origen

Puerto de destino

Nmero de secuencia Nmero de acuse de recibo Long. cab. Reserv. 4 bits checksum Opciones
Defina Puerto de origen_______________________________________ Puerto de destino______________________________________ Nmero de secuencia___________________________________ Nmero de ACK_______________________________________ HLEN_______________________________________________ Ventana______________________________________________ Flags _______________________________________________
30

Flags 8 bits

Tamao de ventana Puntero de datos urgentes Relleno

Conexin en TCP
Los dos primeros segmentos de la conexin se identifican con el flag

SYN.
El nmero de secuencia es un campo de 32 bits que cuenta bytes en

mdulo 232 (el contador da la vuelta cuando llega al valor mximo).


El nmero 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 vas para asegurar la autenticidad de la comunicacin.
Una vez establecida la comunicacin el seq y el ack sirven para contar

los bytes transmitidos y recibidos.

31

Flags de conexin/desconexin de TCP


Los flags de la cabecera TCP que tienen que ver con el proceso de

conexin/desconexin son los siguientes:


SYN (Synchronize): este flag est puesto siempre en los dos

primeros segmentos que se intercambian en cualquier conexin TCP, y sirve para indicar que se trata de los segmentos de establecimiento de la conexin.
FIN (Finish): este flag est puesto siempre en los dos segmentos

TCP que indican el final de la conexin.


RST (Reset): este flag se utiliza para indicar que la conexin debe

interrumpirse inmediatamente debido a que se ha detectado alguna anomala importante, o porque la aplicacin ha pedido abortar la conexin. Este flag no debera aparece nunca en una conexin normal.

Flag de sincronismo - SYN


0 Source port Sequence number Acknowlegedgement Data offset Reserved
U A R C G K P R S S H T S F Y I N N

16 Destination port

31

Bit de sincronismo
window Urgent pointer padding

cheksum Options Data bytes


33

Visin simplificada de una sesin TCP tpica


TCP Cliente
10.0.0.2:1304 CLOSED SYN-SENT SYN-RECEIVED ESTABLISHED ESTABLISHED

TCP Servidor
10.0.0.1:80 LISTEN

Conexin (3 mensajes)

Tiempo

Intercambio de datos
Si la aplicacin no tiene datos para enviar y responde con rapidez este mensaje no se enva

FIN-WAIT-1 CLOSE-WAIT FIN-WAIT-2 LAST-ACK LISTEN

1-4 min.

TIME-WAIT CLOSED

Desconexin (3 4 mensajes)

Conexin por Saludo a tres vas


El mecanismo de conexin utilizado por TCP se basa en el

intercambio de tres mensajes, motivo por el cual se le conoce como saludo a tres vas o three way handshake:
Segmento 1: (cliente)
El cliente enva al servidor una invitacin a conectar. Decimos que realiza un active open

Cuando recibe la invitacin el servidor devuelve una respuesta al cliente aceptando. Efecta un passive open

Segmento 2: (servidor)

Segmento 3: (cliente)

Al recibir la respuesta el cliente considera establecida la conexin y enva un tercer mensaje en el que acusa recibo del anterior

El servidor considera establecida la conexin cuando recibe este tercer mensaje

Saludo de tres vas/abrir conexin


A
CLOSED SYN-SENT
(ISN 100)

B
LISTEN

Puerto pasivo (espera un requerimiento activo)

Enviar SYN Seq=x

Recibir SYN SYN-RECEIVED (ISN 300) (seq=x) Enviar SYN (Seq=y, ACK=x+1) Recibir ACK (ACK=y+1)
ESTABLISHED

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


Tiempo

Recibir ACK (ACK=y+1)

36

Identificadores de conexin (ISN)


Cuando va a establecer una conexin TCP elige un identificador para

dicha conexin, llamado ISN (Initial Sequence Number).


El ISN evita el riesgo de que un duplicado retrasado de una conexin

anterior provoque una conexin espuria


En una conexin TCP siempre hay dos, y slo dos, TCPs involucrados. Cada TCP elige independientemente el ISN que utilizar para esa

conexin, por tanto siempre hay dos ISN asociados, uno por cada lado de la conexin.
Eleccin del ISN. Segn 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

Desconexin
Puede ser de dos tipos: Simtrica: la conexin 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 invitacin a cerrar el otro.
Asimtrica: desconexin unilateral (un host la termina en ambos

sentidos sin esperar a recibir confirmacin del otro). Puede provocar prdida de informacin.

38

Desconexin a tres vas, caso normal


TCP A
ESTABLISHED FIN-WAIT-1 CLOSE-WAIT

TCP B
ESTABLISHED

FIN-WAIT-2 LAST-ACK TIME-WAIT

2 MSL CLOSED

CLOSED

MSL: Maximum Segment Lifetime (normalmente 2 minutos)


39

Desconexin asimtrica
Host A
A B

Host B

Tiempo

Conectado

Conectado

No Conectado DR:
40

Datos perdidos

No Conectado

Disconnect Request

Terminar una conexin TCP - RST


0 Source port Sequence number Acknowlegedgement Data offset Reserved
U A R C G K P R S S H T S F Y I N N

16 Destination port

31

Bit de desconexion
window Urgent pointer padding

cheksum Options Data bytes

41

Servicios en puertos por encima del 1023


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

debe usar un nmero de puerto por encima del 1023.


Los servicios que se consideran no privilegiados tienen nmeros de puerto

bien conocidos por encima del 1023, para que cualquier usuario los pueda activar
Ejemplo: el protocolo SIP (telefona IP) usa el puerto 5060 para establecer

la conexin. Una vez establecida sta el flujo de audio de la llamada usa un nmero de puerto dinmico (normalmente UDP)
Cualquier usuario sin privilegios puede poner en marcha un servidor web

en un host si usa un puerto superior al 1023

Ejemplo: llamada SIP entre dos usuarios


Puerto asignado por el sistema a la Puerto asignado por llamada de Mafalda el sistema a la llamada de Manolito

Mafalda 200.7.12.24

Manolito 170.210.13.26

Puerto 5060 (Suena el telfono de Manolito) Puerto 5060 Puerto 5060 Puerto 38060 Audio Audio Puerto 48753

Casos de estudio: Conexin de un cliente a un servidor web

Socket 10.0.1.25:80 (rojo = LISTEN) Conexin TCP 10.0.1.25:80-10.0.2.47:1038


Puerto 80

Socket: 10.0.2.47:1038

Puerto 1038

La PC ejecuta un navegador

IP 10.0.1.25 Servidor Web

IP 10.0.2.47

Una conexin, dos sockets

Casos de estudio:
Conexin simultnea de una PC a dos servidores web
Dos conexiones, cuatro sockets
Socket 10.0.1.25:80
Puerto 80

Servidor Web IP 10.0.1.25

Socket: 10.0.2.47:1038 La pc ejecuta navegador hacia 10.0.1.25


Puerto 1038 Puerto 1039

IP 10.0.2.47
Puerto 80

Socket: 10.0.2.47:1039 Socket 10.0.3.47:80

La PC ejecuta otro navegador hacia 10.0.3.47

Servidor Web IP 10.0.3.47

Casos de estudio:
Conexin desde dos PC a un mismo servidor web
Dos conexiones, tres sockets
Este socket tiene dos conexiones simultneas Socket 10.0.1.25:80
Puerto 1038

Socket: 10.0.1.50:1038 La PC ejecuta navegador hacia 10.0.1.25

IP 10.0.1.50 Puerto 80
La PC ejecuta navegador hacia 10.0.1.25

Servidor Web IP 10.0.1.25

Las dos conexiones son diferentes porque difieren en la direccin IP del cliente

Puerto 1038

IP 10.0.2.47
Socket: 10.0.2.47:1038

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

Socket: 10.0.2.47:1038 Socket 10.0.1.25:80 Conexin TCP 10.0.1.25:80-10.0.2.47:1038 Conexin TCP 10.0.1.25:110-10.0.2.47:1039 La PC ejecuta navegador hacia 10.0.1.25

Puerto 80 Puerto 110

Puerto 1038 Puerto 1039

La PC ejecuta Outlook hacia 10.0.1.25

Socket 10.0.1.25.110

IP 10.0.2.47
Socket: 10.0.2.47:1039

IP 10.0.1.25

Servidor Web y POP3

Conexin cruzada cliente-servidor web entre dos PC


Dos conexiones, cuatro sockets
Socket 10.0.1.25:80 Socket: 10.0.1.50:1038 La PC ejecuta navegador hacia 10.0.1.25

Servidor Web IP 10.0.1.25


Puerto 80 Puerto 1038

Conexin TCP 10.0.1.25:80-10.0.1.50:1038 Conexin TCP 10.0.1.25:1038-10.0.1.50:80

Puerto 1038 Puerto 80

La PC ejecuta navegador hacia 10.0.1.50

Socket: 10.0.1.25:1038

Servidor Web IP 10.0.1.50


Socket: 10.0.1.50:80

Dos conexiones independientes que no comparten ningn socket

IP local

Comando netstat en un host


Puerto remoto Puerto local IP remota
Estado ESTABLISHED TIME_WAIT TIME_WAIT ESTABLISHED ESTABLISHED LISTEN

C:\>netstat -n Conexiones activas Proto TCP TCP TCP TCP TCP TCP C:\>

Direccin local 10.0.1.25:3719 10.0.1.25:4111 10.0.1.25:4113 10.0.2.13:80 10.0.1.25:80 *:80

Direccin remota 10.0.1.60:21 10.0.1.50:110 10.0.1.50:110 10.0.2.40:1056 10.0.1.30:2312 *:*

Servidor web a la escucha en este host. Admite conexiones al puerto 80 por todas sus direcciones IP (*:80) desde cualquier direccin IP y puerto (*:*) Conexiones de clientes con este servidor web Sesiones pendiente de cerrar de este host como cliente de correo de 10.0.1.50 Conexin de este host como cliente ftp de 10.0.1.60 Si no se utiliza la opcin 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)

Conexiones del netstat anterior


Outlook (cliente POP3) conectado con 10.0.1.50. Conexiones en proceso de cierre IP 10.0.1.50 Servidor POP3 Puerto 110

Puerto 4113 Puerto 4111

Cliente FTP conectado con 10.0.1.60

Puerto 3719

Puerto 21

IP 10.0.1.60 Servidor FTP

Puerto 80 IP 10.0.1.25 10.0.2.13 PC conectada a 10.0.1.25


Puerto 2312

PC conectada a 10.0.2.13

Servidor Web

Puerto 1056

IP 10.0.2.40

IP 10.0.1.30

Ejemplo de conexiones en una PC Windows


C:\Documents and Settings\hem>netstat -n Conexiones activas Proto TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP Direccin local Direccin remota Estado 127.0.0.1:445 127.0.0.1:1565 ESTABLISHED 127.0.0.1:1109 127.0.0.1:1110 ESTABLISHED 127.0.0.1:1110 127.0.0.1:1109 ESTABLISHED 127.0.0.1:1354 127.0.0.1:1355 ESTABLISHED 127.0.0.1:1355 127.0.0.1:1354 ESTABLISHED 127.0.0.1:1565 127.0.0.1:445 ESTABLISHED 127.0.0.1:5226 127.0.0.1:1056 ESTABLISHED 170.210.128.140:1068 170.210.128.138:139 ESTABLISHED 170.210.128.140:1112 170.210.128.196:143 ESTABLISHED 170.210.128.140:1471 170.210.128.196:143 CLOSE_WAIT 170.210.128.140:1482 170.210.133.6:993 ESTABLISHED 170.210.128.140:1487 207.46.111.36:80 ESTABLISHED 170.210.128.140:1554 65.54.195.185:80 CLOSE_WAIT 170.210.128.140:1563 170.210.133.6:993 CLOSE_WAIT
Port 139 tcp/udp NETBIOS Session Service. Uses netbios-ssn service. Port 139 tcp God Message worm,Msinit

Port 143 tcp/udp Internet Message Access Protocol. Uses imap service. Port 993 tcp/udp imap4 protocol over TLS/SSL. Uses imaps service

Port 80 tcp/udp World Wide Web HTTP. Uses http service.

C:\Documents and Settings\hem>

Puertos del cliente

51

Opciones y extensiones de TCP


Intercambio de valores de MSS entre los dos comunicantes. Es la ms

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
Repeticin selectiva y acuse de recibo negativo (NAK) (RFC 1106).

Tambin especialmente til en LFNs.


Estas opciones se negocian en el segmento de inicio de la conexin (el

que lleva el bit SYN puesto)

Intercambio de datos TCP Aplicacin y TCP TCP

Aplicacin origen

Aplicacin destino

A criterio de la aplicacin Empuja (sujeto a disponibilidad de buffer en TCP emisor)

Tira

A criterio de la aplicacin

TCP emisor
53

Buffer

Empuja
A criterio del TCP emisor (sujeto a disponibilidad de buffer en TCP receptor y no congestin de la red)

Buffer

TCP receptor

Intercambio de datos TCP Aplicacin y TCP TCP


Aplicacin origen Aplicacin destino

Transferencia orientada a flujo de bytes


1024 Bytes

Escribe

2048 Bytes

Lee
1024 Bytes

TCP emisor
54

Buffer 512 B

Enva
512 B 512 B 512 B

Buffer

TCP receptor

(MSS 512 Bytes)

Intercambio de datos: casos excepcionales


Datos Pushed (bit PSH) La aplicacin pide al TCP emisor que enve esos datos lo antes

posible. El TCP receptor los pondr a disposicin de la aplicacin de inmediato, para cuando sta le pida datos. Ejemplo: telnet.
Datos Urgentes (bit URG y Urgent Offset) Los datos se quieren entregar a la aplicacin remota sin esperar a

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

55

Prctico
Describa los procesos iterativos y concurrentes. Cules son las ventajas

y desventajas de cada uno?


Defina aplicaciones (dos) que se adapten mejor a cada tipo de proceso.

Justifique la eleccin.
Describa los conceptos de puerto y socket Conecte su estacin 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?

56

Diga cual de las siguientes afirmaciones es cierta referida a la eleccin

del ISN (Initial Sequence Number) en el establecimiento de una conexin de TCP: Siempre se utiliza el valor 0 Se puede utilizar cualquier valor (entre 0 y 232 - 1), pero cuando dos hosts establecen una conexin 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 conexin, normalmente siguiendo un algoritmo pseudoaleatorio.

Para que utiliza el intercambio de seales de tres vas/conexin

abierta TCP (handshake)? Para garantizar que se podrn recuperar datos perdidos si se producen problemas ms tarde. Para determinar cuantos datos puede aceptar la estacin 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 informacin en las capas superiores

El nmero de ACK contiene La cantidad de paquetes recibidos El valor del tamao mximo de la ventana
57

El siguiente nmero de secuencia que espera recibir del otro punto El numero de secuencia de su envo

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

conexin y no confiable
Las TPDUs de UDP se denominan mensajes o datagramas UDP UDP multiplexa los datos de las aplicaciones y efecta opcionalmente

una comprobacin de errores, pero NO realiza:


Control de flujo Control de congestin Retransmisin de datos perdidos Conexin/desconexin
58

Protocolo UDP
Se utiliza cuando: El intercambio de mensajes es muy escaso, ej.:consultas al DNS

(servidor de nombres)
La aplicacin 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 transmisin es altamente confiable y sin congestin

(LANs). Ej: NFS


Se enva trfico broadcast/multicast

59

El encabezado de UDP
32 bits
Puerto de origen Puerto de destino Checksum

Cabecera

Longitud datagrama UDP

Para el clculo 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

60

Multiplexacin de UDP
Puerto 1 Puerto 2 Puerto 3

UDP demultiplexacin basado en puertos

Capa de red IP

UDP aporta capacidad de multiplexacin al protocolo de la capa red IP Es importante que este determinado para que la aplicacin sepa donde conectarse

61

Multiplexacin de UDP
La multiplexacin se realiza mediante el puerto (origen o destino) que

puede valer de 0 a 65535.


La combinacin de una direccin IP y un puerto identifica un socket

(origen o destino de los datagramas UDP):


170.210.135.22:1038
Direccin IP Socket Puerto

Los puertos 0 a 1023 estn 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: telefona IP.

Intercambio de datagramas UDP entre un cliente y un servidor


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

Port 13

Port 1038

Servidor Daytime IP 170.210.1.25


Socket: 170.210.1.25:13

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

Cliente IP 10.0.1.50
Socket: 10.0.1.50:1038

En UDP la aplicacin tiene un control completo de los envos. Cada vez que un programa del nivel de aplicacin enva algo (p. ej.

invocando la funcin 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

Comparacin Protocolos de transporte


Funcin Transporte Multiplexacin Deteccin de errores Correccin de errores Control de flujo Control de congestin Establecimiento/ terminacin de conexin (*) Obligatorio en IPv6
64

TCP S S S S S S S

UDP S S Opcional(*) No No No No

Practico 1

TCP provee un servicio de conexin de tipo.


Semiduplex Full duplex De secuenciamiento Multiplexado

Cuales de las siguientes funciones no son implementadas por la capa de transporte


Conexin confiable Conmutacin de rutas Control de flujo Secuenciamiento Determinacin de direccin MAC de destino

Que mecanismo utiliza la capa de transporte para detener la recepcin de paquetes cuando el buffer de recepcin detecta overflowing

Segmentacin Paquetes Reconocimiento (ACK) Control de flujo PDU

65

Practico 1
Responda las siguientes preguntas: 1: El tamao mximo de un segmento TCP es 65.515 bytes. Podra explicar de donde viene ese valor? 2: Debe TCP preocuparse de reordenar los fragmentos de un datagrama? 3: Sesin TCP con 100 Mb/s de BW y 20 ms de RTT. Calcular caudal mximo aprovechable. 4:Por que es necesario UDP? Por qu un programa de usuario no puede acceder directamente a IP?

66

Prctico 2
En los firewall se disean filtros que funcionan analizando los flag del encabezado TCP Establezca los criterios de filtros para evitar que se establezcan conexiones desde Internet. Es posible hacer lo mismo con UDP?
Se quiere poner en el router una regla que impida el establecimiento de conexiones TCP desde fuera Intranet Internet
Router filtro

67

Prctico 3
1 - Una aplicacin 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 conexin TCP al

puerto 13 (servicio daytime) de un servidor. La direccin IP se especificar en tiempo de ejecucin.


Cuando la conexin se establece el servidor devuelve una cadena de

caracteres que contiene la fecha y hora, y cierra la conexin


El cliente debe leer la cadena recibida y mostrarla por pantalla Dibuje el diagrama de tiempo de la secuencia de mensajes

68

Conexin TCP al puerto 13 (daytime)


TCP Cliente
CLOSED SYN-SENT SYN-RECEIVED ESTABLISHED ESTABLISHED (fecha-hora)

TCP Servidor (daytime, puerto 13)


LISTEN

Conexin

Intercambio de datos

Tiempo

FIN-WAIT-1 CLOSE-WAIT LAST-ACK TIME-WAIT . . . . 2- 4 . min. LISTEN

Desconexin

CLOSED

Prctico 4: Programa cliente UDP


El cliente enva un datagrama UDP al puerto 13 del servidor. A

continuacin 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

Intercambio de paquetes UDP al puerto 13


UDP Cliente UDP Servidor (daytime, puerto 13)

LISTEN

Tiempo

bloqueo
(fecha-hora)

Prctico 7 identificacin 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 conexin de los zockets de la aplicacin que ha

corrido con mismo comando netstat


Que puerto escucha http? Que puerto utilizo la aplicacin para establecer la conexin? Identifique otras conexiones

Prctico 8 identificacin 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 sera el siguiente: Ejecucin del programa de captura de paquetes Comienzo de la captura, es conveniente limitar el trfico a aquel que se realice con el servidor web que este utilizando. Paso 3: Acceda a la direccin http:// [serv web ]. Espere que la pgina cargue totalmente. Paso 4: Detenga la captura y observe las capturas obtenidas. Encuentre la secuencia de hand-shake Describa el proceso de conexin analizando los paquetes capturados Analice los paquetes transferidos
Cuantos paquetes ip utiliz? Hubo segmentacin TCP? Analice todo el proceso de transferencia Como es la forma de terminacin de la conexin?

También podría gustarte