* Protocolo de control de transmisión (en inglés Transmisión Control Protocolo o TCP) es uno de los protocolos fundamentales en Internet. Fue creado entre los años 1973 y 1974 por Vint Cerf y Robert Kahn.
* Muchos programas dentro de una red de datos compuesta por redes de computadoras,
pueden usar TCP para crear “conexiones” entre sí a través de las cuales
puede enviarse un flujo de datos. El protocolo garantiza que los datos
serán entregados en su destino sin errores y en el mismo orden en que se
transmitieron. También proporciona un mecanismo para distinguir
distintas aplicaciones dentro de una misma máquina, a través del
concepto de puerto.
- Establecimiento de conexión (3-way handshake)
- Transferencia de datos
- Fin de la conexión.
* Características del TCP
- Permite colocar los segmentos nuevamente en orden cuando vienen del protocolo IP.
- Permite el monitoreo del flujo de los datos y así evita la saturación de la red.
- Permite que los datos se formen en segmentos de longitud variada para "entregarlos" al protocolo IP.
- Permite multiplexar los datos, es decir, que la información que viene de diferentes fuentes (por ejemplo, aplicaciones) en la misma línea pueda circular simultáneamente.
- Por último, permite comenzar y finalizar la comunicación amablemente.
El formato de los datos en TCP
Un segmento TCP está formado de la siguiente manera
* Puertos TCP
Puerto de origen (16 bits): puerto relacionado con la aplicación en curso en la máquina origen.Puerto de destino (16 bits): puerto relacionado con la aplicación en curso en la máquina destino.
Número de secuencia (32 bits): cuando el indicador SYN está fijado en 0, el número de secuencia es el de la primera palabra del segmento actual.
Cuando SYN está fijado en 1, el número de secuencia es igual al número de secuencia inicial utilizado para sincronizar los números de secuencia (ISN).
Número de acuse de recibo (32 bits): el número de acuse de recibo, también llamado número de descargo se relaciona con el número (secuencia) del último segmento esperado y no el número del último segmento recibido.
Margen de datos (4 bits): esto permite ubicar el inicio de los datos en el paquete. Aquí, el margen es fundamental porque el campo opción es de tamaño variable.
Reservado (6 bits): un campo que actualmente no está en uso pero se proporciona para el uso futuro.
Indicadores (6x1 bit): los indicadores representan información adicional:
URG: si este indicador está fijado en 1, el paquete se debe procesar en forma urgente.
ACK: si este indicador está fijado en 1, el paquete es un acuse de recibo.
PSH (PUSH): si este indicador está fijado en 1, el paquete opera de acuerdo con el método PUSH.
RST: si este indicador está fijado en 1, se restablece la conexión.
SYN: el indicador SYN de TCP indica un pedido para establecer una conexión.
FIN: si este indicador está fijado en 1, se interrumpe la conexión.
Ventana (16 bits): campo que permite saber la cantidad de bytes que el receptor desea recibir sin
acuse de recibo.
Suma de control (CRC): la suma de control se realiza tomando la suma del campo de datos del encabezado para poder verificar la integridad del encabezado.
Puntero urgente (16 bits): indica el número de secuencia después del cual la información se torna urgente.
Opciones (tamaño variable): diversas opciones
Relleno: espacio restante después de que las opciones se rellenan con ceros para tener una longitud que sea múltiplo de 32 bits.
* Transferencia de datos
Durante
la etapa de transferencia de datos, una serie de mecanismos claves
determinan la fiabilidad y robustez del protocolo. Entre ellos están
incluidos el uso del número de secuencia para ordenar los segmentos TCP
recibidos y detectar paquetes duplicados, checksums para detectar errores, asentimientos y temporizadores para detectar pérdidas o retrasos y ventanas deslizantes para el control de flujo de datos.