原帖由 ssffzz1 于 2007-3-30 13:40 发表于 4楼
他说的好象是把TCP头换成UDP头,不过目前没有这个模块,你可以自己写一个的.
原帖由 独孤九贱 于 2007-3-30 13:49 发表于 5楼
较为直接的方式,肯定是在内核处理分片之前来做这个事情……
原帖由 ssffzz1 于 2007-3-30 14:03 发表于 8楼
可以他举的哪个例子是把TCP头替换成UDP头的.
但搞不明白他具体要干什么.
原帖由 ssffzz1 于 2007-3-30 14:08 发表于 10楼
哦,这肯定要出现大于MTU的情况,但在NETFILTER中是可以处理,进入到NETFILTER中的包是重足好了的.包修改后大于了MTU在离开NETFILTER后会被系统重新分片的,在NETFILTER中看到的是完整的包.
原帖由 platinum 于 2007-3-30 14:25 发表于 13楼
ssffzz 兄对修改数据包很有经验,而我在 chksum 方面是个弱项
ssffzz 可否针对 IP、TCP、UDP、ICMP 的 chksum 单独写个精华讲解一下应如何计算这些 chksum,用到哪些函数啊?
原帖由 platinum 于 2007-3-30 14:11 发表于 11楼
我就是不清楚重组、分片在 netfilter 里的状况是怎样的,所以想请教一下大家,ssffzz 兄说的和我之前推测的是一样的
若真是这样的话,netfilter 处理起来就很简单了,难点主要就在 chksum 了而已 ^_^
原帖由 独孤九贱 于 2007-3-30 14:47 发表于 15楼
1、netfilter为了完成连接跟踪,NAT等功能,需要一个完整的数据包,也就是说它会在进入模块时进行重组,离开的时候,该分片还得分片……
你可以在netfilter中看到很多用于检查是否分片包,如果是分片包,就 ...
原帖由 platinum 于 2007-3-30 15:11 发表于 16楼
请问九贱兄,分片和重组是否都是 netfilter 之外的工作呢?
换句话说,是否和我与 ssffzz 说的一样,netfilter 只是处理单独数据包就可以了?还是 netfilter 抓到的是重组前的?送出去前还要自己重新分片?
...
原帖由 funix_zjx 于 2007-3-30 16:27 发表于 18楼
最好的办法是建立一个虚拟设备 类似 ipip,gre隧道。 具体可以看ipip的内核代码
原帖由 ssffzz1 于 2007-3-31 16:30 发表于 20楼
关键是我没搞明白LZ是要做什么用途,还是单纯的技术问题.不过感觉在IPTABLES下做一个这样的模块效率也许不会太高,需要加长原缓冲区,加UDP头部,计算校验和,建立状态链表,返回的数据还需要做相 ...
原帖由 platinum 于 2007-3-30 16:36 发表于 19楼
完全可以,但似乎这样做的难度远大于编写一个可以直接挂接在 netfilter 上的 module
原帖由 playmud 于 2007-4-10 09:09 发表于 23楼
你觉得写一个这样的module容易?除了变换协议头以外还需要增加其他协议头,标识哪个数据包分片成了什么样子
还要计算tcp的序列,我觉得难度更大.类似于一个没有加密和hash计算的ipsec协议.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |