Red informática【1】TCP/IP

Modelo OSI de siete capas y modelo TCP/IP de cuatro capas

首先简单说一下OSI参考模型,OSI将网络分为七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而TCP/IP体系结构则将网络分为四层,自下而上分别是网络接口层、网络层、传输层、应用层。

inserte la descripción de la imagen aquí
Mirando la imagen de abajo, el remitente quiere enviar datos al receptor. Primero, la capa de aplicación prepara los datos para ser enviados y luego se los entrega a la capa de transporte. La función principal de la capa de transporte es proporcionar servicios de conexión confiables para el remitente y el receptor. La capa de transporte procesa los datos y luego los envía. a la capa de red. La función de la capa de red es administrar la red. Una de las funciones principales es la selección de ruta (enrutamiento). Hay muchas rutas desde el remitente hasta el receptor. La capa de red es responsable de administrar a qué enrutador deben ir los siguientes datos. . Después de seleccionar la ruta, los datos llegan a la capa de enlace de datos, que es responsable de enviar datos de un enrutador a otro. Luego está la capa física.Se puede entender simplemente que la capa física es el equipo más básico, como los cables de red.
inserte la descripción de la imagen aquí
TCP/IP proporciona un mecanismo de enlace punto a punto para estandarizar cómo se deben encapsular, direccionar, transmitir, enrutar y recibir los datos en el destino. Abstrae el proceso de comunicación del software en cuatro capas de abstracción, adopta el método de pila de protocolos e implementa diferentes protocolos de comunicación respectivamente. Varios protocolos de la familia de protocolos se asignan a estas cuatro estructuras jerárquicas de acuerdo con sus diferentes funciones y, a menudo, se consideran como un modelo OSI simplificado de siete capas.

Familia de protocolos TCP/IP

El modelo de red utilizado actualmente es el modelo TCP/IP, que simplifica el modelo OSI y solo incluye cuatro capas, de arriba a abajo son la capa de aplicación, capa de transporte, capa de red y capa de enlace (capa de interfaz de red).Cada capa contiene varios protocolos

Protocolo (Protocol) es el acuerdo o contrato en el proceso de comunicación de red. Ambas partes en la comunicación deben cumplirlo para enviar y recibir datos normalmente. Hay muchos tipos de protocolos, como TCP, UDP, IP, etc. Ambos lados de la comunicación deben usar el mismo protocolo para comunicarse. Un protocolo es una especificación formulada por una organización informática que especifica muchos detalles, por ejemplo, cómo establecer una conexión, cómo identificarse entre sí, etc.
Un protocolo es solo una especificación que debe ser implementada por un software de computadora. Por ejemplo, el protocolo IP estipula cómo encontrar la computadora de destino, por lo que cada desarrollador debe cumplir con el acuerdo al desarrollar su propio software y no puede comenzar desde cero.
El modelo TCP/IP incluye cientos de protocolos interrelacionados, como TCP, IP, UDP, Telnet, FTP, SMTP, etc. Entre ellos, TCP e IP son los dos protocolos subyacentes más utilizados, por lo que se denominan colectivamente "TCP". /Protocolo IP". familia".

Es decir, los protocolos que intervienen en el "modelo TCP/IP" se denominan "familia de protocolos TCP/IP" Puedes distinguir estos dos conceptos, o considerarlos equivalentes, como quieras.

TCP

Definición de la Enciclopedia de Baidu: **Protocolo de control de transmisión (TCP, Transmission Control Protocol) es un protocolo de comunicación de capa de transporte basado en flujo de bytes, confiable y orientado a la conexión. **La conexión debe establecerse antes de que se transmitan los datos, y la conexión debe desconectarse después de la transmisión. El cliente debe usar la función connect() para establecer una conexión con el servidor antes de enviar y recibir datos. El propósito de establecer una conexión es garantizar que la dirección IP, el puerto y el enlace físico sean correctos y abrir un canal para la transmisión de datos.
Cuando TCP establece una conexión, necesita transmitir tres paquetes de datos, comúnmente conocidos como protocolo de enlace de tres vías (Three-way Handshaking).

Estructura de datagrama TCP y protocolo de enlace de tres vías

http://c.biancheng.net/view/2351.html

El cliente debe usar la función connect() para establecer una conexión con el servidor antes de enviar y recibir datos. El propósito de establecer una conexión es garantizar que la dirección IP, el puerto y el enlace físico sean correctos y abrir un canal para la transmisión de datos.

Cuando TCP establece una conexión, necesita transmitir tres paquetes de datos, comúnmente conocidos como protocolo de enlace de tres vías (Three-way Handshaking). Se puede comparar vívidamente con el siguiente diálogo:
[Shake 1] Socket A: "Hola, Socket B, tengo datos para enviarte aquí, establezcamos una conexión". [Shake 2]
Socket B: "Está bien, mi lado está listo".
[Shake 3] Socket A: "Gracias por aceptar mi solicitud".
Estructura del datagrama TCP
Veamos primero la estructura de un datagrama TCP:

inserte la descripción de la imagen aquí

Es necesario resaltar varios campos sombreados:

  1. Número de secuencia: Seq (Número de secuencia) ocupa 32 bits y se utiliza para identificar el número de secuencia del paquete de datos enviado desde la computadora A a la computadora B, que se marca cuando la computadora envía datos.

  2. Número de reconocimiento: Ack (Número de reconocimiento) El número de reconocimiento ocupa 32 bits, tanto el cliente como el servidor pueden enviar, Ack = Seq + 1.

  3. Bit de bandera: cada bit de bandera ocupa 1 bit, y hay 6 bits de bandera en total, a saber, URG, ACK, PSH, RST, SYN y FIN. Los significados específicos son los siguientes: URG: puntero urgente (puntero urgente) es válido
    .
    ACK: Confirma que el número de secuencia es válido.
    PSH: el receptor debe entregar este mensaje a la capa de aplicación lo antes posible.
    RST: restablecer la conexión.
    SYN: Establecer una nueva conexión.
    FIN: desconectar una conexión.
    Resumen de abreviaturas en inglés: Seq es la abreviatura de Sequence, que significa secuencia; Ack(ACK) es la abreviatura de Acknowledge, que significa confirmación; SYN es la abreviatura de Synchronous, dispuesto a ser "sincrónico", aquí significa establecer un sincronismo conexión; FIN es Finalizar Una abreviatura de Listo.

Establecimiento de conexión (apretón de manos de tres vías)

Al usar connect() para establecer una conexión, el cliente y el servidor se enviarán tres paquetes de datos entre sí, vea la figura a continuación:
inserte la descripción de la imagen aquí

Después de que el cliente llama a la función socket() para crear un socket, el socket está en estado CERRADO porque no se ha establecido ninguna conexión; después de que el servidor llama a la función listen(), el socket ingresa al estado LISTEN y comienza a escuchar las solicitudes del cliente .

En este momento, el cliente comienza a iniciar una solicitud:

  1. Cuando el cliente llama a la función connect(), el protocolo TCP creará un paquete de datos y establecerá el indicador SYN, lo que indica que el paquete de datos se utiliza para establecer una conexión síncrona. Al mismo tiempo, se genera un número aleatorio 1000 y se rellena el campo "Número de secuencia (Seq)", que indica el número de secuencia del paquete de datos. Después de completar estas tareas y comenzar a enviar paquetes de datos al servidor, el cliente ingresa al estado SYN-SEND.

  2. Cuando el servidor recibe el paquete de datos y detecta que se ha establecido el indicador SYN, sabe que este es el "paquete de solicitud" enviado por el cliente para establecer una conexión. El servidor también creará un paquete de datos y establecerá las banderas SYN y ACK. SYN significa que el paquete de datos se usa para establecer una conexión, y ACK se usa para confirmar la recepción del paquete de datos enviado por el cliente en este momento.

El servidor genera un número aleatorio 2000 y llena el campo "Seq". 2000 no tiene nada que ver con los paquetes de clientes.

