免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 请教freebsd下ipfw的实现及设计,高手指点哈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-24 12:05 |只看该作者 |倒序浏览
我现在要在freebsd下写一个类似ipfw的项目,要实现对TCP连接的状态跟踪,同时对包过滤规则要实现高速的匹配,可是我在freebsd自身的ipfw.c 代码却感觉他写的很乱 (我可能没有看明白),不明白他究竟是怎么实现的,高手能不能指点我一下,iptable下对TCP定义了四种连接状态,我定义了七种,不知道是否合理,大伙儿可不可以帮我分析一下:

主要设计如下几种规则:
[add | delete] rule [allow | deny] [ip | tcp | udp | icmp] from [src IP] to [dst IP]

发起连接端的TCP状态流程可以如下来表示:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

接收端的TCP状态流程可以如下表示:

CLOSED->LISTEN->SYN&ACK->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED

TCP连接有着更为细节的东西,在我的TCP状态跟踪模块中不考虑同时打开,同时关闭的状态变化。在努力考虑后,我定义了如下几种状态跟踪:
#define TCP_ESTABLISHED        1
#define TCP_SYS_SENT                  2
#define TCP_SYS_RECV                3
#define TCP_FIN_WAIT                  4
#define TCP_LAST_ACK                5
#define TCP_CLOSE                     6
#define TCP_CLOSE_WAIT              7        

可以这样来说明:



发起TCP连接端          mytcp_State               TCP接收端
-------------------> SYN                 
                            TCP_SYN_SENT
                                                     SYN,ACK <-----------------
                            TCP_SYN_RECV
------------------->ACK      
                            TCP_ESTABLISHED   
--------------------->发送                      发送 <-----------------
                            TCP_ESTABLISHED
…..
--------------------->FIN
                            TCP_FIN_WAIT
                                                     ACK <------------------
                            TCP_CLOSE_WAIT
                                                     FIN <-------------------
                           TCP_LAST_ACK
--------------------->ACK
                            TCP_CLOSE
TCP包允许转发的规则是:
1.        TCP_SYN_SENT 不转发 发起端的 非 SYN 包
2.        TCP_SYN_RECV 不转发 接收端的 任何包 (发起端没有做出应答)
3.        TCP_ESTABLISHED 可以互相转发 非FIN, RST, SYN包
4.        TCP_FIN_WAIT和TCP_CLOSE_WAIT 不转发 发送 FIN 标志端的包
5.        不转发SYN, FIN 同时都有的包
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP