Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
host).
Realiza la comunicacin de forma transparente al medio fsico. Usa
aplicacin
La unidad de transferencia de informacin a nivel de transporte es la
Modelo TCP/IP
C A X
Mensaje a Y
Aplicacin C IP Frame
IEEE 802.3
B IP
Frame Relay
Datagrama
Datagrama
TCP UDP IP
IEEE 802.3
Ethernet
Red FR
Ethernet
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
Valor 1 4 6 17 89
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
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,
Internet
Un cliente es el que pide ese servicio. Una aplicacin consta de una parte de servidor y una de cliente, que se
Peticin de servicios
TCP/IP
Servidor
TCP/IP
Servidor
Zcalos (socket)
Un zcalo es un tipo especial de descriptor de archivo que un proceso
{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:
11
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
13
Host
Host
Primitivas de socket
Primitivas de socket
requerimiento
respuesta
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
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
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
Inactivo
Servidor
TPDU de conexin recibida
Tipos de servidores
Iterativos Sin conexin Con conexin Sin conexin Con conexin
Concurrentes
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
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
21
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
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.
La PC ejecuta el programa IE
IP 10.0.2.47 Cliente
Servidor iterativo
Socket 10.0.1.25:53 (rojo = LISTEN)
Socket: 10.0.2.47:1038
peticin
Puerto 21 Puerto 1038
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
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
IP 10.0.2.47 Cliente
Port 23
Servidor IP 200.7.1.25
Socket: 200.7.1.25.23
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
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.
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
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
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
31
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
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.
16 Destination port
31
Bit de sincronismo
window Urgent pointer padding
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
1-4 min.
TIME-WAIT CLOSED
Desconexin (3 4 mensajes)
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
B
LISTEN
Recibir SYN SYN-RECEIVED (ISN 300) (seq=x) Enviar SYN (Seq=y, ACK=x+1) Recibir ACK (ACK=y+1)
ESTABLISHED
36
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
TCP B
ESTABLISHED
2 MSL CLOSED
CLOSED
Desconexin asimtrica
Host A
A B
Host B
Tiempo
Conectado
Conectado
No Conectado DR:
40
Datos perdidos
No Conectado
Disconnect Request
16 Destination port
31
Bit de desconexion
window Urgent pointer padding
41
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
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
Socket: 10.0.2.47:1038
Puerto 1038
La PC ejecuta un navegador
IP 10.0.2.47
Casos de estudio:
Conexin simultnea de una PC a dos servidores web
Dos conexiones, cuatro sockets
Socket 10.0.1.25:80
Puerto 80
IP 10.0.2.47
Puerto 80
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
IP 10.0.1.50 Puerto 80
La PC ejecuta navegador hacia 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
Socket 10.0.1.25.110
IP 10.0.2.47
Socket: 10.0.2.47:1039
IP 10.0.1.25
Socket: 10.0.1.25:1038
IP local
C:\>netstat -n Conexiones activas Proto TCP TCP TCP TCP TCP TCP C:\>
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)
Puerto 3719
Puerto 21
PC conectada a 10.0.2.13
Servidor Web
Puerto 1056
IP 10.0.2.40
IP 10.0.1.30
Port 143 tcp/udp Internet Message Access Protocol. Uses imap service. Port 993 tcp/udp imap4 protocol over TLS/SSL. Uses imaps service
51
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).
Aplicacin origen
Aplicacin destino
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
Escribe
2048 Bytes
Lee
1024 Bytes
TCP emisor
54
Buffer 512 B
Enva
512 B 512 B 512 B
Buffer
TCP receptor
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
Justifique la eleccin.
Describa los conceptos de puerto y socket Conecte su estacin de trabajo con un servidor, por ejemplo servidor de
en el host local?
56
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.
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
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.:
59
El encabezado de UDP
32 bits
Puerto de origen Puerto de destino Checksum
Cabecera
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
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
(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.
Port 13
Port 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
TCP S S S S S S S
UDP S S Opcional(*) No No No No
Practico 1
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
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
68
Conexin
Intercambio de datos
Tiempo
Desconexin
CLOSED
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
y terminamos
LISTEN
Tiempo
bloqueo
(fecha-hora)
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?