Na arquitectura TCP/IP, inclúense dous protocolos de transporte: TCP (Transmission Control Protocol) e UDP (User Datagram Protocol).
A diferencia fundamental é que TCP é un protocolo orientado a conexión e fiable, mentres que UDP é non orientado a conexión e non fiable. Vexamos que significa isto:
1.Orientado a conexión e non orientado a conexión:
- Un protocolo orientado a conexión establece unha conexión cada vez que vai a realizar unha comunicación entre un emisor e un receptor. Desta forma o emisor e o receptor póñense de acordo antes de iniciar a comunicación e establecen unha numeración que lles permite identificar a cada paquete e comprobar se algún paquete non é recibido ou se recibe en distinta orde ao emitido. Cando rematan a comunicación, o emisor e receptor deben pechar a conexión.
- Pola contra, un protocolo non orientado a conexión non establece ningunha conexión antes dunha comunicación, senón que os equipos comunican directamente cando o precisan. A cambio, non se garante que se poidan perder paquetes ou que cheguen desordenados ó nivel de aplicación.
2.Fiable e non fiable:
- Un protocolo fiable garante que os paquetes se reciben libres de erros na orden na que foron emitidos.
- Un protocolo non fiable non garante que os paquetes poidan ter erros.
Por tanto, TCP é un protocolo robusto e fiable, mentres que UDP é moito máis sinxelo, pero non realiza ningún control de erros. Isto nos pode facer pensar que non ten sentido ter un protocolo como UDP, ou que non é utilizado, pero isto non é así; existen varias razóns para usar UDP:
- Naqueles casos nos que o protocolo de rede xa garante unha transmisión libre de erros.
- En comunicacións en tempo real, nas que se poden tolerar unha certa taxa de erros na transmisión (por exemplo, en transmisión de son ou vídeo).
- Cando só se quere enviar un paquete illado de orixe a destino, e non é critica a recepción do mesmo.
Hai que ter en conta que o protocolo UDP ten a vantaxe de ser máis simple e polo tanto máis rápido que TCP, xa que o establecemento e peche da conexión e un proceso custoso que consume tempo e recursos na transmisión. A continuación móstranse as cabeceiras dos dous protocolos, e pódese observar o menor número de campos en UDP:
Cabeceira de TCP
+ | Bits 0 - 3 | 4 - 7 | 8 - 15 | 16 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Puerto Origen | Puerto Destino | ||||||||||||||||||||||||||||||
32 | Número de Secuencia | |||||||||||||||||||||||||||||||
64 | Número de Acuse de Recibo (ACK) | |||||||||||||||||||||||||||||||
96 | longitud cabecera TCP | Reservado | Flags | Ventana | ||||||||||||||||||||||||||||
128 | Suma de Verificación (Checksum) | Puntero Urgente | ||||||||||||||||||||||||||||||
160 | Opciones + Relleno (opcional) | |||||||||||||||||||||||||||||||
224 | Datos |
Cabeceira de UDP
+ | Bits 0 - 15 | 16 - 31 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Puerto origen | Puerto destino | ||||||||||||||||||||||||||||||
32 | Longitud del Mensaje | Suma de verificación | ||||||||||||||||||||||||||||||
64 | Datos |
Tanto en TCP como en UDP, establécense 16 bits para os números de portos, co cal se poden direccionar ata 65.536 portos. Destes portos, os que van ata o 1023 están reservados (ver lista) pola IANA para aplicacións e servizos de rede estándares, mentres que os maiores a 1024 son libres e os pode utilizar calquera programa de usuario.
Ao par formado por unha dirección IP e un número de porto (separados por dous puntos) se lle chama conector ou socket. Por exemplo, 10.4.1.1:80 se corresponde co porto 80 do equipo con dirección IP 10.4.1.1.