免费注册 查看新帖 |

Chinaunix

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

g-bios TCP protocol support [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-07 17:55 |只看该作者 |倒序浏览
本帖最后由 conke 于 2011-10-07 17:56 编辑

[Description]
目前g-bios已支持ARP, IP, ICMP, UDP, TFTP, DHCP等协议,TCP部分正在开发中。第一阶段的目标是完成如下功能:
1. 三次握手及fin过程
2. 实现TCP layer的delivery算法
3. 实现send()和recv()
具体进展,包括issue及solution见后面各贴

论坛徽章:
0
2 [报告]
发表于 2011-10-07 18:09 |只看该作者

patch for tcp-recv

本帖最后由 knnkk 于 2011-10-07 18:22 编辑

patch for tcp-recv

            该patch 实现tcp 中基本 的  recv 功能。

add-tcp-recv.patch.tar

10 KB, 下载次数: 14

论坛徽章:
0
3 [报告]
发表于 2011-10-07 18:10 |只看该作者
0001-fix-sk_close-tcp-connection-termination.patch.gz (1.55 KB, 下载次数: 29)

sk_close()

基本实现TCP连接关闭过程

论坛徽章:
0
4 [报告]
发表于 2011-10-11 10:40 |只看该作者
本帖最后由 archer_myc 于 2011-10-11 10:48 编辑

回复 1# conke
TCP: fix tcp_layer_deliver() and other bugs, add a function
以下是详细改动:
改变tcp_header的数据结构,大小端的问题。
修复了tcp_send_packet() 一个小bug,主要是没有给其中一个变量赋值,发送数据包有时候会出现问题。
修复tcp_layer_deliver()的bug,及完善相应的状态机转换。主要的改动都在这一层。
增加一个函数,其功能主要是提供帮助和选项,可以指定端口和ip。(还待完善)
还有一些小地方的改动就不一一列举了,这些改动主要是一些出错的判断及处理。 0001-TCP-fix-tcp_layer_deliver-and-other-bugs-add-a-funct.patch.bz2 (2.5 KB, 下载次数: 22)

0001-TCP-fix-tcp_layer_deliver-and-other-bugs-add-a-funct.patch.bz2

2.5 KB, 下载次数: 17

论坛徽章:
0
5 [报告]
发表于 2011-10-11 12:07 |只看该作者
回复 4# archer_myc

great job!

不过,你的patch需要分成两个:one for TCP layer, one for ftp.c

论坛徽章:
0
6 [报告]
发表于 2011-10-11 13:06 |只看该作者
本帖最后由 archer_myc 于 2011-10-11 13:32 编辑

回复 5# conke

TCP:fix tcp_layer_deliver()

修复tcp_layer_deliver()的bug,及完善相应的状态机转换
0001-TCP-fix-tcp_layer_deliver.patch.bz2 (1.18 KB, 下载次数: 17)

论坛徽章:
0
7 [报告]
发表于 2011-10-11 13:32 |只看该作者
回复 4# archer_myc

FTP: perfect ftp.c

完善ftp.c,主要是提供简单帮助和选项,可以指定端口和ip。(还待完善)


    0001-FTP-perfect-ftp.c.patch.bz2 (1.4 KB, 下载次数: 17)

论坛徽章:
0
8 [报告]
发表于 2011-10-12 17:44 |只看该作者
本帖最后由 archer_myc 于 2011-10-12 18:42 编辑

回复 5# conke

TCP: fix tcp_layer_deliver()


bug:
在tcp_layer_deliver()函数中,如果对方最后发送的数据包标志位为FIN,PSH,  ACK位的时候,由于该数据包长度为0,tcp_layer_deliver()函数并没有把该数据包挂到链表上,然而我们在recv()函数中去链表里收数据的时候便会收不到数据,陷入死循环。
fix bug:
当对方发送的最后一个数据包带有FIN,PSH,ACK位的时候,即使该数据包长度为0也挂到链表上,由上层的recv()函数收到这个数据包处理之后再free(),而不是在tcp_layer_deliver()函数中回对方一个ACK之后就直接free().

0001-TCP-fix-tcp_layer_deliver.patch.bz2 (636 Bytes, 下载次数: 17)

论坛徽章:
0
9 [报告]
发表于 2011-10-12 17:58 |只看该作者
回复 8# archer_myc

fix了什么bug? 别忘了描述
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP