[Red informática] -TCP-Descripción general

Descripción general de TCP

Dirección de documento RFC
El protocolo TCP es un protocolo ubicado en la capa de transporte del conjunto de protocolos TCP/IP.

Arquitectura TCP/IP de cuatro capas

Puede ver los dos protocolos principales de la capa de transporte excepto TCP ( Protocolo de control de transmisión Transmisión\ Control\ ProtocoloT r an s mi s i o n C o n t ro l P rot o l   , Protocolo de control de transmisión) También existe un UDP ( Protocolo de datagramas de usuario Protocolo de datagramas de usuarioProtocolo de datagrama de usuario , Protocolo de datagrama de usuario ) _ _

¿Cuál es la diferencia entre TCP y UDP?

  1. conectar: TCP proporciona servicios de transmisión de datos confiables y orientados a la conexión , mientras que UDP proporciona servicios de transmisión de datos sin conexión y de mejor esfuerzo y no garantiza la confiabilidad de la transmisión.
  2. Objetos de servicio: TCP es un servicio de dos puntos uno a uno, es decir, una conexión tiene solo dos puntos finales; UDP admite comunicación interactiva uno a uno, uno a muchos y muchos a muchos.
  3. fiabilidad: TCP entrega datos de manera confiable y los datos pueden estar libres de errores, no perderse, no repetirse y llegar a pedido; UDP entrega datos con el mejor esfuerzo y no garantiza una entrega confiable de datos.
  4. control de congestión: TCP tiene mecanismos de control de congestión y control de flujo para garantizar la seguridad y confiabilidad de la transmisión de datos; UDP no tiene ningún mecanismo relevante y su tasa de envío no se verá afectada incluso si la red está muy congestionada.
  5. cabeza arriba: El encabezado TCP es largo y requiere 20 bytes cuando no se utiliza el campo "opción" ; el encabezado UDP tiene solo 8 bytes y es fijo.
  6. método de transferencia: TCP es una transmisión de flujo orientada a bytes, sin límites, pero garantiza el orden y la confiabilidad de la transmisión de datos. Su unidad de transmisión de datos es un segmento de mensaje; UDP se envía paquete por paquete y tiene límites, pero la pérdida y el desorden de paquetes pueden ocurren, y la unidad de transmisión es el datagrama de usuario.

Escenarios de aplicación respectivos:

  • TCP: dado que TCP está orientado a la conexión, puede garantizar la entrega confiable de datos. A menudo se usa para: HTTP y HTTPS para la World Wide Web; FTP para transferencia de archivos; SMTP (Protocolo simple de transferencia de correo) para transferencia de correo electrónico; TELNET (Protocolo de terminal remoto) para acceso a terminal remoto
  • UDP: UDP no requiere conexión y puede enviar datos en cualquier momento. No tiene control de congestión y no garantiza confiabilidad, por lo que se suele utilizar para: comunicaciones con un número total pequeño de paquetes, como la conversión de nombres de dominio a DNS. , gestión de red SNMP (Protocolo simple de gestión de red); sin embargo, debido a su fuerte naturaleza en tiempo real, es adecuado para aplicaciones en tiempo real, como telefonía IP, videoconferencias en tiempo real y otros escenarios. Este tipo de escenario tiene Grandes requisitos en tiempo real y el impacto de perder algunos fotogramas en los datos generales no es grande.

Se puede ver que el punto de medición puede considerar la cantidad de datos transmitidos, el tamaño de los requisitos en tiempo real y el tamaño de los requisitos de confiabilidad de los datos. Algunos escenarios de aplicación no significan que solo uno
de los dos protocolos, como Se utilizará DNS. UDP es suficiente, pero también puede haber situaciones en las que necesite acceder a un servidor de nombres de dominio que esté lejos, en cuyo caso es posible que necesite utilizar TCP.

Modelo de servicio de TCP

TCP proporciona un servicio de flujo de bytes confiable y orientado a la conexión , es decir, dos aplicaciones que utilizan TCP deben establecer una conexión TCP antes de que las dos partes puedan intercambiar datos .

En la abstracción del flujo de bytes:

  1. TCP no inserta automáticamente indicadores de registro ni límites de mensajes . Cuando ambas partes de la conexión leen y escriben datos, el propio punto final selecciona el número de lecturas o escrituras y el tamaño de cada lectura o escritura.
  2. TCP no interpreta el contenido de los bytes en el flujo de bytes y no sabe si los bytes de datos que se intercambian son datos binarios, caracteres ASCII u otra cosa. La interpretación del flujo de bytes depende únicamente de la aplicación del punto final conectado.

Fiabilidad TCP

