Conceptos básicos de la red (4): formato de protocolo

Encapsulamiento de paquetes

  La capa de transporte y los mecanismos debajo de ella son proporcionados por el kernel , la capa de aplicación es proporcionada por el proceso del usuario, el programa de aplicación interpreta el significado de los datos de comunicación, y la capa de transporte y abajo se encargan de los detalles de la comunicación, enviando datos de una computadora a través de una ruta determinada a otra computadora. Cuando los datos de la capa de aplicación enviados a la red se apilan a través del protocolo, a cada protocolo se le debe agregar un encabezado (encabezado) de datos, llamado paquete ( Encapsulación ), como se muestra a continuación:
          Inserte la descripción de la imagen aquí
  diferentes capas de protocolo para paquetes de datos tienen diferentes títulos, en la capa de transporte se llama segmento (segmento), la capa de red se llama paquetes de datos (datagrama), las tramas de capa de enlace conocidas (trama). Después de que los datos se encapsulan en una trama, se envían al medio de transmisión. Después de llegar al host de destino, se elimina el encabezado correspondiente de cada capa del protocolo y, finalmente, los datos de la capa de aplicación se entregan al programa de aplicación para Procesando.


Formato de trama de Ethernet

  El formato de trama de Ethernet es el siguiente:
          Inserte la descripción de la imagen aquí
  la dirección de origen y la dirección de destino se refieren a la dirección de hardware de la tarjeta de red ( también llamada dirección MAC ), la longitud es de 48 bits y se solidifica cuando la tarjeta de red sale de fábrica. Puede usar el comando ifconfig en el shell para ver, la parte "HWaddr 00: 15: F2: 14: 9E: 3F" es la dirección de hardware. El campo de protocolo tiene tres valores, correspondientes a IP, ARP y RARP. El final de la trama es el código de verificación CRC.
  La longitud de los datos en la trama Ethernet especifica un mínimo de 46 bytes y un máximo de 1500. La longitud de los paquetes de datos ARP y RARP no es suficiente para 46 bytes y se deben agregar bits de relleno en la parte posterior. El valor máximo de 1500 se denomina unidad máxima de transmisión ( MTU ) de Ethernet . Los diferentes tipos de red tienen diferentes MTU. Si un paquete de datos se enruta desde Ethernet al enlace de acceso telefónico, la longitud del paquete de datos es mayor que la MTU del enlace de acceso telefónico El paquete está fragmentado ( fragmentación ). También hay "MTU: 1500" en la salida del comando ifconfig. Tenga en cuenta que el concepto de MTU se refiere a la longitud máxima de la carga útil en una trama de datos, sin incluir la longitud del encabezado de la trama.

Formato de datagrama ARP

  Durante la comunicación de red, el programa de aplicación del host de origen conoce la dirección IP y el número de puerto del host de destino, pero no conoce la dirección de hardware del host de destino. El paquete de datos primero es recibido por la tarjeta de red y luego procesado por el protocolo de capa superior Si los datos recibidos son Si la dirección de hardware del paquete no coincide con la de la máquina local, se descartarán directamente. Por lo tanto, la dirección de hardware del host de destino debe obtenerse antes de la comunicación. El protocolo ARP juega este papel. El host de origen envía una solicitud ARP, preguntando "cuál es la dirección de hardware del host cuya dirección IP es 192.168.0.1", y transmite esta solicitud al segmento de red local (la dirección de hardware del encabezado de la trama Ethernet se completa con FF: FF: FF: FF: FF: FF significa difusión), el host de destino recibe la solicitud ARP de difusión y encuentra que la dirección IP coincide con la máquina, luego envía un paquete de respuesta ARP al host de origen y completa su propia dirección de hardware en el paquete de respuesta.
  Cada host mantiene una tabla de caché ARP , que se puede ver con el comando arp -a. La entrada en la tabla de caché tiene un tiempo de vencimiento (generalmente 20 minutos). Si una entrada no se usa nuevamente dentro de los 20 minutos, la entrada dejará de ser válida y se enviará una solicitud ARP la próxima vez para obtener la dirección de hardware del destino. anfitrión. Piénselo, ¿por qué la entrada de la tabla debería tener una fecha de vencimiento en lugar de ser válida todo el tiempo?
  El formato del datagrama ARP es el siguiente: la
        Inserte la descripción de la imagen aquí
  dirección MAC de origen y la dirección MAC de destino aparecen una vez en el encabezado de Ethernet y la solicitud de ARP, que es redundante para el caso en que la capa de enlace es Ethernet, pero si la capa de enlace es de otros tipos La red puede ser necesaria. El tipo de hardware se refiere al tipo de red de la capa de enlace, 1 es Ethernet, el tipo de protocolo se refiere al tipo de dirección que se va a convertir, 0x0800 es la dirección IP y las siguientes dos longitudes de dirección son 6 y 4 (bytes) para Ethernet dirección y la dirección IP, respectivamente. Un campo de operación de 1 indica una solicitud de ARP, y un campo de operación de 2 indica una respuesta de ARP.
