0

在理论上了解七层如何交互和操作数据的理论是一回事,但如何在现实世界中使用实际代码实现这一点是另一回事。

我想知道这些层在实践中是如何实现的(以 PC 为例,因为它使用与路由器不同的所有层等) - 每一层都是具有标准化 API 的单独进程(所以有很多协同工作的软件)还是类似于特定硬件/软件设置的网络驱动程序,使用共享库等负责所有这些?还是其他完全不同的方法?

我问这个的原因是因为我想在 868MHz 频段上创建自己的网络,并且我想使用一些现有的代码(例如 DataLink 纠错和此类代码 - 因为这超出了我的技能) 还编写了我自己的网络层代码来自定义设备交互的方式。

4

1 回答 1

2

类似于负责所有这些的特定硬件/软件设置的网络驱动程序

是的。在大多数现代操作系统中,出于性能和安全原因,网络堆栈都在内核中实现。

性能:处理数据包需要做很多工作,因此在将应用层数据分派到绑定到给定套接字的应用程序之前,在内核中完成这项工作效率更高。

安全性:内核防止未授权用户做“坏”的事情,例如欺骗他们的 IP 地址或用 ICMP 消息淹没另一台主机。

Linux 内核源代码是一个很好的参考资源。

  • net- 在这里您可以找到所有核心设备和协议实现(IP、TCP、UDP 等)
    • dev.c- 设备管理
    • ipv4- IPv4 和 UDP、TCP v4
    • ipv6- IPv6 和 UDP、TCP v6
  • drivers/net- 网络设备驱动程序
于 2016-11-26T15:04:38.893 回答