目录
拓扑搭建与问题
如下面拓扑图1-1所示,PC1的IP为192.168.30.130/24,PC2的IP为192.168.30.3/27,两台PC机的网关都在路由器AR1上,网关为192.168.30.230/24。PC1能不能ping通PC2 ?抓包分析。
图1-1
相关配置
PC1:IP地址为192.168.30.130/24,GW:192.168.30.230。
PC2:IP地址为192.168.30.3/27, GW:192.168.30.230。
交换机LSW1:
[Huawei]system-view
[Huawei]sys LSW1
[LSW1]
路由器AR1:
<Huawei>system-view
[Huawei]sysname AR1
[AR1]interface GigabitEthernet 0/0/1
[AR1-GigabitEthernet0/0/1]ip address 192.168.30.230 24
查看各个设备的ARP缓存表
先查设备的ARP缓存表 ?与后面再次查看有对比。
PC1要访问PC2,数据要发送出去,必须要知道PC2的IP地址,但仅有IP地址是不行的,因为数据报文必须封装成帧才能通过数据链路层进行发送,而数据帧必须要包含目的MAC地址,所以PC1还要获取到PC2的MAC地址才行。MAC地址通过ARP协议来获取。
[AR1]display arp
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN/CEVLAN PVC
------------------------------------------------------------------------------
192.168.30.230 00e0-fcb6-457c I - GE0/0/1
------------------------------------------------------------------------------
Total:1 Dynamic:0 Static:0 Interface:1
[AR1]
[LSW1]display arp
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN
------------------------------------------------------------------------------
------------------------------------------------------------------------------
Total:0 Dynamic:0 Static:0 Interface:0
[LSW1]
两台PC机用arp -a命令查看ARP缓存表都是空。
PC>arp -a
Internet Address Physical Address Type
PC>
设备的ARP缓存表都是空的,因为还没有数据流。
PC1访问PC2与抓包情况
PC1使用ping 192.168.30.3命令访问PC2时,事先准备在交换机LSW1的接口Ethernet 0/0/1、Ethernet 0/0/2跟路由器AR1接口gigabitethernet 0/0/1上抓包查看。
1、PC1访问PC2,如图1-2所示。
图1-2
2、查看交换机LSW1的Ethernet 0/0/1抓包情况,如图1-3所示。
图1-3
3、查看交换机LSW1的Ethernet 0/0/2抓包情况,如图1-4所示。
图1-4
4、查看网关路由器AR1的gigabitethernet 0/0/1抓包情况,如图1-5所示。
图1-5
抓包分析:图1-3、图1-4与图1-5中的数字与下面分析点对应。
1、PC1访问PC2时,先根据自己的子网掩码长度知道目的(PC2)IP地址与自己是同一个网段。当PC1要将数据包发送到目的PC2时,会检查自己的ARP缓存表中是否存在PC2的IP地址对应的MAC地址,PC1检查到自身ARP缓存表是空的(前面有查看arp缓存表的操作),不存在PC2的MAC地址。所以PC1会发送ARP request来获取目的MAC地址。由于PC1不知道PC2的MAC地址,所以目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。该ARP request报文会通过交换机LSW1广播出去,在该网络上主机PC2跟网关路由器AR1都会收到该报文,查看交换机的Ethernet0/0/2跟AR1接口1抓包情况,都会看到该报文,网关AR1会阻止该报文发送到其它网络上。
2、网关AR1接收到PC1的ARP request报文,检查到该报文的目的地址与自己的IP地址不一样,会忽略该报文。
3、PC2接收到PC1的ARP request报文之后,检查到该报文的目的地址是与自己的IP地址一样的,则PC2先将该报文中的源MAC地址和源IP地址记录到自己的ARP缓存表中,然后回复一个ARP Reply报文,因为已经知道PC1的MAC地址了,所以该报文是单播发送的。
4、PC1收到PC2的ARP Reply报文后,检查到该ARP报文中的目的MAC地址与自己的MAC地址一样,将该源MAC地址和源IP地址记录到自己的ARP缓存表中。再次重新封装数据帧通过二层直接向PC2发送ICMP request 报文。
5、PC2收到PC1的ICMP request 报文,根据自己的子网掩码长度知道源(PC1)IP地址与自己不在同一个网段。会在自己的ARP缓存表中查找自己网关的MAC地址,发现没有网关的MAC地址,就会发送ARP request报文广播出去,在交换机Ethernet0/0/1跟网关AR1的接口1上都会收到该报文。
6、PC1接收到PC2的ARP request报文后,检查到该报文的目的地址与自己的IP地址不一样,忽略该报文。
7、网关AR1接收到PC2的ARP request报文后,检查到该报文的目的地址与自己的IP地址一样的,会先将该报文中的源MAC地址和源IP地址记录到自己的ARP缓存表中,然后回复一个ARP Reply报文。
8、PC1没有收到ICMP reply 应答包,会继续发送ICMP request 请求包,所以一开始会丢包。
9、PC2接收到网关AR1回复的ARP Reply应答包后,检查到该ARP报文中的目的IP地址与自己的IP地址一样,将该源MAC地址和源IP地址记录到自己的ARP缓存表中。这时PC2再次接收到PC1的ICMP request 请求包,PC2重新封装数据帧,源MAC地址为网关的MAC地址(要通过网关才能与PC2通信),回复发送ICMP reply到达网关。
10、网关AR1接收到PC2回复PC1的ICMP reply报文时(TTL为128),读取目的IP地址的网络部分,然后在路由表上查看,发现该报文目的IP地址是直连网段,查找自己的ARP缓存表,发现没有该ICMP reply报文中的目的IP地址(PC1)相对应的MAC地址,网关AR1发送ARP request报文 ,该报文通过交换机广播在整个网络中。
11、PC1接收到来自网关AR1的ARP request报文,检查到该报文的目的地址是与自己的IP地址一样的,单播一个ARP Reply应答包给网关AR1。
12、PC2接收到来自网关AR1的ARP request报文,检查到该报文的目的地址与自己的IP地址不一样,会忽略该报文。
13、网关AR1接收到PC1的ARP reply应答包后,检查到该报文的目的地址是与自己的IP地址一样的,首先将该报文中的源MAC地址和源IP地址记录到自己的ARP缓存表中。
14、PC1收不到ICMP reply 报文,会再次向PC2发送ICMP request报文,PC1认为自己与PC2是同网段的,直接通过二层转发给PC2,而PC2觉得自己与PC1不在同一个网段,所以会先找网关。PC2通过网关AR1回复PC1的ICMP request报文,封装数据帧时,目的MAC地址是网关的MAC地址,而不是PC1的MAC地址,源MAC地址是PC2的。
15、网关AR1接收到PC2去往PC1的ICMP replay报文数据流量(TTL值为128),网关会将源MAC地址由PC2的MAC地址换成网关AR1的MAC地址,目的MAC地址是PC1,重新封装数据帧,然后发送给PC1(TTL值为127)。PC2之后回复PC1的报文都会先发送给网关AR1,由网关AR1做三层转发。
再次查看各个设备的ARP缓存表
<AR1>display arp
IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE
VLAN/CEVLAN PVC
------------------------------------------------------------------------------
192.168.30.230 00e0-fcb6-457c I - GE0/0/1
192.168.30.3 5489-9822-20ca 1 D-0 GE0/0/1
192.168.30.130 5489-982c-091c 1 D-0 GE0/0/1
------------------------------------------------------------------------------
Total:3 Dynamic:2 Static:0 Interface:1
<AR1>
交换机的ARP缓存表是空,为什么?
因为交换机LSW1在该实验中只是做透明转发,自己没有做ARP解析,只是转发其它设备的ARP,所以它的ARP缓存表是空的。
PC1>arp -a
Internet Address Physical Address Type
192.168.30.3 54-89-98-22-20-CA dynamic
PC1>
PC2>arp -a
Internet Address Physical Address Type
192.168.30.130 54-89-98-2C-09-1C dynamic
192.168.30.230 00-E0-FC-B6-45-7C dynamic
PC2>
用tracert 命令追踪路径
PC1>tracert 192.168.30.3
traceroute to 192.168.30.3, 8 hops max
(ICMP), press Ctrl+C to stop
1 192.168.30.3 63 ms 78 ms 63 ms
PC1>
PC2>tracert 192.168.30.130
traceroute to 192.168.30.130, 8 hops max
(ICMP), press Ctrl+C to stop
1 192.168.30.230 62 ms 47 ms 47 ms
2 192.168.30.130 78 ms 94 ms 94 ms
PC2>
PC1去往PC2是直接通过二层转发的,而流量回来是要经过网关AR1三层转发的。
知识点补充
Ethernet II 以太帧格式
DMAC | SMAC | Type | Data | Fcs |
Type:类型,表示上层协议,0✖0800:IP协议;0✖0806:ARP协议。
上课做的笔记,有误请指教,勿喷。