TCP logra una transmisión confiable a través de sumas de verificación, números de secuencia, respuestas de confirmación, administración de conexiones, retransmisión de tiempo de espera , mecanismo de ventana deslizante, control de flujo , control de congestión y otros mecanismos.

  • Debido a que TCP proporciona una interfaz de flujo de bytes, debe convertir un flujo de bytes de una aplicación de envío en paquetes que IP pueda transportar. Esto se denomina paquete . Estos paquetes contienennúmero de serie, el número de secuencia representa el desplazamiento de bytes del primer byte de cada paquete en todo el flujo de datos , lo que permite que el paquete tenga un tamaño variable durante la transmisión y permite el reensamblaje del paquete . El bloque de datos transmitido de TCP a IP se llama segmento .segmento ) _ _ _ _ _
  • Si un acarreo no es válidosuma de controlCuando llega el segmento, TCP lo descartará y no enviará ningún acuse de recibo del paquete descartado.
  • Cuando TCP envía un grupo de segmentos de mensaje, establecerá un temporizador de retransmisión y luego esperará a que la otra parte envíe un ACK de confirmación de que el segmento de mensaje se ha recibido con éxito . Si no se recibe un ACK a tiempo, el segmento de mensaje correspondiente seráRetransmisión. Cuando TCP recibe datos del otro extremo de la conexión, envía un ACK. Sin embargo, TCP utiliza acuse de recibo acumulativo , es decir, un ACK que indica el número de byte N, lo que implica que todos los bytes hasta el número de secuencia N (sin incluir N) se han recibido con éxito , lo que trae ciertos problemas a la pérdida de ACK. perdido, es muy probable que el ACK posterior sea suficiente para confirmar el segmento anterior, evitando el impacto de la pérdida de ACK anterior.
  • TCP proporciona comunicación full-duplex , Los datos pueden fluir en dos direcciones y las dos direcciones son independientes entre sí. Los segmentos en cada dirección envían sus propios ACK, incluidos anuncios en ventanas para lograr la dirección opuesta.control de flujo
  • usarnúmero de serie, un receptor TCP puede descartar segmentos duplicados y registrar segmentos que lleguen en orden desordenado . Debido a que TCP utiliza IP para entregar sus segmentos de mensajes, IP no proporciona las funciones de deduplicación y ordenamiento correcto . TCP es un protocolo de flujo de bytes y nunca enviará datos a la aplicación receptora en un orden desordenado, por lo que el extremo receptor se verá obligado a guardar los datos con números de secuencia grandes primero y no entregárselos a la aplicación hasta que se completen las pequeñas partes faltantes. en el medio se recibe el segmento del mensaje con el número de secuencia, llena el espacio en todo el flujo de bytes y luego continúa enviando los datos del flujo de bytes.

Encabezado TCP y encapsulación

La encapsulación de TCP en un datagrama IP es la siguiente:
Encapsulación TCP en datagramas IP

