El programa X presumiblemente tiene un socket abierto. Por simplicidad, supongamos que es un socket TCP. Ahora realiza una escritura () en ese socket, pasando un búfer lleno de datos. Esto se convierte en una llamada al sistema que luego ingresa al núcleo.
El núcleo realiza las comprobaciones adecuadas y luego transfiere los datos del usuario a un búfer del núcleo. Luego formatea uno o más segmentos TCP con la información de encabezado adecuada. Realiza una búsqueda de enrutamiento para determinar cómo llegar al otro extremo de la conexión TCP. Esto da como resultado un próximo salto y una interfaz. El paquete se entrega a la (digamos) rutina de salida de Ethernet que busca la dirección MAC para el próximo salto en la tabla ARP, y agrega un encabezado L2. El paquete ahora se entrega al controlador del dispositivo para la interfaz física. Ese controlador cuelga el paquete en el anillo DMA de salida y, si la salida no está en progreso, arranca el motor DMA. El motor DMA envía el paquete, le dice al conductor, que luego libera el paquete.
En el lado del receptor, el hardware recibe el paquete y verifica la dirección MAC de destino. Si coincide, DMA envía el paquete a un búfer de recepción vacío. Si la rutina de recepción del controlador no se está ejecutando, el chip activa una interrupción para activar la CPU. Cuando la CPU se ha ocupado del búfer, marcará la entrada del anillo DMA como libre. Para tratar con el paquete, la CPU mirará el encabezado L2 y determinará que es un paquete IP. Luego entrega el paquete a la rutina de entrada IP, que a su vez determina que es un paquete TCP. La rutina TCP busca la conexión para el paquete y determina si los datos deben ACK y si están listos para enviarse a la aplicación. Si está listo para enviar, coloca el contenido en el zócalo. El programa Y ahora se activa desde un select () o similar, y lee los datos del socket.
- ¿Qué opina del Protocolo de identidad del host (HIP) descrito por RFC 5201 / RFC 7401?
- ¿Cuál es el mejor marco o biblioteca de Python para aprender redes en general?
- ¿Cuál es la diferencia entre Wi-Fi y WLAN?
- ¿Por qué Quora tiene constantemente una advertencia de "no se puede conectar a Internet"?
- ¿Sería aconsejable usar LAN Ethernet para una aplicación dura en tiempo real, como la automatización de fábrica?
Por favor, hágame saber qué calificación le da su profesor en esta respuesta de tarea.