Está en la página 1de 9

Puertos y zcalos

Puertos

Cada proceso que se desea comunicar con otro se identifica en la pila de protocolos
TCP/IP con uno o ms puertos. Un puerto es un nmero de 16 bits, empleado por un
protocolo host a host para identificar a que protocolo del nivel superior o programa de
aplicacin se deben entregar los mensajes recibidos.

Como algunas aplicaciones son ya de por s protocolos estandarizados, como TELNET y
FTP, emplean el mismo nmero de puerto en todas las implementaciones TCP/IP. Estos
puertos "asignados" se conocen como puertos bien conocidos o Well-Know ports, y a sus
aplicaciones, aplicaciones bien conocidas. (Puede consultar el listado de well-know
ports en el siguiente tema).

Estos puertos son controlados y asignados por IANA ("Internet Assigned Numbers
Authority") y en la mayora de los sistemas slo los puede utilizar los procesos del sistema
o los programas que ejecutan usuarios privilegiados. Ocupan nmero de puerto
comprendidos en el rango de 0 a 1023. Los puertos con nmeros en el rango de 1024 a
65535 no los controla IANA y en la mayor parte de los sistemas los pueden usar los
programas de usuario.

La confusin que se produce cuando dos aplicaciones distintas intentan usar los mismos
puertos en un host se evita haciendo que soliciten un puerto disponible a TCP/IP. Como
este nmero se asigna dinmicamente, puede ser diferente en cada ejecucin de una
misma aplicacin.
Zcalos (Sockets)

En primer lugar, conviene definir los siguientes trminos:
Un zcalo es un tipo especial de descriptor de fichero que un proceso usa para
solicitar servicios de red al sistema operativo.
Una direccin de zcalos es la tripleta:{protocolo, direccin local, proceso local }

En TCP/IP, por ejemplo:

{tcp, 193.44.234.3, 12345}
Una conversacin es el enlace de comunicaciones entre dos procesos.
Una asociacin es la quntupla que especifica completamente los dos procesos
comprendidos en una conexin:

{protocolo, direccin local, proceso - local, direccin exterior, proceso exterior}

En la pila TCP/IP, por ejemplo:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

podra ser una asociacin vlida.

Una medio asociacin es: {protocolo, direccin - local, proceso local } o
{protocolo, direccin exterior, proceso exterior}

que especifican cada una de las mitades de la conexin.

La medio asociacin se denomina tambin zcalo o direccin de transporte. Es decir, un
zcalo es un punto terminal para la comunicacin que puede ser nombrado y direccionado
en una red.

La interfaz del zcalo es una de tantas APIs con los protocolos de comunicacin. Se
introdujo por primera vez en el UNIX BSDD 4.2. Aunque no ha sido estandarizada, se ha
convertido en un estndar de facto.


Palabra clave Puerto Descripcin


0/tcp Reserved

0/udp Reserved
tcpmux 1/tcp TCP Port Service Multiplexer
rje 5/tcp Remote Job Entry
echo 7/tcp/udp Echo
discard 9/tcp/udp Discard
systat 11/tcp/udp Active Users
daytime 13/tcp/udp Daytime
qotd 17/tcp/udp Quote of the Day
chargen 19/tcp/udp Character Generator
ftp-data 20/tcp File Transfer [Default Data]
ftp 21/tcp File Transfer [Control]
telnet 23/tcp Telnet
smtp 25/tcp Simple Mail Transfer
time 37/tcp/udp Time
nameserver 42/tcp/udp Host Name Server
nicname 43/tcp/udp Who Is
domain 53/tcp/udp Domain Name Server
bootps 67/udp/udp Bootstrap Protocol Server
tftp 69/udp Trivial File Transfer
gopher 70/tcp Gopher
finger 79/tcp Finger
www-http 80/tcp World Wide Web HTTP
dcp 93/tcp Device Control Protocol
supdup 95/tcp SUPDUP
hostname 101/tcp NIC Host Name Server
iso-tsap 102/tcp ISO-TSAP
gppitnp 103/tcp Genesis Point-to-Point Trans Net
rtelnet 107/tcp/udp Remote Telnet Service
pop2 109/tcp Post Office Protocol - Version 2
pop3 110/tcp Post Office Protocol - Version 3
sunrpc 111/tcp/udp SUN Remote Procedure Call
auth 113/tcp Authentication Service
sftp 115/tcp/udp Simple File Transfer Protocol
nntp 119/tcp Network News Transfer Protocol
ntp 123/udp Network Time Protocol
pwdgen 129/tcp Password Generator Protocol
netbios-ns 137/tcp/udp NETBIOS Name Service
netbios-dgm 138/tcp/udp NETBIOS Datagram Service
netbios-ssn 139/tcp/udp NETBIOS Session Service
snmp 161/udp SNMP
snmptrap 162/udp SNMPTRAP
irc 194/tcp Internet Relay Chat Protocol

UDP
UDP es un protocolo estndar, y su nmero STD es 6. El RFC 768 - "User Datagram
Protocol" describe UDP. Su status es recomendado, pero en la prctica cualquier
implementacin de TCP/IP que no se use exclusivamente para el encaminamiento incluye
UDP.
Para IP, UDP es bsicamente un interfaz de aplicacin. No aade fiabilidad, control de
flujo o recuperacin de errores a IP. Simplemente sirve como "multiplexor/ demultiplexor"
para enviar y recibir datagramas, usando los puertos para dirigir los datagramas.

Formato del mensaje UDP
0 10 20 30
0 1 2 3 4 5 6 7 8 9 0 1 2 3 3 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Puerto UDP origen Puerto UDP destino
Longitud mensaje UDP Suma verificacin UDP
Datos
...
Puerto UDP de origen (16 bits, opcional). Nmero de puerto de la mquina origen.
Puerto UDP de destino (16 bits). Nmero de puerto de la mquina destino.
Longitud del mensaje UDP (16 bits). Especifica la longitud medida en bytes del
mensaje UDP incluyendo la cabecera. La longitud mnima es de 8 bytes.
Suma de verificacin UDP (16 bits, opcional). Suma de comprobacin de errores del
mensaje. Para su clculo se utiliza una pseudo-cabecera que tambin incluye las
direcciones IP origen y destino. Para conocer estos datos, el protocolo UDP debe
interactuar con el protocolo IP.
Datos. Aqu viajan los datos que se envan las aplicaciones. Los mismos datos que
enva la aplicacin origen son recibidos por la aplicacin destino despus de atravesar
toda la Red de redes.

Hay que ser consciente de que IP y UDP no proporcionan una entrega garantizada, control
de flujo ni recuperacin de errores, as que estos debern ser implementados por la
aplicacin.
Aplicaciones estndar que usan UDP son:
TFTP("Trivial File Transfer Protocol")
DNS("Domain Name System")
RPC("Remote Procedure Call"), usado por el NFS("Network File System")
SNMP("Simple Network Management Protocol")

TCP
El principal propsito de TCP es proporcionar una conexin lgica fiable entre parejas de
procesos. No asume la fiabilidad de los protocolos de niveles inferiores(como IP) por lo
que debe ocuparse de garantizarla.
TCP se puede caracterizar por los siguientes servicios que suministra a las aplicaciones
que lo usan:
Transferencia de datos a travs de un canal
Desde el punto de vista de la aplicacin, TCP transfiere un flujo continuo de
bytes a travs de la red. La aplicacin no ha de preocuparse de dividir los datos en
bloques o en datagramas. TCP se encarga de esto al agrupar los bytes
en segmentos TCP, que se pasan a IP para ser retransmitidos al destino. Adems,
TCP decide por s mismo cmo segmentar los datos y puede enviarlos del modo
que ms le convenga.
A veces, una aplicacin necesita estar segura de que todos los datos pasados a
TCP han sido transmitidos efectivamente al destino. Por esa razn, se define la
funcin "push". Esta funcin mandar todos los segmentos que sigan almacenados
al host de destino. El cierre normal de la conexin tambin provoca que se llame a
esta funcin, para evitar que la transmisin quede incompleta.
Fiabilidad
TCP asigna un nmero de secuencia a cada byte transmitido, y espera una
reconocimiento afirmativo(ACK) del TCP receptor. Si el ACK no se recibe dentro de
un intervalo de timeout, los datos se retransmiten. Como los datos se transmiten en
bloques(segmentos de TCP), al host de destino slo se le enva el nmero de
secuencia del byte de cada segmento.
El TCP receptor utiliza los nmeros de secuencia para organizar los segmentos
cuando llegan fuera de orden, as como para eliminar segmentos duplicados.
Control de flujo
El TCP receptor, al enviar un ACK al emisor, indica tambin el nmero de bytes
que puede recibir an, sin que se produzca sobrecarga y desbordamiento de sus
buffers internos. Este valor se enva en el ACK en la forma del nmero de
secuencia ms elevado que se puede recibir sin problemas. Este mecanismo se
conoce tambin como mecanismo de ventanas y se estudiar ms adelante.
Multiplexacin
Se consigue usando puertos, al igual que en UDP.
Conexiones lgicas
La fiabilidad y el control de flujo descritos ms arriba requieren que TCP inicialice y
mantenga cierta informacin de estado para cada canal. La combinacin de este
estado, incluyendo zcalos, nmeros de secuencia y tamaos de ventanas, se
denomina conexin lgica. Cada conexin se identifica unvocamente por el par de
zcalos del emisor y el receptor.
Full Duplex
TCP garantiza la concurrencia de los flujos de datos en ambos sentidos e la
conexin.
Formato del segmento TCP
Ya hemos comentado que el flujo de bytes que produce una determinada aplicacin se
divide en uno o ms segmentos TCP para su transmisin. Cada uno de estos segmentos
viaja en el campo de datos de un datagrama IP. Para facilitar el control de flujo de la
informacin los bytes de la aplicacin se numeran. De esta manera, cada segmento indica
en su cabecera el primer byte que transporta. Las confirmaciones o acuses de recibo
(ACK) representan el siguiente byte que se espera recibir (y no el nmero de segmento
recibido, ya que ste no existe).
0 10 20 30
0 1 2 3 4 5 6 7 8 9 0 1 2 3 3 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Puerto TCP origen Puerto TCP destino
Nmero de secuencia
Nmero de acuse de recibo
HLEN Reservado Bits cdigo Ventana
Suma de verificacin Puntero de urgencia
Opciones (si las hay) Relleno
Datos
...
Puerto fuente (16 bits). Puerto de la mquina origen. Al igual que el puerto destino es
necesario para identificar la conexin actual.
Puerto destino (16 bits). Puerto de la mquina destino.
Nmero de secuencia (32 bits). Indica el nmero de secuencia del primer byte que
trasporta el segmento.
Nmero de acuse de recibo (32 bits). Indica el nmero de secuencia del siguiente
byte que se espera recibir. Con este campo se indica al otro extremo de la conexin
que los bytes anteriores se han recibido correctamente.
HLEN (4 bits). Longitud de la cabecera medida en mltiplos de 32 bits (4 bytes). El
valor mnimo de este campo es 5, que corresponde a un segmento sin datos (20
bytes).
Reservado (6 bits). Bits reservados para un posible uso futuro.
Bits de cdigo o indicadores (6 bits). Los bits de cdigo determinan el propsito y
contenido del segmento. A continuacin se explica el significado de cada uno de estos
bits (mostrados de izquierda a derecha) si est a 1.
o URG. El campo Puntero de urgencia contiene informacin vlida.
o ACK. El campo Nmero de acuse de recibo contiene informacin vlida, es decir,
el segmento actual lleva un ACK. Observemos que un mismo segmento puede
transportar los datos de un sentido y las confirmaciones del otro sentido de la
comunicacin.
o PSH. La aplicacin ha solicitado una operacin push (enviar los datos existentes
en la memoria temporal sin esperar a completar el segmento).
o RST. Interrupcin de la conexin actual.
o SYN. Sincronizacin de los nmeros de secuencia. Se utiliza al crear una conexin
para indicar al otro extremo cual va a ser el primer nmero de secuencia con el
que va a comenzar a transmitir (veremos que no tiene porqu ser el cero).
o FIN. Indica al otro extremo que la aplicacin ya no tiene ms datos para enviar. Se
utiliza para solicitar el cierre de la conexin actual.
Ventana (16 bits). Nmero de bytes que el emisor del segmento est dispuesto a
aceptar por parte del destino.
Suma de verificacin (24 bits). Suma de comprobacin de errores del segmento
actual. Para su clculo se utiliza una pseudo-cabecera que tambin incluye las
direcciones IP origen y destino.
Puntero de urgencia (8 bits). Se utiliza cuando se estn enviando datos urgentes que
tienen preferencia sobre todos los dems e indica el siguiente byte del
campo Datos que sigue a los datos urgentes. Esto le permite al destino identificar
donde terminan los datos urgentes. Ntese que un mismo segmento puede contener
tanto datos urgentes (al principio) como normales (despus de los urgentes).
Opciones (variable). Si est presente nicamente se define una opcin: el tamao
mximo de segmento que ser aceptado.
Relleno. Se utiliza para que la longitud de la cabecera sea mltiplo de 32 bits.
Datos. Informacin que enva la aplicacin.
Estableciendo una conexin TCP
(Three-way Handshaking)
Antes de que se pueda transferir cualquier dato, se ha de establecer una conexin
entre los dos procesos. Uno de los procesos (normalmente el servidor) lanza una
llamada OPEN pasiva, el otro una llamada OPEN activa. El OPEN pasivo
permanece dormido hasta que otro proceso intenta comunicarse con l a travs de
un OPEN activo.
En la red, se intercambian tres segmentos TCP:


Este proceso completo se conoce como three-way handshake, o acuerdo en tres
fases. Notar que los segmentos TCP intercambiados incluyen los nmeros de
secuencia iniciales de ambas partes, para ser usados en posteriores
transferencias.
El cierre de la conexin se hace de forma implcita enviando un segmento TCP con
el bit FIN activo. Como la conexin es full duplex, el segmento FIN slo cierra la
conexin en un sentido del canal. El otro proceso enviar los datos restantes,
seguidos de un segmento TCP en el que el bit FIN est activo. La conexin se
borra(es decir, la informacin de estado en ambos extremos) una vez que el canal
se ha cerrado en ambos sentidos.

También podría gustarte