El servidor agrega 1 al número de secuencia del paquete del cliente (1000) para obtener 1001 y llena el campo "Número de reconocimiento (Ack)" con este número.

El servidor envía el paquete de datos y entra en el estado SYN-RECV.

  1. Cuando el cliente recibe el paquete de datos y detecta que se han establecido los indicadores SYN y ACK, sabe que este es el "paquete de reconocimiento" enviado por el servidor. El cliente comprobará el campo "Ack" para ver si su valor es 1000+1, si lo es, significa que la conexión se ha establecido correctamente.

A continuación, el cliente continuará creando paquetes de datos y establecerá el indicador ACK, lo que indica que el cliente ha recibido correctamente el "paquete de reconocimiento" enviado por el servidor. Al mismo tiempo, agregue 1 al número de serie (2000) del paquete de datos enviado por el servidor en este momento para obtener 2001, y use este número para completar el campo "Número de reconocimiento (Ack)".

El cliente envía el paquete de datos y entra en estado ESTABLECIDO, lo que indica que la conexión se ha establecido correctamente.

  1. Cuando el servidor recibe el paquete de datos y detecta que se ha establecido el indicador ACK, sabe que este es el "paquete de reconocimiento" enviado por el cliente. El servidor comprobará el campo "Ack" para ver si su valor es 2000 + 1. Si lo es, significa que la conexión se ha establecido correctamente y el servidor entra en estado ESTABLECIDO.

Hasta ahora, tanto el cliente como el servidor han ingresado al estado ESTABLECIDO, la conexión se ha establecido con éxito y luego se pueden enviar y recibir datos.
La nota final
La clave del protocolo de enlace de tres vías es confirmar que la otra parte ha recibido su propio paquete de datos.Este objetivo se logra a través del campo "Ack". La computadora registrará el número de secuencia Seq del paquete de datos enviado por sí mismo. Después de recibir el paquete de datos de la otra parte, verifique el campo "Ack" para ver si Ack = Seq + 1 es verdadero. Si es verdadero, significa que la otra parte ha recibido correctamente sus propios datos.

Proceso de transmisión de datos TCP

inserte la descripción de la imagen aquí
La figura anterior muestra el proceso en el que el host A transmite 200 bytes al host B en 2 veces (en 2 paquetes). Primero, el host A envía 100 bytes de datos en un paquete de datos y el número Seq del paquete de datos se establece en 1200. Para confirmar esto, el host B envía un paquete ACK al host A y establece el número de reconocimiento en 1301.
Para garantizar que los datos lleguen con precisión, la máquina de destino debe devolver un paquete ACK inmediatamente después de recibir el paquete de datos (incluido el paquete SYN, el paquete FIN, el paquete de datos ordinario, etc.), para que el remitente pueda confirmar que la transmisión de datos es exitoso.
En este momento, el número de reconocimiento es 1301 en lugar de 1201, porque el incremento del número de reconocimiento es el número de bytes de datos transmitidos. Suponiendo que el número de bytes transmitidos no se suma cada vez al número Ack, aunque se puede confirmar la transmisión del paquete de datos, es imposible determinar si los 100 bytes se transmiten correctamente o parte de ellos se pierde, por ejemplo, sólo se transmiten 80 bytes. Por lo tanto, confirme el número de reconocimiento de acuerdo con la siguiente fórmula:

Número de acuse de recibo = número de secuencia + número de bytes pasados ​​+ 1

Al igual que el protocolo de protocolo de enlace de tres vías, agregar 1 al final es para decirle a la otra parte el número de secuencia que se debe pasar.

Analicemos la pérdida de paquetes de datos durante el proceso de transmisión, como se muestra en la siguiente figura: La
inserte la descripción de la imagen aquí
figura anterior muestra que se transmiten 100 bytes de datos al host B a través del paquete de datos Seq 1301, pero ocurrió un error en el medio y el host B no lo recibió. Después de un período de tiempo, el host A aún no ha recibido la confirmación ACK para Seq 1301, por lo que intenta retransmitir los datos.