Mira un ejemplo específico.

La trama de solicitud es la siguiente (para mayor claridad, el recuento de bytes se agrega al frente de cada línea, cada línea tiene 16 bytes):
encabezado Ethernet (14 bytes) 0000: ff ff ff ff ff ff
00 05 5d 61 58 a8 08 06 Trama ARP (28 bytes) 0000: 00 01 0010: 08 00 06 04 00 01
00 05 5d 61 58 a8 c0 a8 00 37 0020: 00 00 00 00 00 00 c0 a8 00 02
Bits de llenado (18 bytes) 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00
00 00 Encabezado Ethernet: el host de destino usa la dirección de transmisión, la dirección MAC del host de origen es 00: 05: 5d: 61: 58: a8, la El tipo de protocolo de capa 0x0806 significa ARP.
Trama ARP: tipo de hardware 0x0001 significa Ethernet, tipo de protocolo 0x0800 significa protocolo IP, la longitud de la dirección de hardware (dirección MAC) es 6, la longitud de la dirección de protocolo (dirección IP) es 4, op es 0x0001 significa solicitar la dirección MAC del host de destino, origen host La dirección MAC es 00: 05: 5d: 61: 58: a8, la dirección IP del host de origen es c0
a8 00 37 (192.168.0.55), la dirección MAC del host de destino es todo 0 para completar y la dirección IP del host de destino es c0 a8 00
02 (192.168 .0.2).
Dado que Ethernet estipula que la longitud mínima de los datos es de 46 bytes y la longitud de la trama ARP es de solo 28 bytes, hay 18 bytes de bits de relleno. El contenido de los bits de relleno no está definido y está relacionado con la implementación específica. La trama de respuesta es la siguiente:
Encabezado Ethernet 0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06 Trama ARP 0000: 00 01
0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02 0020: 00 05 5d
61 58 a8 c0 a8 00 37 Puntas de llenado 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00
00 00 00 00 00 00 00
Encabezado Ethernet: la dirección MAC del host de destino es 00: 05: 5d: 61: 58: a8, la dirección MAC del host de origen es 00: 05: 5d: a1: b8: 40 y la El tipo de protocolo de capa 0x0806 representa ARP.
Marco ARP: tipo de hardware 0x0001 significa Ethernet, tipo de protocolo 0x0800 significa protocolo IP, la longitud de la dirección de hardware (dirección MAC) es 6, la longitud de la dirección de protocolo (dirección IP) es 4, op es 0x0002 significa respuesta, la dirección MAC del host de origen es 00: 05 : 5d: a1: b8: 40, la dirección IP del host de origen es c0
a8 00 02 (192.168.0.2), la dirección MAC del host de destino es 00: 05: 5d: 61: 58: a8 y la IP La dirección del host de destino es c0 a8 00
37 (192.168.0.55).

Formato de segmento de IP

      Inserte la descripción de la imagen aquí
; La longitud del encabezado y la longitud de los datos del datagrama IP son variables, pero siempre un múltiplo entero de 4 bytes . Para IPv4, el campo de versión de 4 bits es 4. El valor de la longitud del encabezado de 4 bits está en la unidad de 4 bytes **, y el valor mínimo es 5 **, lo que significa que la longitud mínima del encabezado es 4x5 = 20 bytes, es decir, no Para el encabezado IP con cualquier opción, el valor máximo que se puede representar con 4 bits es 15, lo que significa que la longitud máxima del encabezado es de 60 bytes . El campo TOS de 8 bits tiene 3 bits para especificar la prioridad del datagrama IP (actualmente obsoleto) y 4 bits para indicar el tipo de servicio opcional (retardo mínimo, rendimiento máximo, confiabilidad máxima, costo mínimo)), y otro bit es siempre 0. La longitud total es el número de bytes en todo el datagrama (incluido el encabezado IP y la carga útil de la capa IP). Cada vez que se transmite un datagrama IP, el identificador de 16 bits se incrementa en 1, que puede usarse para fragmentar y reensamblar el datagrama. La bandera de 3 bits y el desplazamiento de chip de 13 bits se utilizan para la fragmentación. TTL (Tiempo de vida) se usa así: el host de origen establece un tiempo de vida para el paquete de datos, como 64, y el valor se reduce en 1 cada vez que pasa un enrutador. Si se reduce a 0, significa que la ruta es demasiado larga y aún no se puede encontrar. Cuando la red llega al host de destino, el paquete se descarta. Por lo tanto, la unidad del tiempo de supervivencia no son segundos, sino saltos. El campo de protocolo indica si el protocolo de capa superior es TCP, UDP, ICMP o IGMP. Luego está la suma de verificación, solo se verifica el encabezado IP y el protocolo de nivel superior es responsable de la verificación de los datos. La longitud de una dirección IP IPv4 es de 32 bits.

Formato de datagrama UDP

      Inserte la descripción de la imagen aquí
A continuación se analiza una trama de protocolo TFTP basada en UDP.
Encabezado Ethernet
0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00 Encabezado
IP
0000: 45 00
0010: 00 53 93 25 00 00 80 11 25 ec c0 a8 00 37 c0 a8
0020: 00 01
Encabezado UDP
0020 : 05 d4 00 45 00 3f ac 40
Protocolo TFTP
0020: 00
01'c '' : '' '' q ' 0030:' w''e''r''q ''. '' Q''w '' e '00'n''e''t''a''s''c''i'
0040: 'i'00'b''l''k''s''i''z''e' 00 '5''1''2'00't''i'
0050: 'm''e''o''u''t'00' 1''0'00't''s '' i '' z''e'00 '0'
0060: 00 Encabezado Ethernet: la dirección MAC de origen es 00: 05: 5d: 61: 58: a8, la dirección MAC de destino es 00: 05: 5d: 67: d0: b1 , El tipo de protocolo de capa superior 0x0800 representa IP.
  Encabezado IP: cada byte 0x45 contiene un número de versión de 4 bits y una longitud de encabezado de 4 bits. El número de versión es 4, es decir, IPv4, y la longitud del encabezado es 5, lo que indica que el encabezado IP no tiene un campo de opción . El tipo de servicio es 0 y no se utiliza ningún servicio. El campo de longitud total de 16 bits (incluida la longitud del encabezado IP y la carga útil de la capa IP) es 0x0053, que tiene 83 bytes. Si se agregan los 14 bytes del encabezado Ethernet, se muestra que la longitud total de la trama es de 97 bytes. El identificador de paquete IP es 0x9325, el campo de bandera y el campo de desplazamiento de fragmento se establecen en 0x0000, es decir, DF = 0 permite la fragmentación y MF = 0 este datagrama no tiene más fragmentos ni desplazamiento de fragmentación. TTL es 0x80, que es 128. El protocolo de capa superior 0x11 representa el protocolo UDP. La suma de comprobación del encabezado IP es 0x25ec, la IP del host de origen es c0 a8 00 37 (192.168.0.55) y la IP del host de destino es c0 a8 00 01 (192.168.0.1).
