免费注册 查看新帖 |

Chinaunix

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

网卡驱动和应用层的socket的之间的关系 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-02 20:27 |只看该作者 |倒序浏览
我的理解
比如在应用层用socket发送一段数据时:
1.应用层的socket其实就是把我们的实际要发送的数据的前面添加一个udp或tcp的头部,然后再添加一个ip的头部。
2.然后交给内核层(怎么交互的?交给谁?)
3.网卡驱动拿到之后,再把他的前面添加一个以外网的头部,然后发送出去。
我的问题是:
1.关于应用层的socket,我的理解对不对?
2.这也涉及到了用户空间和内核空间的通信问题,应用层的socket和网卡驱动之间是怎么交互的?
期待高手回答

论坛徽章:
0
2 [报告]
发表于 2010-06-02 23:46 |只看该作者
简单的说,从SOCKET到网卡驱动之间还隔了十万八千里。

L3, L4 在LINUX OS中都有专门的实现,相应的头部都是在里面加的。MAC地址我记得也是在内核,而不是驱动中加的。

想完全搞明白的话,可以看看<UNDERSTANDING LINUX NETWORK INTERNALS>,虽然稍微老了点,不过还是比较实用的。不知道有无中文版。

论坛徽章:
0
3 [报告]
发表于 2010-06-08 07:27 |只看该作者
应用层的socket和网卡驱动没有关系吧,网卡驱动只是让你能识别它而已

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2010-06-10 16:40 |只看该作者
回复 2# accessory


    “MAC地址我记得也是在内核,而不是驱动中加的”

    我觉得不对把,mac地址跟网卡是息息相关、一一对应的,这个工作应该是网卡驱动作的吧!

论坛徽章:
0
5 [报告]
发表于 2010-06-10 23:33 |只看该作者
回LS:刚刚又看了一遍RTL8139的驱动,其中并不直接管理MAC地址。MAC地址是和网卡相关,不过OS可以直接从网卡中读出MAC地址,然后再处理。8139网卡只是接收一个SKB,其中包括了所有信息。如果MAC地址不对,或者被改过,网卡是不关心的。这也是为啥有MAC ADDRESS SPOOFING 的原因。

建议直接看看代码。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-06-11 11:47 |只看该作者
回复 5# accessory


    我知道,网卡接收的时候,接收到的包肯定是包括完整的以太网头部的;但发送的时候,网卡驱动好像没有为skb添加以太网头部,觉得不可思议。上次忘了在哪里看了,说是内核在网卡驱动的基础上还有一层,可以屏蔽不同的数据链路层设备。并且在这层提供了dev_queue_xmit和netif_rx。

论坛徽章:
0
7 [报告]
发表于 2010-06-11 22:22 |只看该作者
发送的时候也是内核加的MAC地址。反正就是个地址,谁加似乎差别不大。

论坛徽章:
0
8 [报告]
发表于 2010-06-15 16:09 |只看该作者
应用层调用socket函数与具体的网卡是扯不上关系的,具体与网卡扯上关系是在查找路由表的时候,路由表里面就有指向网卡的net_device指针

查找的路由表项又与你发送数据的source address和destination address有关

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2010-06-16 23:00 |只看该作者
回复 8# zhy-linux


    谢谢提示,那“在查找路由表的时候”这个动作也是在协议栈的里边做的啊

论坛徽章:
0
10 [报告]
发表于 2010-06-16 23:18 |只看该作者
So? Protocol is implemented in the Linux kernel, not in the NIC device driver.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP