免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4703 | 回复: 7
打印 上一主题 下一主题

非要划分层次的话,网卡驱动原来属于链路层? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-27 09:21 |只看该作者 |倒序浏览
在网卡驱动程序发送数据包时
它收到从上层发过来的数据包,这个上层原来是网络层?!收到的这个pkt不包括任何的链路层头部?!链路层头部需要在驱动程序中给它加上?!
请问是这样地吗?



我曾经深深的以为,网卡驱动只是负责发送一个已经完全打包的pkt!没想到?!

论坛徽章:
0
2 [报告]
发表于 2010-08-27 12:31 |只看该作者
网卡网卡。自然有以太网、令牌环网、xxx网卡,以太网协议和令牌环网协议本身都是链路层协议,比如以太网的csma/cd机制来保证链路的共享,令牌环的令牌机制。只是这些协议肯定都是由芯片来实现的,不像网络层协议可以由软件来实现(为了效率嘛)。而驱动驱动,就是驱动芯片的,所以可以这么说,驱动工作在连路层

论坛徽章:
0
3 [报告]
发表于 2010-08-27 14:04 |只看该作者
这样说的话,平时所谓的“内核协议栈”肯定不包括2层以下了,因为2层头根本不是完全由软件实现的

其实用软件构造2层头的效率,真的比硬件差好多吗?

论坛徽章:
0
4 [报告]
发表于 2010-08-27 14:23 |只看该作者
回复 3# SK|fisker


    没有你的驱动去enable\disable芯片寄存器,芯片也不会自动为你加什么头的。
我这里指的链路层也包括Media Access Control哈,比如csma/cd,不光是封装一个头这么简单,你这个节点关键是要负责detect当前链路的能量,判断当前有没有其他节点在占用该链路,然后决定是‘回避’,或是‘抢占’,这才是‘媒介访问管理’需要的嘛。这种事情软件做效率太低。

论坛徽章:
0
5 [报告]
发表于 2010-08-27 14:50 |只看该作者
多谢楼上的解释
看来还需要进一步看网卡驱动的具体实现
不过,只就“添加头部”来说,应该是这样吧(猜测,纯的)——
根据ARP得到目的链路层地址,然后将这个链路层地址写入寄存器(本机的地址自然不在话下了)
然后网卡芯片组成一个完整的以太帧,发~~~~了出去!

-----------------
另,驱动程序直接操作的应该是MAC吧,PHY对驱动程序应该不可见吧。
我还没看到这一步,暂时猜测是这样的关系

论坛徽章:
0
6 [报告]
发表于 2010-08-27 23:24 |只看该作者
说实话, 没看懂SNAIL 老兄的回复.

LZ的那些信息从哪里看来的?

AS FAR AS I KNOW, 网卡和驱动包括了第一和第二层. 但是LINUX 上, ETHERNET 情况下, 发送一个 MAC 包的时候, MAC 地址是由LINUX NETWORK STACK 传给网卡驱动的. 网卡驱动并不自己添加任何东西, 最多CRC一下, 然后让网卡发出去.

建议看看网卡驱动: http://linux.chinaunix.net/bbs/thread-1095257-1-14.html

有的地方输入的英文,因为现在这个机器上中文输入法不好用. 不好意思.

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
7 [报告]
发表于 2010-08-28 01:48 |只看该作者
题目基本正确, 除了:

1, PHY算是物理层的东西了, 也是需要driver去deal with的。
2, 现在的网卡,做了很多本来 ×传统上× 由协议栈做的事情, 例如TCP/UDP 的checksum, offloading等等

论坛徽章:
0
8 [报告]
发表于 2010-08-28 10:16 |只看该作者
我觉得讨论驱动工作哪一层没意义的。驱动软件永远是个被动的东西,他的责任无非就是提供一个抽象的硬件,为上层策略隐藏硬件的细节。当然不排除这种情况,驱动可能要做一些工作,比如前面提到的crc的计算;但也是因为硬件为了性价比省电路,将一些计算量/晶体管比不高的计算工作交给驱动软件来做。驱动仍然扮演的小二的角色,为硬件服务(fallback)而已。所以,讨论驱动工作在哪一层其实就是讨论芯片工作在哪一层。
还有,链路层的工作远不止封装包这么简单,链路层的水很深,拿媒质访问控制(MAC layer)来说,比如有线的以太网采用载波监听/冲突检测策略来解决平等地位的节点如何公平的访问共享的有线信道;无线的802.15系列采用载波监听/冲突避免来解决同样的在无线共享信道的访问问题,为什么无线环境下不能用冲突检测呢?这些都是媒质访问层要思考的问题。其实哪怕一个很简单通信环境都有媒质访问控制,比如两个设备,一个主,一个从,通过rs232-485相连,这里,主/从角色的划分就是为了媒质访问的控制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP