Vous êtes sur la page 1sur 74

Tema #2:

Protocolos de Red y de
Transporte
Teleinformt
ica
2014-2015

Conferencia #
10
Protocolos TCP y UDP. Puertos, Sockets y
RPC.
Objetivos

Caracterizar los protocolos de transporte TCP y UDP en cuanto a su


estructura, funciones y aplicaciones en una arquitectura cliente-servidor.
Identificar las diferencias esenciales entre la comunicacin a nivel de
red por sockets y la comunicacin a nivel de red con llamadas a
procedimientos remotos (RPC).
Sumario

Nivel de Transporte en la arquitectura TCP/IP.


Protocolos de Transporte: UDP
Multiplexacin de datos mediante puertos.
Protocolos de Transporte: TCP
Multiplexacin de datos mediante puertos.
Conexin/Desconexin.
Intercambio de datos y control de flujo.
Puertos de red, sockets y RPC.
Trabajo Independiente.
Bibliografa

[1] TCP/IP Tutorial and technical overview. IBM Red Books.


Captulo 5 y Epgrafes 7.2.1 y 7.2.2.
[2] Redes Globales de informacin con Internet y TCP/IP Douglas E.
Comer. Captulos 12, 13 y Epgrafes 20.1 al 20.4 y 24.14.
Capa de
Transporte
Nivel de Transporte

La capa de transporte constituye el corazn de la jerarqua completa de


protocolos.
Su tarea es proporcionar un transporte de datos confiable y econmico desde
la mquina origen hasta la de destino, independientemente de la red o redes
fsicas en uso.
Permite aislar a las capas superiores respecto a la tecnologa, el diseo y las
imperfecciones de la subred.
Muchos diseadores de redes ven a la capa de transporte como el lmite
principal entre el proveedor del servicio de transporte (capas 1 a 4) y el
usuario del servicio de transporte confiable de transmisin de datos (capas
por encima de la 4).
Nivel de Transporte

La capa de transporte generalmente se implanta en el kernel de S.O,


como un proceso o como una biblioteca de funciones.
Al software que realiza las funciones de esta capa se le conoce como
Entidad de Transporte.
Esta capa hace ms confiable la transmisin de informacin
encargndose de la recuperacin de eventos como paquetes perdidos o
paquetes mal formados.
Gracias a la capa de transporte los programadores de aplicaciones
pueden escribir cdigo segn un conjunto estndar de primitivas y
hacer que esas aplicaciones funcionen en una amplia variedad de redes.
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.
Multiplexar trfico de diversas instancias (procesos) del nivel de aplicacin. El
nivel de transporte (como el de red) tiene una sola instancia en el host.
El servicio que ofrece puede ser de dos tipos:
Orientado a conexin: (streams) garantiza la entrega de los datos (confiable),
sin prdidas ni duplicados: TCP (Protocolo de Control de Transmisin).
No orientado a conexin: (datagram) sin control de errores, equivale al
servicio que ofrece IP, pero a nivel de transporte: UDP (Protocolo de
Datagrama de Usuario).
Trfico TCP vs UDP en Internet

TCP: 80%
UDP: 10%
Otros: 10%
Especificacin del protocolo de transporte
Cabecera del datagrama IP

Valor Protocolo
1 ICMP Estos son solo algunos
4 IP ejemplos de los valores que
6 TCP puede tener el campo
17 UDP protocolo de un datagrama
89 OSPF IP.
UDP
Protocolo de
Datagrama de
Usuario
Protocolo UDP

Servicio sencillo, pero no confiable (puede fallar).


Se utiliza en los siguientes casos:
El intercambio de mensajes es muy escaso, ej.: consultas al DNS
(servidor de nombres).
La aplicacin es en tiempo real y no puede esperar confirmaciones.
Ej.: videoconferencia, voz sobre IP.
Los mensajes se producen regularmente y no importa si se pierde
alguno. Ej: NTP, SNMP
Se enva trfico broadcast/multicast (este no puede enviarse por TCP).
Protocolo UDP

Los paquetes de datos que enva UDP se denominan mensajes o


datagramas UDP.
Compuestos por cabecera y rea de datos 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.
Cabecera UDP

El UDP es bsicamente el IP con la adicin de una cabecera corta (8


Bytes).
Cabecera UDP

Puerto destino y origen: nmeros de puerto utilizados para el


demultiplexado de datagramas entre procesos (aplicaciones).
Longitud: posee un conteo de octetos del datagrama UDP incluyendo el
encabezado y los datos de usuario. Mnimo 8 octetos (encabezado).
Suma de Verificacin: (opcional) se emplea para garantizar que los
datos lleguen sin errores. No se emplea en aplicaciones donde los
errores de un bit no son trascendentales. (Ej. Audio)
La cabecera UDP

La pseudocabecera se antepone a la cabecera UDP, pero solo a efectos de


calcular el checksum, no se enva realmente (de ah su nombre). Permite al
UDP del receptor comprobar que su nivel IP no se ha equivocado y le ha
pasado un datagrama que era para otra mquina.
Multiplexacin

La multiplexacin se realiza mediante el puerto, una especie de


direccin local que indica el proceso del nivel de aplicacin origen o
destino del paquete.
Al ser un entero de 16 bits su valor est comprendido entre 0 y 65535.
La combinacin de una direccin IP y un puerto identifica un socket
(origen o destino de los datagramas UDP).
Direccin IP Puerto
147.156.135.22 : 1038

Socket
Multiplexacin
Multiplexado, demultiplexado y puertos de UDP
El puerto UDP puede pensarse como una cola.
Cuando una aplicacin negocia con el sistema operativo el uso de un
puerto, el SO crea un buffer en la memoria intermedia y una cola de
espera interna que almacena los mensajes que llegan.
Multiplexacin

Multiplexado, demultiplexado y puertos de UDP


Cuando UDP recibe un datagrama verifica si el nmero de puerto de
destino corresponde a uno de los puertos que estn en uso.
Si no existe ese nmero de puerto enva mensaje de error ICMP de puerto
inaccesible y descarta el datagrama.
Si encuentra el nmero, UDP pone en cola de espera en el puerto el
nuevo datagrama, hasta que la aplicacin lo pueda leer.
Rangos de Puertos

Los puertos se dividen en tres rangos:


Del 0 al 1023: puertos bien conocidos (well known ports). Se reservan
normalmente para servidores de protocolos estndar (ej.: HTTP, puerto
80). Solo procesos con acceso superusuario pueden utilizarlos.
Del 1024 al 49151: puertos registrados. Se usan para servidores que no
necesitan acceso superusuario (ej.: SIP, telefona IP, puerto 5060) y para
clientes.
Del 49152 al 65535: puertos dinmicos o privados. Slo se usan para
clientes.
La correspondencia puertos-protocolos se puede consultar en: aqu
Ejemplo de puertos Bien Conocidos
Servicio Puerto TCP UDP Servicio Puerto TCP UDP
Day Time 13 X SNMP 161 X
FTP 21 X LDAP 389 X
SSH 22 X HTTPS 443 X
TelNet 23 X SIP 5060 X
SMTP 25 X
Domain (DNS) 53 X X
BOOTP 67 X
TFTP 69 X
HTTP 80 X
POP3 110 X
NTP 123
Multiplexacin
Modelo cliente-servidor

Para describir los servicios del nivel de transporte y de aplicacin se


suele utilizar un modelo basado en dos protagonistas:
Cliente: el que inicia la conexin.
Servidor: el que est a la espera de recibir peticiones de conexin.
Del 49152 al 65535: puertos dinmicos o privados. Slo se usan para clientes.
La conexin puede terminarse tanto por iniciativa del cliente como del
servidor.
En el nivel de aplicacin algunos protocolos (Emule, Skype, Spotify)
utilizan el modelo simtrico o de igual a igual (peer-to- peer) pero a
nivel de transporte casi siempre se utiliza el modelo cliente-servidor.
Intercambio de segmentos UDP
Modelo cliente-servidor
Rango de puertos efmeros

La mayora de los sistemas eligen los puertos para sus clientes (puertos
efmeros) usando solo una parte de todo el rango disponible:
Sistema operativo Puertos efmeros
Windows Server 2003 y anteriores 1024 4999
Linux Kernel 2.6 1024 4999
Solaris 32768 65535
AIX 32768 65535
FreeBSD 1024 5000
Windows Vista y posteriores 49152 65535
NetBSD 49152 65535
OpenBSD 1024 - 65535
Cundo y cmo se envan los datagramas UDP?
Envo:
Cada vez que la aplicacin (el programa) enva algo (p. ej. Invocando
la funcin sendto) el host lo manda en un datagrama IP al socket de
destino especificado.
Si el datagrama no cabe en la trama el nivel IP se encarga de
fragmentarlo.
Recepcin:
Si el datagrama lleg fragmentado el IP del receptor lo reensambla.
El IP lo pasa a UDP y de all la aplicacin (el programa) lo recoge
cuando quiere (p. ej. con recv)
RPC
Llamada a
procedimientos
Remotos
RPC (Remote Procedure Call)

