争对IP碎片,通常的理解是将一个过大的UDP或者ICMP包(大于1472),在通过IP层传递到数据链路层的时.候,因为大于MTU,比如以太网的1500(这个1.500是IP首部加UDP首部在加数据.的总大小),从而在IP层上将上层传来的数据分成N份,每份分别封装在一.个IP头中进行传递。.这时有多个IP数据包承载一个UDP或者ICM.P的数据报,这些IP包拥有相同的标识数字,并且除了最后一个分片MF标.志字段为0外其它的分片MF标志字段均为1。因为上层数据被分片,这时除了第一个分片的IP数据字段中包含了上层数据的信息(因为UDP或者ICMP头部只在第一个分片中),所以后续的分片就不在包含上层的信息。 .
抱歉说了这么多废话,这些是我对IP碎片的理解,也.不晓得有没有错,如.果有错误那我想不通就很正常了。 ( 游戏 )
以下是我的问题了。先构建一个网络路由:三台机子,A,B,C,其中B装RH8,充当路由器和包过滤.防火.墙,分别连接两个主机A,B,均安装2000,A的地址是192.168.0.1,B是192.168.1.1。环境按照我对IP碎片的理解,那么就有这么个问题。除了第一片的其它分片不包含上层信息,那么如果我刻意发送大的.报文(比如从192.168.0.1 ping 192.168.1.1 -l 65535 ),那么.这个报文将被分片,如果这些I.P碎片在通过包过滤防火墙的时.候,如果.不设置允许IP碎片通过,(比如iptables -A FOR.WARD -p icmp --icmp-type 8 -s 192.168.0.1 -d 192.168.1.1 -j ACCEPT;iptables -A FORWARD -m -state --state ESTABLISHED,RELATED -j ACCEPT;iptables -P FORWARD DROP)那.么就只有第一片能够通过,因为其包含了完整的上层信息,说明这个包是从19.2.168.0.1到192.1.68.1.1的icmp r.equest包,即icmp类型8 ,而后续的包不包含这个信息,过应该被过滤。这时后通过的第一个包到到C,因为是分片的包,所以C将其缓存并等.待后续的包,但后续的包以被过滤,所以当等待一段时间后,超.时,这时候C会将包丢弃,故A不会得到C得响应,应该得到timed out的数据显示。 .
如果要让碎片能够通过,可以在ipt.ables 中加上-f的选项,让后续包通过,这时应该.得到响应。 --------------彩票
以上.是我根据理论推出的。但是实际试验中,我发现没有允许.碎片的时候A依然.可以得到C的响应,所以万分疑惑。希望各位大虾指点。小弟是网络的初学者,希望得到大家的帮助。 女人