![ping缁勭綉鏂瑰紡](../p_w_upload/200910/200910161255681018949.jpg)
预置条件:
1 , pc 和路由器端口的 ip 地址配置如上图,掩码均为 24 比特
2 , pc 上没有 arp 表,没有到其他网段的路由表
3 ,路由器没有配置任何路由协议
pc1 能够ping 通pc2 的过程:
1 , pc1 上配置缺省路由 route add <?xml:namespace prefix = st1 />0.0.0.0 mask 0.0.0.0 192.168.1.2 ,即默认网关为 192.168.1.2 此时 pc1 发出 arp 请求报文,目的 MAC 广播,源 MAC 为 pc1 的 MAC ,内容为 who has 192.168.1.2 ;
p1 回应该报文并发送 arp 应答给 pc1 ,目的 MAC 为 pc1 的 MAC ,源 mac 为 p1 的 MAC ,内容为 192.168.1.2 at p1 的 MAC
1 , pc 和路由器端口的 ip 地址配置如上图,掩码均为 24 比特
2 , pc 上没有 arp 表,没有到其他网段的路由表
3 ,路由器没有配置任何路由协议
pc1 能够ping 通pc2 的过程:
1 , pc1 上配置缺省路由 route add <?xml:namespace prefix = st1 />0.0.0.0 mask 0.0.0.0 192.168.1.2 ,即默认网关为 192.168.1.2 此时 pc1 发出 arp 请求报文,目的 MAC 广播,源 MAC 为 pc1 的 MAC ,内容为 who has 192.168.1.2 ;
p1 回应该报文并发送 arp 应答给 pc1 ,目的 MAC 为 pc1 的 MAC ,源 mac 为 p1 的 MAC ,内容为 192.168.1.2 at p1 的 MAC
此过程中
pc1
上和路由器上生成相应的
arp
表
2
,
pc2
上配置缺省路由
route add 0.0.0.0 mask 0.0.0.0 192.168.2.2
,即默认网关为
192.168.2.2
与第一步相似需要配置缺省路由,有
arp
请求和应答的过程
此过程中
pc2
上合路由器上生成相应的
arp
表
3
,路由器上配置静态路由192.168.1.1的下一跳是192.168.1.2;192.168.2.1的下一跳是192.168.2.2----粗心大意导致这一步是错误的。路由器的作用就是桥接不同网段,所以路由器上不应该再配置路由了;只需要PC上生成相应的路由即可。
4
,
pc1
上执行命令
ping 192.168.2.1
pc1
上的过程:<?xml:namespace prefix = o />
首先生成
icmp
请求报文协议栈的内容
然后生成
ip
协议栈的内容,目的
ip
是
192.168.2.1
,源
ip
是
192.168.1.1
然后查路由表没有表项匹配,按照缺省路由转发,即需要发给默认网关
192.168.1.2
;
再查
arp
表项,获得默认网关的
MAC
,于是封装报文链路层目的
MAC
为
p1
的
MAC
,源
MAC
为
pc1
的
MAC
路由器上的过程:
收到该
icmp
请求报文后解析,目的
MAC
为自己的
MAC
,则进一步解析
目的
ip
不是自己的
ip
,于是查路由表获得下一跳的端口和
ip
地址
Ip
层信息不做修改
查
arp
表得到下一跳的
MAC
信息
修改报文的链路层信息,将目的
MAC
修改为
pc2
的
MAC
,源
MAC
不变
pc2
上的过程:
收到该
icmp
请求报文后解析,目的
MAC
为自己的
MAC
,则进一步解析
目的
ip
是自己的
ip
,则进一步解析
识别是
icmp request
报文,于是构造
icmp reply
报文
首先生成
icmp
应答报文协议栈的内容
然后生成
ip
协议栈的内容,目的
ip
是
192.168.1.1
,源
ip
是
192.168.2.1
然后查路由表没有表项匹配,按照缺省路由转发,即需要发给默认网关
192.168.2.2
;
再查
arp
表项,获得默认网关的
MAC
,于是封装报文链路层目的
MAC
为
p2
的
MAC
,源
MAC
为
pc2
的
MAC
路由器上的过程:
与
icmp
请求报文类似,是反向转发
pc1
上的过程:
pc1
收到
icmp reply
报文后解析,识别目的
MAC
为自己的
MAC
,则进一步解析
目的
ip
是自己的
ip
,则进一步解析
识别是
icmp reply
报文,接下来是
icmp
协议栈的工作了
显示在
pc1
上的结果就是
ping
通了。
转载于:https://blog.51cto.com/dukeslayer/213335