我正在开发一个旨在模拟真实网络的应用程序。为了做到这一点,我需要有关于如何在系统中形成数据包的详细信息。
假设您有一个应用程序层消息,并且您希望将其封装在传输层有效负载中,并在标头中为所需进程添加特定端口号,然后将其封装在网络层有效负载中并添加IP地址。
我的问题是
我只想注意到我已经阅读过计算机网络:自上而下的方法和Foruzan关于这个主题的书,但那里的所有信息都是理论上的。
提前致谢。
答案 0 :(得分:1)
如果您询问实际的实现,通常每个层的消息都作为较低层消息的整个有效负载传送。谈论Windows或Linux等操作系统中的TCP / IP堆栈,没有SSL / TLS,这取决于您使用的套接字类型。假设您使用TCP,STREAM套接字,您通过发送或写入系统调用发送的应用程序层消息将成为TCP消息的有效负载。 TCP段和IP数据报的处理发生在OS内核中。第2层帧的处理发生在NIC的设备驱动程序(在内核中)和部分在NIC硬件中。这取决于特定的NIC。
要添加的其他内容是某些NIC能够计算TCP段和UDP数据报的校验和。然后内核将此任务卸载到NIC。只有校验和。