在理论上了解七层是如何交互和操作数据的理论是一回事,但在实际代码中如何在现实世界中实现这一点则是另一回事。
我想知道这些层是如何在实践中实现的(例如PC,因为它使用了与路由器不同的所有层,等等)--是每个层都是一个具有标准化API的单独进程(因此有许多软件可以协同工作),还是类似于使用共享库负责所有这些工作的特定HW/SW设置的网络驱动程序?还是其他完全不同的方法?
我之所以问这个问题,是因为我想在868 The频段上创建自己的网络,并且我想使用一些现有的代码(用于ex )。一个DataLink错误纠正和这样的代码-因为这只是远远超出我的能力),但也编写我自己的网络层代码,以自定义设备的交互方式。
发布于 2016-11-26 15:04:38
是否类似于负责所有这一切的特定HW/SW设置的网络驱动程序?
是。在大多数现代操作系统中,由于性能和安全原因,网络堆栈是在内核中实现的。
性能:在处理数据包时需要做大量工作,因此在将应用层数据分配到绑定到给定套接字的应用程序之前,在内核中完成这些工作更有效。
安全性:内核防止被破坏的用户做“坏”的事情,比如欺骗他们的IP地址或者用ICMP消息淹没另一个主机。
一个很好的资源应该是Linux内核源代码。
net -在这里您可以找到所有核心设备和协议实现(IP、TCP、UDP等) dev.c -设备管理ipv4 - IPv4和UDP,TCP v4ipv6 - IPv6和UDP,TCP v6
drivers/net -网络设备驱动程序https://stackoverflow.com/questions/40819677
复制相似问题