Para completar la retransmisión del paquete de datos, el socket TCP iniciará un temporizador cada vez que envíe un paquete de datos.Si el paquete ACK devuelto por la máquina de destino no se recibe dentro de un cierto período de tiempo, el temporizador caducará. y el paquete de datos será retransmitido.
La figura anterior muestra la situación de pérdida de paquetes de datos, y también existirá la situación de pérdida de paquetes ACK, que también se retransmitirá.

Si el valor de RTO (Tiempo de espera de retransmisión)
es demasiado grande, provocará una espera innecesaria, y si es demasiado pequeño, provocará una retransmisión innecesaria. En teoría, es mejor que sea el tiempo RTT de la red, pero está sujeto a la distancia de la red e instantáneo El retraso de estado cambia, por lo que, de hecho, se utiliza un algoritmo dinámico adaptativo (como el algoritmo de Jacobson y el algoritmo de Karn, etc.) para determinar el tiempo de espera.
El tiempo de ida y vuelta (RTT, Round-Trip Time) indica el retraso total experimentado desde el momento en que el remitente envía datos hasta el momento en que el remitente recibe el paquete de confirmación ACK del receptor (el receptor confirma inmediatamente después de recibir los datos).
Número de retransmisiones
El número de retransmisiones de paquetes de datos TCP varía según la configuración del sistema. En algunos sistemas, un paquete de datos solo se retransmite 3 veces. Si no se ha recibido la confirmación ACK del paquete de datos después de 3 retransmisiones, no se intentará ninguna retransmisión. Sin embargo, algunos sistemas comerciales con altos requisitos retransmitirán continuamente los paquetes de datos perdidos para garantizar la interacción normal de los datos comerciales tanto como sea posible.

Finalmente, debe tenerse en cuenta que el remitente borrará los datos en el búfer de salida solo después de recibir el paquete de confirmación ACK de la otra parte.

Desconexiones de protocolo de enlace de cuatro vías TCP

Establecer una conexión es muy importante, es un requisito previo para la correcta transmisión de datos, la desconexión también es importante, permite que la computadora libere recursos que ya no están en uso. Si la conexión no se puede desconectar con normalidad, no solo provocará errores en la transmisión de datos, sino que el socket no podrá cerrarse, lo que seguirá ocupando recursos.Si la concurrencia es alta, la presión del servidor será preocupante.

Se requiere un apretón de manos de tres vías para establecer una conexión, y se requiere un apretón de manos de cuatro vías para desconectarse, lo que se puede comparar vívidamente con el siguiente diálogo:

[Shake 1] 套接字A:“任务处理完毕,我希望断开连接。”
[Shake 2] 套接字B:“哦,是吗?请稍等,我准备一下。”
等待片刻后……
[Shake 3] 套接字B:“我准备好了,可以断开连接了。”
[Shake 4] 套接字A:“好的,谢谢合作。”

La siguiente figura muestra el escenario en el que el cliente se desconecta activamente:
inserte la descripción de la imagen aquí
después de establecer la conexión, tanto el cliente como el servidor se encuentran en estado ESTABLECIDO. En este momento, el cliente inicia una solicitud de desconexión:

  1. Después de que el cliente llama a la función close(), envía un paquete FIN al servidor y entra en el estado FIN_WAIT_1. FIN es una abreviatura de Finalizar, lo que significa que se requiere la desconexión para completar la tarea.

  2. Después de que el servidor recibe el paquete de datos, detecta que el indicador FIN está establecido y sabe desconectarse, por lo que envía un "paquete de confirmación" al cliente y entra en el estado CLOSE_WAIT.

