忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: ubuntuer

教你修改以及重构skb [复制链接]

论坛徽章:
0
发表于 2010-01-11 15:02 |显示全部楼层
原帖由 ubuntuer 于 2010-1-11 14:26 发表

我原先就是打算这么做的,呵呵  dreamice大哥说不大实用^_^   这个内核态web server我这个星期就搞出来  patinum兄 感觉应该不难了

难在你要处理 TCP 序号
难在要处理可能存在的 TCP 重传、乱序
难在要处理可能存在的 MSS、timestemp 等 TCP 选项
难在可能要处理 SACK 等特殊机制上
实际上快和重写一个 TCP 栈差不多了,如果你刚接触的话估计一个星期内全实现不太可能

论坛徽章:
0
发表于 2010-01-11 15:16 |显示全部楼层
原帖由 ubuntuer 于 2010-1-11 14:26 发表

我原先就是打算这么做的,呵呵  dreamice大哥说不大实用^_^   这个内核态web server我这个星期就搞出来  patinum兄 感觉应该不难了


楼主加油,期待你的kernel level web server,  不过我记得当年我刚接触linux时, 就跟人家吹牛2个星期精通linux。

BTW: 呼唤塑料袋~

论坛徽章:
11
2015年辞旧岁徽章
日期:2015-03-03 16:54:152016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:0915-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:16
发表于 2010-01-11 15:25 |显示全部楼层
灌水..........
原来比较佩服我的头儿
现在才发现,cu内核版的才是真神
膜拜
再膜拜

论坛徽章:
0
发表于 2010-01-11 16:41 |显示全部楼层
原帖由 W.Z.T 于 2010-1-11 15:16 发表


楼主加油,期待你的kernel level web server,  不过我记得当年我刚接触linux时, 就跟人家吹牛2个星期精通linux。

BTW: 呼唤塑料袋~

不要拿我和你相提并论嘛   人家都不好意思了

论坛徽章:
0
发表于 2010-01-11 16:48 |显示全部楼层
原帖由 platinum 于 2010-1-11 15:02 发表

难在你要处理 TCP 序号
难在要处理可能存在的 TCP 重传、乱序
难在要处理可能存在的 MSS、timestemp 等 TCP 选项
难在可能要处理 SACK 等特殊机制上
实际上快和重写一个 TCP 栈差不多了,如果你刚接触的话 ...

恩  刚已经尝试的写了三小时了...
对于重传 分片  乱序 MSS  timestemp我都没考虑....
惭愧了


  1.     tcph->dest = o_tcph->source;
  2.     tcph->seq = o_tcph->ack_seq;
  3.     tcph->ack_seq = o_tcph->ack_seq+1;

  4. if(pkt_len>0)
  5.       tcph->psh = 1;
  6.     else
  7.       tcph->psh = 0;
  8.            
  9.     tcph->fin = 0;
  10.    
  11.     if(flag == 0)
  12.       tcph->syn = 1;
  13.     else
  14.      tcph->syn = 0;

  15. tcph->ack = 1;
复制代码

对于seq因为上一个数据包有ack_seq我直接拿来用的,本方的ack_seq我只是简单的+1(这样肯定是不严谨的^_^)
三次握手完成之后将全局变量flag设置为1    本方只有要传送的出去l2 l3 l4头的数据>0也就是pkt_len>0就设置psh...  

  1. unsigned char* payload = "HTTP/1.1 200 OK\r\n"
  2.                          "Date: Mon, 11 Jan 2010 02:20:35 GMT\r\n"
  3.                          "Server: Apache/2.2.3 (CentOS)\r\n"
  4.                          "Last-Modified: Mon, 11 Jan 2010 02:20:10 GMT\r\n"
  5.                          "ETag: \"210c9-4a-2d34ea80\"\r\n"
  6.                          "Accept-Ranges: bytes\r\n"
  7.                          "Content-Length: 74\r\n"
  8.                          "Connection: close\r\n"
  9.                          "Content-Type: text/html; charset=UTF-8\r\n"
  10.                          "<form>\r\n"
  11.                          "<div><label>test</label></div>\r\n"
  12.                          "</form>\r\n";
复制代码


对照wireshark所抓的包 mac ip头 tcp标志没错....   关键是seq^_^

白金兄这块是如火纯青啊...小弟我惭愧啊   太多东西没考虑就夸下大口一个星期

论坛徽章:
0
发表于 2010-01-11 17:08 |显示全部楼层
哪里哪里,我也是知其然,不知其所以然,呵呵

论坛徽章:
0
发表于 2010-01-12 09:23 |显示全部楼层
不得不顶,赞楼主的动手精神
昨天拿回去试了下,可以用,
只是比较新的内核sk_buff不太一样,有几处要改下。
向lz学习

论坛徽章:
0
发表于 2010-02-02 13:55 |显示全部楼层
入木三分啊!

论坛徽章:
0
发表于 2010-03-12 10:13 |显示全部楼层
学习了。。
对checksum计算那部分的函数非常的迷糊,LZ能否给点资料让我学习学习。。

谢谢

论坛徽章:
0
发表于 2010-03-12 10:43 |显示全部楼层
I FU LE YOU....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP