Post on 01-Jan-2016
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)
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)
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)
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
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
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
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.
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.
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
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)
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
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)
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
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
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
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
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.
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
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
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.
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
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.
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
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
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
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
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
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
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.
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
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.
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.
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
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
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
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
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
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.
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)
40
Host A Host B
Tiem
po
DR: Disconnect Request
Desconexión asimétrica
Conectado Conectado
NoConectado
NoConectado
Datos perdidos
A B
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
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
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
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
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
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
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
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
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)
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
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
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)
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
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
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
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?
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
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
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
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
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
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
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
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
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
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?
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?
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
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)
....
.
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
UDP ClienteUDP Servidor
(daytime, puerto 13)
Ti
empo
Intercambio de paquetes UDP al puerto 13
LISTEN
(fecha-hora)
bloqueo
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
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?