Tabla de contenido
1. Protocolo UDP (Protocolo de datagramas de usuario)
Formato del encabezado del mensaje
2. Protocolo TCP (Protocolo de control de transmisión)
Formato del encabezado del mensaje
Apretón de manos de tres vías al establecer una conexión TCP
Las cuatro ondas de TCP derribando una conexión
3. Número de puerto de la capa de transporte
Algunos números de puerto conocidos
tipo de acuerdo | ¿Está orientado a la conexión? | ¿Es confiable? | Eficiencia de transmisión | gastos generales | forma de comunicacion |
UDP | No | No | alto | Pequeño | Punto único/multipunto a punto único/multipunto |
tcp | Sí | Sí | Bajo | grande | punto a punto |
1. Protocolo UDP (Protocolo de datagramas de usuario)
Funciones del protocolo
- sin conexión
- Orientado a mensajes
- Pequeña sobrecarga de encabezado (8 bytes)
- Entrega con el mejor esfuerzo, sin garantías de confiabilidad, sin control de congestión
- Admite comunicación de uno o muchos a uno o muchos
Formato del encabezado del mensaje
2. Protocolo TCP (Protocolo de control de transmisión)
Funciones del protocolo
- Orientado al flujo de bytes (procesar los datos entregados por la capa de aplicación como bytes y numerarlos en consecuencia)
- orientado a la conexión
- Cada conexión TCP tiene solo dos puntos finales (conexión uno a uno)
- Entrega confiable garantizada
- Posibilidad de comunicación full duplex
Formato del encabezado del mensaje
El puerto de origen y el puerto de destino varían de 0 a 65535;
El número de secuencia (seq) representa el número de secuencia del primer byte de datos en este segmento y el valor es 0 ~ - 1;
El número de confirmación (ack) indica el número de secuencia del primer byte de datos que se espera recibir del siguiente segmento de mensaje de la otra parte, y el valor es 0 ~ - 1;
El desplazamiento de datos representa la longitud del encabezado TCP, que puede identificar fácilmente la posición inicial del segmento de datos. La longitud mínima es 5 (0101) y la unidad es bytes. La longitud mínima del encabezado es 20 bytes;
Puntero urgente Cuando el bit URG es 1, este campo es válido e indicará los datos que deben enviarse con urgencia;
El campo de relleno tiene una longitud variable y se utiliza para garantizar que la longitud del encabezado del mensaje TCP sea un múltiplo entero de 4 bytes;
Campo | Marcador de posición | ilustrar |
campo de control | URG (1bit) | Bit de emergencia ; cuando es 1, significa que hay datos para enviar urgentemente |
ACK (1 bit) | Bit de confirmación ; aquí está en mayúscula para distinguirlo del número de confirmación (ack en minúscula); cuando es 1, el campo de confirmación es válido, lo que indica una respuesta positiva | |
PSH (1 bit) | Bit de inserción ; cuando se establece en 1, los paquetes TCP se envían inmediatamente | |
Primero (1 bit) | Bit de reinicio ; cuando se establece en 1, indica que hay un error grave en la conexión TCP y es necesario restablecer la conexión; también se puede utilizar para rechazar una conexión | |
SYN (1 bit) | Bit de sincronización ; cuando se establece en 1, indica que se está estableciendo una conexión TCP | |
FIN (1 bit) | Bit de terminación ; cuando se establece en 1, indica que se está liberando una conexión TCP | |
ventana | 16 bits | Recibe el valor de la ventana inactiva para el control de flujo TCP |
Apretón de manos de tres vías al establecer una conexión TCP
La función del protocolo de enlace de tres vías es evitar conexiones incorrectas
El host A envía SYN al servidor B para solicitar el establecimiento de una conexión TCP. Incluso si no hay datos, consumirá una secuencia. En este momento, el host A está en el estado SYN-SENT hasta que no recibe la primera respuesta del servidor de destino.
El servidor B está en el estado de escucha de LISTEN antes de recibir una solicitud de conexión TCP.
El servidor responde al host A con SYN, lo que indica que también solicita al host A que establezca una conexión. ACK = 1 indica que ha aceptado la solicitud de conexión del host A. El servidor B también consume una secuencia, seq = y, ack = x + 1, que indica confirmación, reciba el contenido de los datos que acaba de enviar el host y presente la expectativa de que la secuencia cuando el host A envíe un mensaje al servidor B la próxima vez sea x + 1. En este momento, el servidor B necesita esperar la respuesta del host A y también cambia al estado SYN-SENT.
El host A recibe la respuesta del servidor B y luego responde al servidor B. ACK = 1 indica que ha confirmado la solicitud de establecimiento de TCP del servidor B y responde a las expectativas del servicio B. Incluso si no hay datos, envía una secuencia, secuencia = x + 1. Al mismo tiempo, ack = y + 1 también es una confirmación del contenido que acaba de enviar el servidor B. También genera expectativas de que la secuencia de la próxima vez que el tipo de servicio envíe un mensaje sea y + 1. Al mismo tiempo, el estado se establece en ESTABLECIDO, lo que indica que se ha establecido la conexión.
El servidor B recibe la respuesta del host A y establece el estado en ESTABLECIDO después de confirmar que es correcto, lo que indica que la conexión TCP se estableció correctamente.
En este momento, el host A y el servidor B han establecido una conexión TCP y ambas partes pueden transmitir datos normalmente.
estado | ilustrar |
SINCRONIZADO | Se envía una solicitud SYN, solicitando el primer paso para establecer una conexión TCP. |
ESCUCHAR | Monitorear el estado de los mensajes SYN |
SYN-RCVD | Estado después de recibir el mensaje de solicitud SYN |
ESTABLECIDO | Conexión TCP establecida con éxito |
Las cuatro ondas de TCP derribando una conexión
Cuando el host A envía el indicador FIN = 1 (desconexión), ingresará al estado FIN-WAIT-1 y esperará a que la otra parte confirme el apagado. Cuando el host recibe el indicador ACK = 1 (confirmación) de la otra parte, el host A ingresará al estado FIN-WAIT-2. En este momento, el host A ha desconectado la conexión con la otra parte, pero no ha desconectado completamente la conexión TCP y todavía está esperando que la otra parte envíe un indicador FIN para confirmar el cierre de la otra parte.
Solo después de que el host A reciba el indicador FIN de la otra parte y envíe un indicador ACK para confirmar, ingresará al estado TIEMPO DE ESPERA. En este momento, el host realmente cierra la conexión TCP.
estado | ilustrar |
FIN-ESPERAR-1 | Envió la primera solicitud FIN, esperando la confirmación de la otra parte |
FIN-ESPERAR-2 | Esperando la solicitud FIN de la otra parte |
ESPERAR CERCA | Espere a que el propio proceso emita un comando de desconexión |
ÚLTIMO ACK | Espere la última confirmación de la otra parte |
TIEMPO DE ESPERA | Espere el tiempo suficiente para asegurarse de que la otra parte reciba la confirmación. |
CERRADO | Desactivado |
Control de flujo TCP
El control de flujo es para la comunicación entre dos extremos . Lo que se considera es la diferencia entre la tasa de transferencia de datos entre el remitente y el receptor.
El control de flujo TCP se implementa mediante un mecanismo de ventana deslizante de tamaño variable . Es decir, la velocidad de transmisión del extremo emisor de datos no debe ser demasiado rápida, para que el extremo receptor de datos pueda recibirlos a tiempo.
Ambas partes acuerdan la ventana de transferencia de datos cuando se establece la conexión. Sin embargo, durante el proceso de comunicación, el extremo receptor de datos puede ajustar dinámicamente el tamaño de la ventana de transmisión de la otra parte en cualquier momento de acuerdo con sus propias condiciones de recursos. (Después de la negociación anterior, el tamaño de la ventana es 3)
El extremo receptor coloca este valor de ventana en el campo de ventana en el encabezado del mensaje TCP y lo transmite al extremo emisor.
El receptor generalmente envía un mensaje ACK inmediatamente después de recibir los datos para confirmar la recepción de los datos y notificar al remitente el tamaño de la ventana en este momento. Si el búfer del receptor está lleno, establece el tamaño de la ventana en 0 y el remitente deja de enviar datos. Cuando el receptor termine de procesar los datos, establecerá el tamaño de la ventana en un valor mayor que 0 y enviará un mensaje ACK para notificar al remitente para que pueda continuar enviando datos.
Control de congestión TCP
El control de congestión es para la comunicación de toda la red, considera la utilización de recursos de cada enrutador y línea de la red para evitar la congestión de la red causada por un tráfico de datos excesivo.
Cuatro métodos comunes de control de la congestión:
- comienzo lento
- evitación de congestión
- Retransmisión rápida
- Rápida recuperación
Ventana de congestión (cwnd) : es una variable de estado mantenida por el remitente, su tamaño depende del grado de congestión de la red y cambiará dinámicamente;
Umbral de inicio lento (ssthresh) : un umbral establecido para evitar que la ventana de congestión cwnd crezca demasiado y cause congestión en la red;
cwnd < ssthresh | Realizar algoritmo de inicio lento |
cwnd = ssthresh | Puede utilizar el algoritmo de inicio lento o el algoritmo para evitar la congestión. |
cwnd > ssthresh | Utilice un algoritmo para evitar la congestión |
Inicio lento : después de cada ronda de transmisión, el valor de cwnd se duplicará , aumentando cwnd de pequeño a grande;
Evitar la congestión : Después de cada ronda de transmisión, el valor de cwnd aumentará en 1 y cwnd aumentará lentamente de pequeño a grande;
Retransmisión rápida : el receptor enviará inmediatamente un ACK de acuse de recibo duplicado después de recibir un segmento fuera de secuencia. Si el remitente recibe tres acuses de recibo duplicados seguidos , retransmitirá inmediatamente el segmento que la otra parte aún no ha recibido . Por lo tanto, los mensajes no reconocidos se pueden retransmitir lo antes posible en lugar de esperar el tiempo de espera;
Recuperación rápida : cuando el remitente recibe tres ACK de confirmación de retransmisión consecutiva , realiza un algoritmo de reducción multiplicativa , reduce a la mitad el valor umbral (la mitad del valor cwnd actual) y establece el valor cwnd en el valor umbral reducido a la mitad y realiza el algoritmo para evitar la congestión. ;
Reducción multiplicativa : cuando se agota el tiempo de espera (posiblemente durante la congestión), ssthresh se reduce a la mitad (la mitad del valor cwnd actual) y el algoritmo de inicio lento se ejecuta al mismo tiempo;
Aumento aditivo : ejecute un algoritmo para evitar la congestión para aumentar cwnd;
Como se muestra en la figura anterior, el umbral inicial de inicio lento es 16 y cwnd comienza desde 1. Siempre que el remitente reciba un mensaje de confirmación ACK, cwnd aumentará (el algoritmo de inicio lento se usa para aumentar antes de alcanzar el umbral).
[① ~ ②] Cuando se alcanza el valor umbral, se utiliza el algoritmo para evitar la congestión para aumentar lentamente cwnd;
[② ~ ③] Si ocurre un tiempo de espera cuando cwnd = 24, el umbral se reduce a la mitad, es decir, ssthresh = 12. Luego, la próxima vez que se reciba un mensaje de confirmación ACK, cwnd comienza desde 1 y aumenta usando el algoritmo de inicio lento;
[③ ~ ④] Cuando cwnd = 12, cuando se alcanza el umbral, se utiliza el algoritmo para evitar la congestión para aumentar lentamente;
[④ ~ ⑤] Cuando ④ llega a ④, cwnd = 16 y el remitente recibe tres confirmaciones duplicadas seguidas, el umbral se reduce a la mitad del cwnd actual, es decir, ssthresh = 8, y cwnd se vuelve consistente con el umbral. valor;
[⑤ ~] Dado que cwnd = ssthresh, comience a usar el algoritmo para evitar la congestión para aumentar;
3. Número de puerto de la capa de transporte
Número de puerto tipo III
- Puertos conocidos 0 ~ 1023
- Registrar puerto 1024 ~ 49151
- Número de puerto del cliente 49152 ~ 65535
Algunos números de puerto conocidos
El número de puerto | Tipo de servicio |
TCP 20 | Protocolo de transferencia de archivos (datos) |
TCP 21 | Protocolo de transferencia de archivos (control) |
TCP 23 | Protocolo de emulación de terminal Telnet |
TCP 25 | Protocolo de correo simple SMTP |
TCP 80 | Protocolo de transferencia de hipertexto (HTTP) |
TCP 110 | Servidor POP3 (servidor de recepción de buzones) |
TCP 443 | Protocolo seguro de transferencia de hipertexto (HTTPS) |
El número de puerto | Tipo de servicio |
UDP 53 | Servidor de nombres de dominio (DNS) |
UDP 67 | Servidor DHCP) |
UDP 68 | DHCP (cliente) |
UDP 69 | Protocolo simple de transferencia de hipertexto (TFTP) |
UDP 161 | SNMP (sondeo) |
UDP 162 | SNMP (trampa) |
UDP 520 | Protocolo de enrutamiento RIP |