Este es un protocolo que utiliza UDP como base.


En cierto sentido enviar un mensaje a una mquina remota y recibir una
respuesta es como hacer un llamado a un procedimiento.
En ambos casos se comienza con algunos parmetros y se finaliza con
algunos resultados.
Esto hace que las aplicaciones de red sean mucho ms sencillas y
fciles de entender.
Esta tcnica fue sugerida por Birell y Nelson en 1984 permitiendo a los
programas hacer llamados a procedimientos localizados en mquinas
remotas.
RPC (Remote Procedure Call)

El procedimiento que hace el llamado es denominado cliente y el


procedimiento que es llamado es denominado servidor.
Generalmente toda la complejidad se esconde utilizando bibliotecas
con interfaces tanto para el servidor como para el cliente:
Client stub
Server stub
TCP
Protocolo de
Control de
Transmisin
TCP (Transmission Control Protocol)

Ofrece un servicio de transporte orientado a conexin.


Est diseado para ofrecer un transporte fiable sobre un servicio no
fiable que le suministra IP.
Los paquetes de TCP se llaman segmentos.
El TCP actual se especific en el RFC 793 en 1981 y sigue plenamente
vigente.
TCP (Transmission Control Protocol)

Proporcionar una corriente de bytes confiable a travs de una interred


no confiable.
Una interred es diferente de una sola red porque las distintas partes pueden
tener topologas, AB, retardos, tamaos de paquetes y otros parmetros con
grandes diferencias.
TCP se dise para adaptarse dinmicamente a las propiedades de la
interred y para ser robusto ante muchos tipos de fallas.
Las mquinas compatibles con TCP tienen una entidad de transporte
TCP, ya sea un proceso de usuario o una parte del ncleo que maneja
las corrientes TCP y tiene una interfaz con la capa IP.
Funciones de TCP

Multiplexar los datos de las aplicaciones mediante los puertos.


Controlar errores, retransmitiendo segmentos perdidos o errneos.
Eliminar duplicados.
Establecer y terminar conexiones.
Gestionar los buffers y ejercer control de flujo de forma eficiente
Gestionar el intercambio de datos de forma eficiente en la red.
Efectuar control de congestin.
La cabecera TCP
La cabecera TCP

Cada segmento comienza con una cabecera de formato fijo de 20 bytes.


Esta cabecera puede ir seguida de Opciones de cabecera.
Longitud mxima de un segmento TCP est acotado por:
65535 20 20 = 65 515 Bytes
Pueden existir segmentos sin datos y se emplean para acuses de
recibo y mensajes de control.
La cabecera TCP
Puerto origen y puerto destino: (16 bits) identifican los puntos
terminales locales de la conexin.
Cada host puede decidir por s mismo la manera de asignar sus propios puertos
comenzando por el 256.
La direccin de un puerto ms la direccin IP de un host forman un TSAP
(socket) nico de 48 bits.
Los nmeros de socket de origen y de destino en conjunto identifican la
conexin.
Nmero de secuencia y nmero de acuse de recibo: (32 bits) identifican
de forma nica a cada segmento.
Nmero de acuse: especifica el siguiente byte esperado por el receptor.
La cabecera TCP
Longitud de cabecera TCP: (32 bits) indica la cantidad de palabras de
32 bits contenidas en la cabecera TCP.
Se necesita este campo porque las opciones son de longitud variables, por lo que
la cabecera tambin.
Tcnicamente hablando este campo indica el comienzo de los datos en el
segmento medidos en palabras de 32 bits.
Campo de 4 bits reservados, no se usan.
El control de flujo en el TCP se maneja usando un mecanismo de
ventana deslizante de tamao variable.
Ventana: (16 bits) indica la cantidad de bytes que pueden enviarse a
partir del acuse de recibo especificado.
La cabecera TCP

Flags: 1 CWR Congestion Window Reduced


2 ECE ECN Echo (ECN=Explicit Congestion Notification)
3 URG el segmento contiene datos urgentes
4 ACK el campo nmero de acuse de recibo tiene sentido
5 PSH el segmento contiene datos Pushed
6 RST ha habido algn error y la conexin debe cerrarse
7 SYN indica el inicio de una conexin
8 FIN indica el final de una conexin
La pseudocabecera TCP

La pseudocabecera TCP 32 bits La pseudocabecera se antepone a la cabecera


TCP, pero solo a efectos de calcular el checksum, en realidad no se enva.
Permite al proceso TCP comprobar que su proceso IP no se ha equivocado
entregndole un segmento que no era para l.
El valor 6 indica el protocolo de transporte (TCP).
La cabecera TCP

La inclusin de una pseudocabecera ayuda a detectar paquetes mal


entregados, pero hacerlo viola la jerarqua de protocolos puesto que las
direcciones IP que contiene pertenecen a la capa IP.

Campo opciones: se dise para contar con una manera de agregar


caractersticas extras no cubiertas por la cabecera normal.
La ms importante permite que cada host especifique la carga til TCP mxima
que est dispuesto a aceptar.
Durante el establecimiento de conexin cada lado puede anunciar su mximo y
ver de su compaero. Gana el ms pequeo.
La cabecera TCP
Campo opciones: se dise para contar con una manera de agregar
caractersticas extra no cubiertas por la cabecera normal.
Si no usa esta opcin, el tamao predeterminado para la carga til es de 536
bytes. Se requiera que todos los host de Internet acepten segmentos TCP de 536
+ 20 = 556 bytes.
En el RFC 1323 se propuso una opcin de escala de ventana que permite
negociar un factor de escala para la ventana, permitiendo un tamao mximo de
232 bytes.
En el RF 1106 se propone una opcin para el empleo de la repeticin selectiva
en lugar del protocolo de regresar n. Introdujo los NACK, para permitir que
receptor solicite un segmento (o segmentos) especfico.
Multiplexacin
en el Protocolo
TCP
Multiplexacin en TCP

Se utiliza el nmero de puerto (origen o destino) como en UDP. Puede


valer de 0 a 65535.
Como en UDP la combinacin de direccin IP y puerto identifica un
socket: 147.156.1.43:80
Una conexin TCP queda especificada por los dos sockets que se
comunican: IP-puerto origen, IP-puerto destino
Dos conexiones TCP simultneas no pueden coincidir en los cuatro
valores (en ese caso seran la misma conexin)
Como en UDP los puertos 0 a 1023 estn reservados para procesos con
privilegios (puertos bien conocidos).
Multiplexacin en TCP
Conexin de un cliente a un Servidor Web
Conexin simultnea de un host a dos Servidores Web
Conexin desde dos PC a un mismo Servidor Web
Dos conexiones desde una PC a un Servidor Web y
POP3, ambos en el mismo host
Dos conexiones diferentes del mismo ordenador al
mismo Servidor Web
Conexin cruzada cliente-servidor Web
Comando netstat

Nos permite saber que conexiones TCP tenemos establecidas y que


sockets la forman en el extremo local y el remoto.
Tambin nos permite averiguar que puertos tenemos en modo
LISTEN, es decir abiertos.
Una forma tpica de proteccin de los cortafuegos es bloquear puertos
innecesarios, es decir no dejar pasar paquetes cuyo nmero de puerto
de destino no sea alguno de los servicios abiertos.
Comando netstat en un host

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
Conexin /
Desconexin
del Protocolo
TCP
Un protocolo de Transporte simple
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 aparecer nunca en una conexin normal.
Una sesin TCP sencilla
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: El cliente enva al servidor una invitacin a conectar.


(cliente) Decimos que realiza un active open

Cuando recibe la invitacin el servidor devuelve una Segmento 2:


respuesta al cliente aceptando. Efecta un passive open (servidor)

Al recibir la respuesta el cliente considera establecida la


Segmento 3: conexin y enva un tercer mensaje en el que acusa recibo del
(cliente) anterior

El servidor considera establecida la conexin cuando recibe este tercer mensaje


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 espria.
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.
Establecimiento de una conexin TCP
Establecimiento de una conexin TCP
Host 1 Host 2
(Transmisor) (Receptor)

SYN (SEQ
Tiempo = x)

SYN (SEQ
= y, ACK
= x+1)

SYN (SEQ
= x+1, AC
K= y+1)
Administracin de ventanas en TCP
Transmisor Receptor Buffer del receptor

La aplicacin 0 4K
2 K SE Q
hace una escritura =0 Vaco
de 2K
= 204 8 2K
WI N
K = 2 048
La aplicacin AC
hace una escritura
de 3K 2K SEQ = 20
4 8
Transmisor Lleno
bloqueado = 40 9 6 W IN = 0
ACK La aplicacin lee 2K
6 W IN = 2 0 48
El transmisor ACK = 409
2K
puede enviar
hasta 2K 1K SEQ = 4
0 96 1K 2K
RPC
Remote
Procedure Call
RPC (Remote Procedure Call)

Es un estndar desarrollado por Sun Microsystems y usado por