Nota: El servidor no se desconecta inmediatamente después de recibir la solicitud, sino que primero envía un "paquete de confirmación" al cliente, diciéndole que lo sé y que necesito prepararme antes de desconectarme.

  1. Después de recibir el "paquete de confirmación", el cliente ingresa al estado FIN_WAIT_2 y espera a que el servidor envíe el paquete de datos nuevamente una vez que esté listo.

  2. Después de esperar un rato, el servidor está listo y puede desconectarse, por lo que envía activamente un paquete FIN al cliente para decirle que estoy listo y desconectarme. Luego ingrese el estado LAST_ACK.

  3. Después de que el cliente recibe el paquete FIN del servidor, envía un paquete ACK al servidor, diciéndole que debe desconectarse. Luego ingrese el estado TIME_WAIT.

  4. Después de que el servidor recibe el paquete ACK del cliente, se desconecta, cierra el socket y entra en el estado CERRADO.

Explicación sobre el estado TIME_WAIT
El cliente ingresa al estado TIME_WAIT después de enviar el paquete ACK por última vez, en lugar de ingresar directamente al estado CLOSED para cerrar la conexión ¿Por qué?

TCP es un método de transmisión orientado a la conexión. Debe garantizar que los datos puedan llegar a la máquina de destino correctamente sin pérdida o error. Sin embargo, la red es inestable y los datos pueden destruirse en cualquier momento. Por lo tanto, cada vez que la máquina A envía un paquete de datos a la máquina B, requiere que la máquina B "confirme", devuelva el paquete ACK y le diga a la máquina A que lo he recibido, para que la máquina A pueda saber que la transmisión de datos se realizó correctamente. Si la máquina B no devuelve un paquete ACK, la máquina A volverá a enviar hasta que la máquina B devuelva un paquete ACK.

Cuando el cliente devuelve el paquete ACK al servidor por última vez, es posible que el servidor no lo reciba debido a problemas de red y el servidor enviará el paquete FIN nuevamente. Si el cliente cierra completamente la conexión en este momento, el servidor no recibe el paquete ACK de todos modos, por lo que el cliente debe esperar un tiempo para confirmar que la otra parte ha recibido el paquete ACK antes de ingresar al estado CERRADO. Entonces, ¿cuánto tiempo esperar?

El paquete de datos tiene un tiempo de supervivencia en la red, y se descartará antes de llegar al host de destino después de este tiempo, y se notificará al host de origen. Esto se denomina vida útil máxima del segmento (MSL, Maximum Segment Lifetime). TIME_WAIT espera 2MSL antes de entrar en el estado CERRADO. Se necesita tiempo MSL para que el paquete ACK llegue al servidor y tiempo MSL para que el servidor retransmita el paquete FIN. 2MSL es el tiempo máximo de ida y vuelta para el paquete de datos. Si el paquete FIN retransmitido por el servidor no ha sido recibido después de 2MSL, significa que el servidor ha recibido el paquete ACK.

Problema de paquete pegajoso del protocolo TCP

El problema del paquete adhesivo del protocolo TCP es causado por el diseño incorrecto de los desarrolladores del protocolo de la capa de aplicación. Ignoran el mecanismo central de la transmisión de datos del protocolo TCP, basado en flujos de bytes, que no contienen conceptos como mensajes y paquetes de datos. Toda la transmisión de datos es Está transmitiendo, y el protocolo de la capa de aplicación necesita diseñar el límite del mensaje en sí, es decir, el marco del mensaje (Message Framing)

Por ejemplo, A se comunica con B en TCP y A envía un paquete de datos de 100 bytes y 200 bytes a B sucesivamente, entonces, ¿cómo lo recibe B? B puede recibir primero 100 bytes, luego 200 bytes; también puede recibir primero 50 bytes, luego 250 bytes; o puede recibir primero 100 bytes, luego 100 bytes y luego 100 bytes

Resolver el problema del paquete pegajoso

  1. paquetes de longitud fija
  2. Finaliza el paquete con el carácter especificado (cadena)
  3. Encabezado del paquete + formato del cuerpo del paquete

El siguiente es el diagrama de flujo básico del método encabezado + cuerpo:
inserte la descripción de la imagen aquí

Grandes y pequeños problemas endian en la transmisión de red

Hay dos formas en que la CPU puede guardar datos en la memoria:

