Directorio de artículos
Qué sucede desde la tarjeta de red hasta el límite de la pila de protocolos:
Proceso de aceptación de paquetes de datos
La recepción de paquetes de datos pasa por tres capas de abajo hacia arriba: el controlador de la tarjeta de red, el espacio del núcleo del sistema y, finalmente, la aplicación del espacio del usuario.
Ahora expliquemos en detalle:
- Cuando llega un nuevo paquete de datos,
NIC
(network interface controller
) es llamadoDMA
engine
porRing
Buffer
colocar el paquete de datos en el área de memoria del núcleo. - Una vez que el paquete de datos se recibe con éxito,
NIC
se inicia una interrupción y el controlador de interrupciones del kernel pasa el paquete de datos a laIP
capa. - Después del
IP
procesamiento de la capa, el paquete de datos se coloca en la cola para esperar elTCP
procesamiento de la capa. Cada paquete de datos pasa porTCP
una serie de pasos complejos en la capa para actualizar laTCP
máquina de estado, - Finalmente llegó
recv
Buffer
, esperando ser recibido y procesado por la aplicación.
Déjame explicarte algunos puntos:
Linux
El kernel usa la estructura de datossk_buff
(socket kernel buffers
) para describir un paquete de datos.Ring Buffer
El tamaño de es fijo, no contiene el paquete de datos real, pero contiene elsk_buff
descriptor puntiagudo . Cuando estéRing ``Buffer
lleno, se descartarán los nuevos paquetes.- A partir de
NIC
la memoriapackage
de datos no puede pasar porCPU
copiada directamente enKernel
la memoria, este proceso es
DMA
:Directional Memory Access
utiliza principalmente - De la figura anterior se puede ver
DMA
operando en el kernel de una memoria, esta memoria en realidad seDevice Driver
registra cuando laKernel
aplicación avanza. - Por último, cabe señalar que el paquete llega
recv
Buffer
,TCP
será de nuevo aACK
confirmar, tantoTCP
deACK
indica que el paquete ha sido recibido por el núcleo del sistema operativo, pero no garantiza necesariamente que la capa de aplicación recibe los datos (por ejemplo, esta vez el sistemacrash
), en general se recomienda la aplicación de capa de protocolo también Diseñe su propio mecanismo de confirmación.
El proceso de envío del paquete de datos
La línea roja en la figura anterior representa el proceso de envío de paquetes de datos. A diferencia de la ruta de recepción de datos, el envío de paquetes de datos también pasa por tres capas de arriba a abajo: aplicación de espacio de usuario, espacio de kernel del sistema y finalmente al controlador de la tarjeta de red.
- La aplicación primero escribe los datos
TCP
send buffer
y laTCP
capasend buffer
construye los datos en un paquete de datos y los reenvía a laIP
capa. IP
La capa coloca los paquetes de datos que se enviarán en la colaQDisc
(queueing discipline
).- Una vez que el paquete de datos se coloca correctamente
QDisc
, el descriptor que apunta al paquete de datossk_buff
se coloca en laRing
Buffer
cola de salida y luego el controlador de la tarjeta de red llama paraDMA
engine
enviar los datos al enlace de red.