Encabezado UDP: el número de puerto de origen 0x05d4 (1492) es el número de puerto del cliente y el número de puerto de destino 0x0045 (69) es el número de puerto conocido del servicio TFTP. La longitud del paquete UDP es 0x003f, que es de 63 bytes, incluida la longitud del encabezado UDP y la carga útil de la capa UDP. La suma de comprobación del encabezado UDP y la carga útil de la capa UDP es 0xac40.
TFTP es un protocolo basado en texto. Cada campo está separado por byte 0. El primer 00 01 indica que se solicita la lectura de un archivo. Los siguientes campos son:
c: \ qwerq.qwe
netascii
blksize 512
timeout 10
tsize 0
  La comunicación de red general es como el protocolo TFTP. Las dos partes en la comunicación son el cliente y el servidor. El cliente inicia activamente la solicitud (el ejemplo anterior es el marco de solicitud iniciado por el cliente), y el servidor espera, recibe, y responde a la solicitud. La dirección IP y el número de puerto del cliente identifican de forma única el proceso del cliente TFTP en el host, y la dirección IP y el número de puerto del servidor identifican de forma única el proceso del servicio TFTP en el host. Dado que el cliente es la parte que inicia la solicitud, debe conocer el La dirección IP del servidor y el número de puerto del proceso de servicio TFTP. Por lo tanto, algunos protocolos de red comunes tienen puertos de servidor predeterminados. Por ejemplo, el servicio HTTP tiene como valor predeterminado el puerto 80 del protocolo TCP, el servicio FTP el puerto 21 del protocolo TCP y el servicio TFTP por defecto es el protocolo UDP Puerto 69 (como se muestra en el ejemplo anterior). Al utilizar el programa cliente, debe especificar el nombre de host del servidor o la dirección IP. Si el número de puerto no se especifica explícitamente, se utilizará el puerto predeterminado. Consulte las páginas de manual de ftp, tftp y otros programas para aprender cómo especifique el número de puerto. / etc / services enumera todos los puertos de servicio conocidos y los protocolos de la capa de transporte correspondientes, que están regulados por la Autoridad de Números Asignados de Internet (IANA). Algunos de estos servicios pueden usar TCP o UDP. Para mayor claridad, IANA estipula que dichos servicios usan el mismo número de puerto predeterminado TCP o UDP, mientras que otros números de puerto TCP y UDP iguales corresponden a servicios diferentes.
  Muchos servicios tienen un número de puerto conocido, pero el número de puerto del programa cliente no necesita ser conocido. A menudo, el sistema asigna automáticamente un número de puerto libre cada vez que se ejecuta el programa cliente y lo libera cuando se ha agotado El número de puerto llamado efímero, piensa por qué?
  Como se mencionó anteriormente, el protocolo UDP no está orientado a la conexión y no garantiza la confiabilidad de la transmisión. Por ejemplo,
  la capa de protocolo UDP en el remitente solo encapsula los datos de la capa de aplicación en segmentos y los entrega a la capa de protocolo IP. Incluso si la tarea se completa, si hay una falla en la red, el segmento no se puede enviar a la otra parte y la capa de protocolo UDP no devolverá ninguna información de error a la capa de aplicación.
  La capa de protocolo UDP en el extremo receptor solo entrega los datos recibidos a la aplicación correspondiente de acuerdo con el número de puerto para completar la tarea. Si el extremo emisor envía múltiples paquetes de datos y pasa por diferentes rutas en la red, el orden estará fuera de orden cuando llegan al extremo receptor. Sin embargo, la capa de protocolo UDP no garantiza que se entregará a la capa de aplicación en el orden en que se envió.
  Por lo general, la capa de protocolo UDP en el extremo receptor coloca los datos recibidos en un búfer de tamaño fijo a la espera de que la aplicación los extraiga y procese. Si la aplicación extrae y procesa lentamente, y el remitente lo envía rápidamente, perderá paquetes de datos, la capa de protocolo UDP no informa este error.
  Por tanto, las aplicaciones que utilizan el protocolo UDP deben considerar estos posibles problemas e implementar soluciones adecuadas, como esperar una respuesta, retransmitir en el tiempo, numerar paquetes de datos, controlar el flujo, etc. Generalmente, los programas de aplicación que usan el protocolo UDP son relativamente simples de implementar y solo envían algunos mensajes que no requieren alta confiabilidad, en lugar de enviar una gran cantidad de datos. Por ejemplo, el protocolo TFTP basado en UDP generalmente solo se usa para transferir archivos pequeños (por eso se llama ftp trivial), mientras que el protocolo FTP basado en TCP es adecuado para la transmisión de varios archivos. ¿Cómo utiliza el protocolo TCP servicios orientados a la conexión en lugar de programas de aplicación para resolver el problema de la confiabilidad de la transmisión?

Supongo que te gusta

Origin blog.csdn.net/qq_40329851/article/details/114810447
Recomendado
Clasificación