首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSI层代码的实际实现

OSI层代码的实际实现
EN

Stack Overflow用户
提问于 2016-11-26 15:02:00
回答 1查看 2.9K关注 0票数 0

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

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

我之所以问这个问题,是因为我想在868 The频段上创建自己的网络,并且我想使用一些现有的代码(用于ex )。一个DataLink错误纠正和这样的代码-因为这只是远远超出我的能力),但也编写我自己的网络层代码,以自定义设备的交互方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-26 15:04:38

是否类似于负责所有这一切的特定HW/SW设置的网络驱动程序?

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

性能:在处理数据包时需要做大量工作,因此在将应用层数据分配到绑定到给定套接字的应用程序之前,在内核中完成这些工作更有效。

安全性:内核防止被破坏的用户做“坏”的事情,比如欺骗他们的IP地址或者用ICMP消息淹没另一个主机。

一个很好的资源应该是Linux内核源代码

  • net -在这里您可以找到所有核心设备和协议实现(IP、TCP、UDP等)
    • dev.c -设备管理
    • ipv4 - IPv4和UDP,TCP v4
    • ipv6 - IPv6和UDP,TCP v6

  • drivers/net -网络设备驱动程序
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40819677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档