了解七层如何在理论上相互作用和操纵数据的理论是一回事,但是如何用实际代码在现实世界中实现这一点是另一回事。
我想知道这些层在实践中是如何实现的(PC就是一个例子,因为它使用了与路由器不同的所有层等) - 每一层都是一个单独的过程,它有一个标准化的API(所以有许多软件协同工作)或类似于网络驱动程序,用于特定的硬件/软件设置负责所有这些使用共享库等?还是其他一些完全不同的方法?
我问这个的原因是因为我想在868MHz频段创建自己的网络,我想使用一些现有代码(例如DataLink纠错和这样的代码 - 因为这只是方式超出我的技能)但也写我自己的网络层代码来自定义设备交互的方式。
答案 0 :(得分:2)
类似于用于特定硬件/软件设置的网络驱动程序,负责所有这些
是。在大多数现代操作系统中,出于性能和安全原因,网络堆栈在内核中实现。
性能:处理数据包需要做很多工作,因此在将应用程序层数据分派给绑定到给定套接字的应用程序之前,在内核中完成这项工作会更有效。
安全性:内核可防止未成熟的用户执行"糟糕的"事情,比如欺骗他们的IP地址或用ICMP消息充斥其他主机。
要查看的好资源是Linux kernel source code。
net
- 在这里您可以找到所有核心设备和协议实现(IP,TCP,UDP等)
drivers/net
- 网络设备驱动程序