【问题标题】:Simulating packet encapsulation模拟数据包封装
【发布时间】:2016-08-22 14:08:24
【问题描述】:

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

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

我的问题是

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

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

提前致谢。

【问题讨论】:

    标签: network-programming simulation encapsulation packet osi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 2021-02-27
      • 1970-01-01
      相关资源
      最近更新 更多