模拟数据包封装

Simulating packet encapsulation

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

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

我的问题是

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

提前致谢。

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

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