模拟数据包封装

时间:2016-08-22 05:49:46

标签: network-programming simulation encapsulation packet osi

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

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

我的问题是

  • 上层协议的封装在哪里?发送到较低层的数据包?
  • 网卡驱动程序是否对操作系统中的该部分或其他部分负责?若然,哪一部分?

我只想注意到我已经阅读过计算机网络:自上而下的方法和Foruzan关于这个主题的书,但那里的所有信息都是理论上的。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

要添加的其他内容是某些NIC能够计算TCP段和UDP数据报的校验和。然后内核将此任务卸载到NIC。只有校验和。