免费注册 查看新帖 |

Chinaunix

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

[内核入门] tcp/ip的网络层的报文的处理,一定需要内核程序处理吗? [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
1 [报告]
发表于 2017-02-08 18:17 |显示全部楼层
本帖最后由 _nosay 于 2017-02-08 18:26 编辑

回复 1# chouxiaoya9100


报文从网卡到你的进程,这叫“抓包”,内核提供协议栈,是为了方便应用程序的开发以及对各应用程序访问报文数据的保护,一般解析到应用数据部分复制给应用程序。

现在假设你自己是开发内核协议栈的人,你是不是可以选择将报文原封不动的交给应用程序,以及不是复制而是映射到应用程序的用户空间?
从技术上讲是可以的(不就是在内核少为报文剥点东西么),要不然不会有原始套接字,intel也开发不出dpdk,但从内核设计的角度考虑,这样是不行的。
① 原封不动:每个网络应用程序,都得自己一层一层的将应用数据剥出来;
② 映射:一旦有一个应用程序修改了报文,其它应用程序读到的报文内容都是错误的了。

从技术上可以做到,再加上Linux内核是开源的,还支持内核模块的动态加载,当然有方法将报文的完整内容交给应用程序(修改内核代码重新编译或单独实现一个.ko模块),燃蛾,“抓包”无论如何都得在内核做点事情,因为你的应用程序不能直接控制网卡,你所说的处理是指“报文解析”,完整报文如果进入你的应用程序,解析当然也完全可以由你自己实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP