0

我正在开发一个旨在模拟真实网络的应用程序。为此,我需要详细了解系统中数据包的形成方式。

假设您有一个应用层消息,您希望将其封装在传输层有效负载中,并在标头中添加所需进程的特定端口号,然后将其封装在网络层有效负载中并添加 IP 地址。

我的问题是

  • 上层协议的数据包到下层的封装在哪里发生?
  • 网卡驱动程序是否负责操作系统中的那个或其他部分?如果是的话,是哪一部分?

我只想指出,我已经阅读了计算机网络:一种自上而下的方法和 Foruzan 关于该主题的书,但那里的所有信息都非常理论化。

提前致谢。

4

1 回答 1

1

如果您要询问实际的实现,通常一层的每条消息都作为下层消息的整个有效负载来传达。在没有 SSL/TLS 的 Windows 或 Linux 等操作系统中谈论 TCP/IP 堆栈,这取决于您使用的套接字类型。假设您使用 TCP、STREAM 套接字,您通过 send 或 write 系统调用发送的应用层消息将成为 TCP 消息的有效负载。TCP 段和 IP 数据报的处理发生在 OS 内核中。第 2 层帧的处理部分发生在 NIC 的设备驱动程序(在内核中)和部分 NIC 硬件中。这取决于特定的 NIC。

需要补充的是,一些 NIC 能够计算 TCP 段和 UDP 数据报的校验和。然后内核将此任务卸载到 NIC。只有校验和。

于 2016-08-22T06:08:24.047 回答