当前位置:文档之家› 试验验证掩码错误对同网段ip通信的影响

试验验证掩码错误对同网段ip通信的影响

试验掩码设置错误对同网段ip通信的影响
目录
1,问题: (1)
2,用非路由器下的子网来模拟 (1)
3,用路由器下的子网来模拟测试 (9)
1,问题:
看网上问题问题同网段但一台掩码设置错误,是否能通信?
2,用非路由器下的子网来模拟
为了方便模拟,我们用环境中的pc18.250.0.145/24,路由192.168.206.1
和一个pc18.250.0.3/24,网关是192.168.206.1来模拟是否能通信。

我们来通过修改pc的掩码,查看路由表,抓包来模拟这个问题,得出答案。

Pc通信的原理
分为下面四步:
1,操作系统加载网卡时,根据ip地址和掩码与运算生成直连路由表项,根据网关设置生成缺省路由表项。

2,实际通信时,pc根据目标ip和自身掩码进行与运算,得出目标网络号。

3,用目标网络号去查询路由表找出匹配的表项。

4,根据路由表里的下一跳如果是自身ip地址,就是直连路由,就用此ip和接口mac 进行目标mac的查询,完成二层封装。

若下一跳是网关地址,就使用和网关在同一网段的的直连路由表项去查询网关的mac地址,完成mac查询,二层封装,数据包二层发向网关。

具体过程如下:
首先看本地网络实现IP 寻址,也就是我们所说的同一网段通信过程,现在我们假设有2个主机,他们是属于同一个网段。

主机A和主机B,首先主机A通过本机的hosts表或者wins 系统或dns系统先将主机B的计算机名转换为Ip地址,然后用自己的 Ip地址与子网掩码计算出自己所出的网段,比较目的主机B的ip地址与自己的子网掩码,发现与自己是出于相同的网段,主机A首先会查询自己的路由表,看在自己的路由表中能否找到去往目标网络(网络B)的路由条目,找到直连路由的路由表项,若网关是自己对应的ip,就使用这个ip地址去查询对应目标ip的mac地址。

首先在自己的ARP缓存中查找是否有主机B 的mac 地址,如果能找到就直接做数据链路层封装并且通过网卡将封装好的以太网帧发送有物理线路上去:如果arp缓存中没有主机B的的mac地址,主机A将启动arp协议通过在本地网络上的arp广播来查询主机B的mac地址,获得主机B的mac地址厚写入arp缓存表,进行数据链路层的封装,发送数据。

其实,假设2个主机不是同一网段,此时他们的通信过程又是怎么样的呢?
不同的数据链路层网络必须分配不同网段的Ip地址并且由路由器将其连接起来。

主机A 通过本机的hosts表或wins系统或dns系统先主机B的计算机名转换为IP地址,然后用自己的Ip地址与子网掩码计算出自己所处的网段,比较目的目的主机B的Ip地址,发现与自己处于不同的网段。

主机A首先会查询自己的路由表,看在自己的路由表中能否找到去往目标网络(网络B)的路由条目。

若没有直连路由,就去查询缺省路由,缺省路由下一跳指向自己设置的网关。

于是主机A将知道应该将次数据包发送给自己的缺省网关,即路由器的本地接口。

主机A在自己的ARP缓存中查找是否有缺省网关的MAC地址,如果能够找到就直接做数据链路层封装并通过网卡将封装好的以太网数据帧发送到物理线路上去,如果arp缓存表中没有缺省网关的Mac地址,主机A将启动arp协议通过在本地网络上的arp广播来查询缺省网关的mac地址,获得缺省网关的mac地址后写入arp缓存表,进行数据链路层的封装,发送数据。

数据帧到达路由器的接受接口后首先解封装,变成ip数据包,对ip 包进行处理,根据目的Ip地址查找路由表,决定转发接口后做适应转发接口数据链路层协议帧的封装,并且发送到下一跳路由器,次过程继续直至到达目的的网络与目的主机。

验证过程:
1,修改pc的掩码为27位,255.255.255.224,查看路由表。

Ip地址18.250.0.145,对应二进制为0001 0010 1111 1010 0000 0000 1001 0001
pc A的掩码27位255.255.255.224 1111 1111 1111 1111 1111 1111 1110 0000
上面两行相与的结果网络号0001 0010 1111 1010 0000 0000 1000 0000
对应的网络ip地址18 . 250 . 0 . 128
2,A ping B 18.250.0.3
B的ip地址18.250.0.31 二进制0001 0010 1111 1010 0000 0000 0000 0011
Pc A的掩码27位255.255.255.224 1111 1111 1111 1111 1111 1111 1110 0000
这两行相与的结果0001 0010 1111 1010 0000 0000 0000 0000
对应的网络ip地址18 . 250 . 0 . 0
18.250.0.0在路由表里没有准确匹配的项,走默认路由0.0.0.0,发向网关地址192.168.206.1 清一下arp缓冲后抓包分析
因为ping包发现网关路由器的lan口,路由器下没有18的子接口,路由器转向wan口发出,因为没有对应的回复,所以会超时。

结论:A PING B不通。

验证B和A的通信过程
1,同样pc B的ip和掩码
Ip地址18.250.0.3,对应二进制为0001 0010 1111 1010 0000 0000 0000 0011 pcB掩码24,255.255.255.0 1111 1111 1111 1111 1111 1111 0000 0000 上面两行相与的结果网络号0001 0010 1111 1010 0000 0000 0000 0000 对应的网络ip地址18 . 250 . 0 . 0
2,B ping A时过程分析
A的ip地址18.250.0.145. 二进制0001 0010 1111 1010 0000 0000 1001 0001 pcB掩码24位,255.255.255.0 1111 1111 1111 1111 1111 1111 1110 0000 这两行相与的结果. 0001 0010 1111 1010 0000 0000 0000 0000 对应的网络ip地址18 . 250 . 0 . 0
1,ping包抓包分析
结果是超时,很奇怪?
看抓包
看抓包已经回复ping的响应了,为啥不通?
Pc A已经有pc B的mac检查抓包里是否发现这个mac?
Pc A对icmp的响应消息发给了网关的mac地址,导致pc B没有收到包,显示超时。

为什么会这样?
想起来,A处理对B的回包时,会选默认路由,所以发向了网关的mac地址,路由器收到包后,因为路由器没有此网段的子网,会发向wan口到internet上去,由于没有得到响应,导致B收不到回包超时。

过程如下:
B的ip地址18.250.0.31 二进制0001 0010 1111 1010 0000 0000 0000 0011
pcA的掩码27位255.255.255.224. 1111 1111 1111 1111 1111 1111 1110 0000
这两行相与的结果0001 0010 1111 1010 0000 0000 0000 0000
对应的网络ip地址18 . 250 . 0 . 0
A的路由表里没有准确匹配18.250.0.0的表项,所以走默认路由
每次发包都要查询路由表,找对应的mac地址,封装完成。

3,用路由器下的子网来模拟测试
测试结果是可以通信:过程如图示
A的掩码24位,B的掩码是27位
A ping B的情况如图:
B ping A的情况如下:
A的mac地址44:37:e6:8c:94:27,B的mac地址44:37:e6:8e:cf:77
路由器的mac地址为70:ba:ef:e3:5e:12
● A ping B的过程分析
抓包分析如下:在A上的抓包
在B上的抓包,发现B对request的响应热reply包发到网关mac上去了,响应的ttl为128
在A上的抓包看reply消息
● B ping A在B上的抓包
B首先判断a的网段不是自己的直连路由,所以走默认路由,ping的request发向网关
mac地址。

在A上的抓包
因为路由器转发了到a的目的ip包,所以a收到的包ttl会减掉1。

当是路由器下的子网时,路由器会转发到目的子网主机,同时发icmp的路由重定位,非路由器子网,路由器不会转发处理,会发现wan口。

ICMP重定向报文是ICMP控制报文中的一种。

在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。

路由器也会把初始数据包向它的目的地转发。

发生ICMP重定向通常有两种情况:
1)当路由器从某个接口收到数据还需要从相同接口转发该数据时;
2)当路由器从某个接口到发往远程网络的数据时发现源ip地址与下一跳属
于同一网段时。

相关主题