muchos distribuidores de sistemas UNIX.
Es una interfaz de programacin de aplicacin (API) disponible para el
desarrollo de aplicaciones distribuidas.
Permite que los programas llamen a subrutinas que se ejecutan en un
sistema remoto. El programa llamador enva un mensaje de llamada al
proceso servidor y espera por un mensaje de respuesta.
La llamada incluye los parmetros del procedimiento y la respuesta los
resultados.
RPC (Remote Procedure Call)

El RPC de Sun consta de las siguientes partes:


RPCGEN: Un compilador que toma la definicin de la interfaz de un
procedimiento remoto.
XDR ("eXternal Data Representation"): Una forma estndar de
codificar datos para que sean transportables entre distintos sistemas.
Esto significa que tanto el cliente como el servidor han de realizar algn tipo
de traduccin.
Una biblioteca "run-time".
RPC (Remote Procedure Call)

El concepto de RPC se puede simplificar del modo siguiente:


El proceso llamador enva un mensaje de llamada y espera por la
respuesta.
En el lado del servidor un proceso permanece dormido a la espera de
mensajes de llamada.
Cuando llega una llamada, el proceso servidor extrae los parmetros
del procedimiento, calcula los resultados y los devuelve en un mensaje
de respuesta.
RPC (Remote Procedure Call)

Mensaje de llamada de RPC


El mensaje de llamada de RPC consta de varios campos:
1) Nmeros de programa y de procedimiento.
2) Campos de autentificacin.
3) Parmetros de los procedimientos.
Remote Procedure Call (RPC)

Mensaje de respuesta de RPC


Existen diversas respuestas, dependiendo del tipo de accin a tomar:
SUCCESS: los resultados del procedimiento se le devuelven al cliente.
RPC_MISMATCH: el servidor est ejecutando una versin de RPC
distinta de la del llamador.
AUTH_ERROR: autentificacin de usuario fallida.
PROG_MISMATCH: el programa no est disponible, la versin
solicitada no existe o el procedimiento no est disponible.
Trabajo Independiente

Debido a que el protocolo UDP no es confiable, no sirve como


transporte para la implementacin del protocolo RPC...
Diga si es cierto esta afirmacin y argumente su respuesta.
Conclusiones

La capa de transporte es la clave para entender los protocolos en capas.


Esta proporciona un servicio sin conexiones (UDP)
y otro, el ms importante (TCP), que consiste en una corriente de bytes
punto a punto, confiable y orientada a conexiones desde el
transmisor hasta el receptor.
Al cual se accede a travs de primitivas de servicio que permite establecer,
usar y liberar conexiones.
Los protocolos de transporte deben ser capaces de administrar
conexiones a travs de redes no confiables.
Conclusiones

El establecimiento de conexiones se complica por la existencia de


segmentos duplicados retardados que pueden reaparecer en momentos
inoportunos. Por lo que se requieren protocolos de acuerdo de tres vas.
La capa de transporte debe manejar todas las primitivas de servicio,
administrar conexiones y temporizadores y asignar y usar crditos.
El protocolo principal de Internet es el TCP.
Cada segmento comienza con una cabecera de formato fijo de 20 bytes.
Esta cabecera puede ir seguida de Opciones de cabecera.
Longitud mxima de un segmento TCP est acotado por: 65535 20 20 = 65
515 Bytes
Conclusiones

La mayora de las aplicaciones requieren un protocolo extremo-a-


extremo seguro y por tanto utilizan TCP.
El UDP es ms sencillo y rpido que TCP, pero menos seguro, pues no
puede recuperar paquetes extraviados durante una transmisin
producida a travs de la red entre dos computadoras remotas.
El motivo por el cual hay aplicaciones que usan UDP en vez de TCP es
que, al ser ms rpido, congestiona menos la red.
Conclusiones
MIM
E
HTT SMT TELN SNM
BGP FTP RIP
P P ET P

TCP UDP
ICM IGM OSP RSV
P P F P

IP

BGP = Protocolo de pasarela frontera. ICMP = Protocolo de mensajes de control en Internet


FTP = Protocolo de transferencia de ficheros OSPF = Protocolo abrir primero el camino ms corto
HTTP = Protocolo para la transferencia de hipertexto RSVP = Protocolo de reserva de recursos
SMTP = Protocolo sencillo de transferencia de e-mail TCP = Protocolo de control de transmisin
SNMP = Protocolo sencillo de gestin de redes UDP = Protocolo de datagrama de usuario
MIME = Extensiones multipropsito de e-mail en Internet IP = Protocolo de Internet
Gracias Eso es todo.
Alguna pregunta?

Vous aimerez peut-être aussi