El encabezado TCP se muestra en la figura:
encabezado TCP

  1. Cada encabezado TCP contiene un puerto de origen y un puerto de destino . Estos dos valores se combinan con la dirección IP de origen y la dirección IP de destino en el encabezado IP . Esta tupla de cuatro representa de forma única cada conexión . La combinación de una dirección IP y un puerto a veces se denomina punto final .punto final ) o zócalo (zócalozócalo _ _ _calcetín ) _ _ _

  2. El número de secuencia es un número sin signo de 32 bits. Cada segmento de mensaje corresponde a un número de secuencia. Representa el número de secuencia del primer byte en los datos del segmento de mensaje, porque TCP dará el número de secuencia entre las dos aplicaciones. Cada A un byte en el flujo de datos de comunicación se le asigna un número de secuencia (el flujo de datos considerado aquí solo considera una dirección, y las dos direcciones de una conexión son independientes entre sí). El número de secuencia llega a 2 32 - 1 y luego regresa a 0

  3. El valor contenido en el número de confirmación ACK esEl siguiente número de secuencia que el remitente de este número de confirmación espera recibir,TambiénEl número de secuencia del último byte de datos recibido correctamente se incrementa en 1También se puede entender que para la parte comunicante que envía este ACK, se han recibido todos los números de secuencia anteriores a este número de secuencia (excluido este número de secuencia).

    Este campo solo es válido cuando el campo de bit ACK está habilitado, y este campo de bit ACK generalmente está en una conexión, excepto para el segmento de mensaje inicial y el último segmento de mensaje. Se habilitará en otros segmentos.

    Dado que ACK es parte del encabezado del segmento, enviar un ACK cuesta lo mismo que enviar cualquier mensaje.

  4. El campo de longitud del encabezado proporciona la longitud del encabezado. Debido a que la longitud del campo de selección en el encabezado es variable excepto la parte básica, que está fijada en 20 bytes, este campo de longitud del encabezado es necesario para conocer la longitud del encabezado completo.

    El campo de longitud del encabezado ocupa un total de 4 bits y su valor está en unidades de 32 bits . Es decir, 0000 indica que la longitud del encabezado es 0 bits, 0001 indica que la longitud del encabezado es 32 bits, 0010 indica que el La longitud del encabezado es de 64 bits... por lo que el valor máximo de 1111 indica una longitud de 60 bytes, es decir, la longitud máxima del encabezado TCP solo puede ser de 60 bytes. El encabezado TCP básico tiene una longitud de 20 bytes, lo que significa que el campo de opción puede tener hasta 40 bytes. También se debe a que el campo de longitud del encabezado está en unidades de 32 bits, por lo que la longitud del encabezado TCP debe ser un múltiplo de 32 bits.

  5. Reservado El campo está reservado para uso futuro y actualmente está configurado en 0.

  6. Se definen 8 bits de control en el encabezado :
    – CWR: Disminución de la ventana de congestión (indica que el remitente ha reducido su velocidad de envío, consulte la sección Control de congestión de TCP)
    – ECE: Eco de ECN (indica que el remitente ha recibido una notificación de congestión anterior, consulte la sección Control de congestión de TCP)
    – URG: Urgente (el campo de puntero urgente es válido, rara vez se usa)
    – ACK: Acuse de recibo (el campo de número de confirmación es válido y generalmente se habilita después de que se establece la conexión)
    – PSH: Push (el receptor debería enviar estos datos a la aplicación lo más pronto posible, pero esta función no está implementada ni utilizada de manera confiable)
    – RST: restablecer la conexión (la conexión se cancela, a menudo debido a un error)
    – SYN: el número de secuencia de sincronización usado para inicializar una conexión
    – FIN: el remitente del segmento ha terminado de enviar datos a la otra parte

  7. El control de flujo TCP se logra cuando cada punto final anuncia un tamaño de ventana utilizando el campo de tamaño de ventana . El tamaño de la ventana es el número de bytes, a partir del que el receptor quiere recibir. Dado que la longitud del campo es de solo 16 bits, el tamaño máximo de ventana solo puede ser 65535 bytes , lo que limita el rendimiento de TCP.

    Pero hay unozoom de ventanaOpción para permitir el escalamiento de este valor, lo que permite ventanas más grandes y modernización del rendimiento para redes de alta velocidad y alta latencia.

  8. El campo de suma de verificación lo calcula y lo guarda el remitente, y luego lo verifica el receptor.

  9. El campo Puntero urgente solo es válido si el bit URG está habilitado. Su valor es un desplazamiento positivo y el valor obtenido después de agregar el campo de número de secuencia del segmento del mensaje es el número de secuencia del último byte de datos urgentes.

  10. Campos de opciones :
    >>> La opción más común es el tamaño máximo de segmento.MSS( Tamaño máximo del segmento Máximo\ Tamaño del segmento\Tamaño máximo del segmento ) . _ _ _ _ _ _ _ _ _ _   _ Cada punto final de una conexión normalmente envía el primer segmento, es decirsegmento SYNEspecifique esta opción, MSS especifica el valor máximo del segmento de mensaje que el remitente de esta opción espera recibir en la dirección opuesta
    >>> Además, existen opciones como SACK, marca de tiempo y escalado de ventana.

Endianidad


El problema que se analiza en el orden de bytes del artículo de referencia es que, cuando se almacenan datos que constan de más de un byte, el byte de orden superior debe colocarse en una dirección baja, el byte de orden inferior debe colocarse en una dirección alta, o el byte de orden alto debe colocarse en una dirección baja. -ordenar que el byte se coloque en una dirección alta :

Específicamente, se puede dividir en orden de bytes Big Endian y orden de bytes Little Endian. Big Endian significa que los bytes de orden superior se colocan en direcciones bajas y los bytes de orden inferior se colocan en direcciones altas; Little Endian es lo mismo que en el contrario

Una sola computadora puede elegir libremente si quiere elegir big endian o little endian, lo que se denomina orden de bytes del host.

El surgimiento de la red requiere comunicación entre varias computadoras. En este momento, es necesario especificar el orden de bytes utilizado para la comunicación para garantizar que el contenido de la comunicación se analice correctamente. En TCP, RFC 1700 especifica el uso del orden de bytes " big endian " como orden de bytes de la red . Otras computadoras que no usan el orden de bytes big endian deben convertir su propio orden de bytes del host al orden de bytes de la red al enviar datos (es decir, "big-endian"). endian" orden de bytes); los datos recibidos se convierten luego a su propio orden de bytes del host. De esta manera, el orden de los bytes no tiene nada que ver con la CPU y el sistema operativo, y se logra la estandarización de la comunicación de la red.

Supongo que te gusta

Origin blog.csdn.net/Pacifica_/article/details/123929280
Recomendado
Clasificación