Big Endian: los bytes de orden alto se almacenan en direcciones de orden bajo (los bytes de orden alto van primero)
Little-Endian (Little Endian): los bytes de orden alto se almacenan en direcciones de orden alto (los bytes de orden bajo van primero) ¿
inserte la descripción de la imagen aquí
Por qué? ¿Hay modos endian grandes y pequeños?

"Porque en el sistema informático usamos bytes como unidad, y cada unidad de dirección corresponde a un byte, y un byte es de 8 bits. Pero en el lenguaje C, además del carácter de 8 bits, también hay un tipo corto de 16 bits, Tipo largo de 32 bits (según el compilador específico), además, para procesadores con más de 8 bits, como procesadores de 16 bits o 32 bits, ya que el ancho de registro es mayor a un byte, debe haber un problema de cómo organizar varios bytes. Por lo tanto, conduce al modo de almacenamiento big-endian y al modo de almacenamiento little-endian"

Suponga que ahora desea transferir e intercambiar datos entre máquinas que usan diferentes órdenes de bytes, ¿qué debe hacer? (Los mismos datos, diferentes máquinas pueden tener diferentes interpretaciones, ¿no es contrario a la intención original?) Hay dos métodos, uno es convertirlos todos en texto para la transmisión, y el otro es transmitir ambos lados de acuerdo con el orden de bytes de una determinada parte (en este momento, existe un problema de conversión mutua entre diferentes órdenes de bytes).

IP, MAC y número de puerto: tres elementos para confirmar la información de identidad en la comunicación de red

IP

La dirección IP es la abreviatura de Dirección de Protocolo de Internet, traducida como "Dirección de Protocolo de Internet".

En la actualidad, la mayoría del software utiliza direcciones IPv4, pero IPv6 también está siendo aceptado por las personas, especialmente en la red educativa, que ha sido ampliamente utilizada.

Una computadora puede tener una dirección IP independiente y una LAN también puede tener una dirección IP independiente (parece que solo hay una computadora externa). Para el uso generalizado de direcciones IPv4 en la actualidad, sus recursos son muy limitados y no es realista que una computadora tenga una dirección IP y, a menudo, solo una red de área local tiene una dirección IP.

Al comunicarse en Internet, es necesario conocer la dirección IP de la otra parte. De hecho, la dirección IP ya se adjuntó al paquete de datos.Después de enviar el paquete de datos al enrutador, el enrutador encontrará la ubicación de la otra parte en el campo de acuerdo con la dirección IP y completará la transferencia de datos. El enrutador tiene un algoritmo muy eficiente e inteligente y encontrará la computadora de destino muy rápidamente.

IP especial

  1. Todos deben recordar 127.0.0.1, es una dirección IP especial que indica la dirección de esta máquina
  2. Estrictamente hablando, 0.0.0.0 ya no es una dirección IP real. Representa tal conjunto: todos los hosts desconocidos y las redes de destino. "No está claro" aquí significa que no hay una entrada específica en la tabla de enrutamiento local para indicar cómo llegar allí. Para esta máquina, es un "refugio", y todas las personas de los "tres noes" que no saben serán enviadas allí. Si establece la puerta de enlace predeterminada en la configuración de red, el sistema de Windows generará automáticamente una ruta predeterminada con la dirección de destino 0.0.0.0.
  3. 255.255.255.255 restringe las direcciones de transmisión. Para esta máquina, esta dirección se refiere a todos los hosts en este segmento de red (mismo dominio de transmisión). Si se traduce al lenguaje humano, debería ser así: "¡Todos en esta sala están prestando atención!" Los enrutadores no pueden reenviar esta dirección
  4. Dirección de multidifusión 224.0.0.1, preste atención a la diferencia entre esta y la transmisión. Esta es la dirección de 224.0.0.0 a 239.255.255.255. 224.0.0.1 se refiere a todos los hosts y 224.0.0.2 se refiere a todos los enrutadores. Dichas direcciones se utilizan principalmente para algunos programas específicos y programas multimedia. Si su host ha habilitado el IRDP (Protocolo de descubrimiento de rutas de Internet, utilizando la función de multidifusión), entonces debería haber una ruta de este tipo en la tabla de enrutamiento de su host.
  5. 169.254.XX Si su host usa la función DHCP para obtener automáticamente una dirección IP, entonces cuando su servidor DHCP falla o el tiempo de respuesta es demasiado largo y excede el tiempo especificado por un sistema, el sistema Wingdows le asignará dicha dirección. Si encuentra que la dirección IP de su host es algo como esto, desafortunadamente, nueve de cada diez veces su red no funciona correctamente.
  6. 10.XXX, 172.16.XX~172.31.XX, 192.168.XX Direcciones privadas, estas direcciones se utilizan ampliamente en la red interna de la empresa. Algunos enrutadores de banda ancha también suelen utilizar 192.168.1.1 como dirección predeterminada. Dado que la red privada no está interconectada con el mundo exterior, puede usar direcciones IP aleatorias. Dicha dirección está reservada para su uso para evitar confusiones de direcciones al acceder a la red pública en el futuro. Cuando una red privada que utiliza una dirección privada accede a Internet, se utiliza la traducción de direcciones (NAT) para traducir la dirección privada en una dirección legal pública. En Internet, tales direcciones no pueden aparecer. Para un host en una red, hay tres direcciones de red de destino legales que normalmente puede recibir: la dirección IP local, la dirección de transmisión y la dirección de multidifusión.

MAC

La realidad es que una LAN a menudo puede tener una IP independiente, en otras palabras, una dirección IP solo puede ubicarse en una LAN, no en una computadora específica. ¿Qué puedo hacer? No hay manera de comunicarse así.

De hecho, lo que realmente puede identificar de manera única a una computadora es la dirección MAC, y la dirección MAC de cada tarjeta de red es única en el mundo. Cuando la computadora sale de fábrica, la dirección MAC se ha codificado en la tarjeta de red (por supuesto, también se puede modificar mediante algunas "habilidades rápidas"). El enrutador/conmutador en la LAN realiza un seguimiento de la dirección MAC de cada computadora.
La dirección MAC es la abreviatura de Dirección de control de acceso a medios, traducida literalmente como "Dirección de control de acceso a medios", también conocida como Dirección LAN (Dirección LAN), Dirección Ethernet (Dirección Ethernet) o Dirección física (Dirección física).
Además de la dirección IP de la otra parte, el paquete de datos también estará acompañado por la dirección MAC de la otra parte. Cuando el paquete de datos llegue a la LAN, el enrutador/conmutador encontrará la computadora correspondiente de acuerdo con la dirección MAC en el paquete de datos, y luego reenviar el paquete de datos a él.Esto completa la transferencia de datos.

el número de puerto

Con una dirección IP y una dirección MAC, aunque se puede encontrar la computadora de destino, aún es imposible comunicarse. Una computadora puede proporcionar múltiples servicios de red al mismo tiempo, como servicio web (sitio web), servicio FTP (servicio de transferencia de archivos), servicio SMTP (servicio de buzón), etc., solo la dirección IP y la dirección MAC, aunque la computadora puede recibe correctamente el paquete de datos, pero no sabe a qué programa de red entregar el paquete de datos para su procesamiento, por lo que la comunicación falla.

Para distinguir diferentes programas de red, la computadora asignará un número de puerto único (Número de puerto) a cada programa de red, por ejemplo, el número de puerto del servicio Web es 80, el número de puerto del servicio FTP es 21 y el número de puerto del servicio SMTP es 25 .

Puerto (Port) es un concepto virtual, lógico. Un puerto puede entenderse como una puerta por la que entran y salen datos, cada puerta tiene un número diferente, que es el número de puerto. Como se muestra abajo:
inserte la descripción de la imagen aquí

máscara de subred

Supongo que te gusta

Origin blog.csdn.net/qq_41224270/article/details/127917883
Recomendado
Clasificación