Clúster de protocolo: análisis TCP: conceptos básicos

Introduccion

En este artículo, aprenderemos sobre el protocolo TCP descrito en RFC793 del RFC. Esto será diferente del TCP que generalmente se describe en libros en redes de computadoras. Pero deben estar unificados y no entrarán en conflicto entre sí.

Formato de mensaje

Sin lugar a dudas, primero tenemos que describir el formato de los paquetes TCP.

El formato estipulado en el RFC es el siguiente:
Inserte la descripción de la imagen aquí
el significado de cada campo y su valor:
aquí presentamos primero brevemente, la descripción detallada posterior del propósito de cada campo

  1. Puerto de origen: 16 bits. Marque el número de puerto utilizado por el remitente del paquete TCP para enviar los datos
  2. Puerto de destino: 16 bits. Marque el número de puerto utilizado por el destinatario del paquete TCP para recibir el paquete
  3. Número de secuencia: 32 bits. Representa el número de secuencia del primer byte de datos en el paquete TCP actual. Hay una excepción. Cuando el paquete actual contiene la marca SYN, el número de secuencia en el paquete actual representa el número de secuencia inicial (secuencia inicial número, ISN), el número de serie del primer byte será ISN + 1
  4. Número de acuse de recibo: 32 bits. Cuando se establece el indicador ACK, este campo indica el número de secuencia del siguiente segmento de datos que el destinatario espera recibir. (Cuando se establece una conexión TCP, este campo siempre se incluirá)
  5. Desplazamiento de datos: 4 bits. Identifica el desplazamiento de datos válido real contenido en el paquete TCP actual. La unidad es de 32 bits, que es de 4 bytes.
  6. Reservado: 6 bits
  7. Bits de control: 6 bits.
    • URG: campo puntero urgente significativo
    • ACK: campo de reconocimiento significativo
    • PSH: función de empuje
    • RST: restablecer la conexión
    • SYN: sincronizar números de secuencia
    • FIN: no más datos del remitente
  8. Ventana: 16 bits. Representa la cantidad de datos que el receptor actual puede aceptar (según el número de reconocimiento en el encabezado TCP actual)
  9. Suma de comprobación: 16 bits.
  10. Puntero urgente: 16 bits.
  11. Opciones: longitud variable.
  12. Relleno: longitud variable El efecto es expandir la longitud del paquete TCP a un múltiplo entero de 32. El valor del relleno siempre es 0 a más de 0.

Terminología

Antes de describir el comportamiento de TCP en detalle, necesitamos introducir alguna terminología, lo que hará que la descripción posterior sea más sencilla y comprensible.

Mantener una conexión TCP requiere registrar una serie de estados de conexión. Suponemos que existe una estructura de datos llamada TCB (Bloque de control de transmisión). Esta estructura necesita almacenar la siguiente información relacionada con la conexión: número de socket local / remoto, seguridad, prioridad, envío / El puntero del búfer del receptor, el puntero de la cola de retransmisión y la información actual del segmento TCP. Además, hay mucha información adicional.

Enviar variables de secuencia

SND.UNA  - send unacknowledged
SND.NXT  - send next
SND.WND  - send window
SND.UP   - send urgent pointer
SND.WL1  - segment sequence number used for last windows update
SND.WL2  - segment acknowldgment number used for last window update
ISS      - initial send sequence number

Aquí hay una imagen para describir la secuencia de envío.

Enviar espacio de secuencia
Inserte la descripción de la imagen aquí

  1. El estado de los datos cuyo número de serie es menor que SND.UNA es: El ACK correspondiente ha sido enviado y recibido. Corresponde al párrafo 1 en la figura
  2. El estado de los datos cuyo número de serie se encuentra en (SND.UNA, SND.NEXT) es: Se ha enviado pero no ha recibido el ACK correspondiente. Corresponde al párrafo 2 de la figura
  3. El número de serie se encuentra en el estado de los datos de [SND.NEXT, SND.UNA + SND.WND): indica los números de serie disponibles y los datos enviados a continuación se asignarán a estos números de serie. En correspondencia con el párrafo 3 de la figura
  4. El número de serie es mayor que SND.UNA + SND.WND no está disponible en el estado actual. Corresponde al párrafo 4 en la figura
  5. El segmento 2 marca la ventana de envío actual

Recibir variables de secuencia

RCV.NXT - receive next
RCV.WND - receive window
IRS     - initial receive sequence nubmer

Aquí hay una imagen para describir la secuencia de recepción.

Recibir espacio de secuencia
Inserte la descripción de la imagen aquí

  1. El estado de los datos cuyo número de serie es menor que RCV.NXT es: Se ha recibido y enviado el ACK correspondiente. Corresponde al párrafo 1 en la figura
  2. El número de serie cuyo número de serie está en (RCV.NXT, RCV.NXT + RCV.WND) es el número de serie de los datos que se espera recibir. Corresponde al párrafo 2 en la figura
  3. Los números de serie mayores que RCV.NXT + RCV.WND no están disponibles en el estado actual. Corresponde al párrafo 3 en la figura
  4. El segmento 2 marca la ventana de recepción actual

Segmento Actual Variable

SEG.SEQ - segment sequence number
SEG.ACK - segment acknowldgment number
SEG.LEN - segment length
SGE.WND - segment window
SEG.UP  - segment urgent pointer
SEG.PRC - segment precedence value

Estado

En el ciclo de vida de una conexión TCP cambiará entre diferentes estados, que son:

  1. ESCUCHAR: indica que está esperando una solicitud de conexión remota
  2. SINCRONIZADO: indica que se ha enviado la solicitud de conexión, esperando la solicitud de conexión de la otra parte
  3. SINCRONIZADO: indica que se ha enviado una solicitud de conexión y se ha recibido la solicitud de conexión de la otra parte, y está esperando un ACK para confirmar el establecimiento de la conexión
  4. ESTABLECIDO: indica que se ha establecido una conexión TCP y puede recibir y enviar datos en la conexión actual
  5. FIN-WAIT-1: indica que está esperando que la otra parte envíe una solicitud de cierre de conexión, o que la otra parte envíe un ACK correspondiente a la solicitud de cierre de conexión que acaba de enviar.
  6. FIN-WAIT-2: indica que está esperando que la otra parte envíe una solicitud para cerrar la conexión
  7. CLOSE-WAIT: indica que está esperando que el usuario local cierre la solicitud de conexión
  8. CLSING: indica que está esperando que la otra parte envíe un ACK de solicitud de cierre de conexión.
  9. ÚLTIMO ACK: está esperando que la otra parte envíe un ACK correspondiente a la solicitud de cierre de conexión que acaba de enviar.
  10. TIME-WAIT: indica que está esperando un momento para asegurarse de que la otra parte reciba el ACK de nosotros para cerrar la solicitud de conexión
  11. CERRADO: indica que la conexión actual ha sido completamente cerrada

Use un diagrama para describir el cambio entre estos estados. Tenga en cuenta que este es solo un diagrama simplificado y no cubre las transiciones de estado especificadas en todo el protocolo.
Inserte la descripción de la imagen aquí

Como primer artículo del protocolo TCP, este artículo primero presenta brevemente los conceptos básicos requeridos en los siguientes artículos, y luego usa un artículo especial para describir el número de secuencia, establecer una conexión, cerrar la conexión, enviar / recibir datos y otros procesos.

¡FIN!

27 artículos originales publicados · 31 elogiados · 40,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/zhaoruixiang1111/article/details/105602840
Recomendado
Clasificación