一、终端设备传输数据过程当本机访问目标主机时,通过(IP+掩码 求出网段地址)的方式,求出本机与目标主机的网段地址进行与运算,从而判断出主机与目标主机是否在同一网段内: 如: 本地地址(172.28.128.91/24) 目标地址1(172.28.128.20/24) 目标地址2(172.28.129.10/24) 通过地址与子网掩码的异或计算得出本机网段为172.28.128.0,目标1网段为172.28.128.0、目标2网段为172.28.129。 故认为地址1是同网段,地址2为不同网段。下图,通过IP与掩码的求出网段: 如果目标、本机在同网段,优先检查本机的ARP缓存表:成功匹配到目标的IP信息,获取到MAC地址,将直接进行封装数据向目标发送没有匹配到目标的IP信息,本机将发送ARP request请求目标主机MAC地址,收到ARP Replay获取到目标主机MAC地址之后再封闭数据向目标发送。如果目标、本机不在同网段,优先检查本机的ARP缓存表中是否存在本机的网关信息:成功匹配到网关的IP信息,获取到MAC地址,将直接进行封装数据向网关发送没有匹配到网关的IP信息,本机将发送ARP request请求网关MAC地址,收到ARP Replay获取到网关MAC地址之后再封闭数据向网关发送。下图,在windows终端查看arp缓存表:C:UsersAdministrator>arp -a 接口: 172.28.128.91 --- 0xd Internet 地址 物理地址 类型 169.254.10.171 58-69-6c-4c-5a-3b 动态 172.28.128.1 58-69-6c-4c-5a-3b 动态 172.28.129.177 88-44-77-d2-6c-59 动态二、交换设备传输数据过程交换机处理数据帧的3种方式:转发(Forwarding) 转发已知的单播帧(目标MAC信息在MAC地址表中存在) 泛洪(Flooding) 收到广播帧(目标MAC为全F时)、未知单播帧时(目标MAC信息不在MAC地址表) 丢弃(Discarding) 收到非正常的数据帧时(数据帧字节过小或过大,数据内容有误,FCS校验有误等) 交换机收到不同帧的转发过程: 当交换机收到数据帧之后,会优先将帧中的源MAC信息与接收帧的端口号进行一个绑定,然后记录在本机的MAC地址表中,这样做的好处就是下次有数据帧需要找某个目标MAC,可以通过MAC地址表快速的找到目标的信息与转发的端口。 MAC地址表:MAC地址表信息默认老化时间300秒,300秒内MAC信息没有更新/替换,将自动删除该MAC信息。如果端口状态变为了Down,相应的表项也会立即清除华为设备手动删除所有MAC地址表信息(含静态、动态等):undo mac-address[Huawei]display mac-address MAC address table of slot 0: --------------------------------------------------------------------------------------------------- MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID VSI/SI MAC-Tunnel --------------------------------------------------------------------------------------------------- 5489-98dc-20a4 1 - - Eth0/0/1 dynamic 0/- 5489-9836-620f 1 - - Eth0/0/2 dynamic 0/- --------------------------------------------------------------------------------------------------- Total matching items on slot 0 displayed = 2 对于交换机收到不同帧时的转发过程: 交换机收到已知单播帧 已知单播帧:帧中目标MAC地址已经存在本机MAC地址表中交换机收到单播帧之后,拆开发现需要找的目标MAC地址已经存在MAC地址表中,将直接将该帧从MAC地址表中记录的端口中发出。(交换机不修改帧中的源MAC、目标MAC) 交换机收到未知单播帧 未知单播帧:帧中目标MAC地址不存在本机MAC地址表中交换机收到单播帧之后,拆开发现需要找的目标MAC地址不存在MAC地址表中,将向除了收到该帧的端口,对其它端口进行泛洪收到的未知单播帧。 交换机收到广播帧 广播帧:帧中目标MAC地址为ff-ff-ff-ff-ff-ff当收到广播帧之后,拆开发现需要找的目标是广播MAC,将向除了收到该帧的端口,对其它端口进行泛洪收到的广播帧。 三、路由设备传输数据过程 路由设备与交换设备不同,并不会转发广播包(在二层中称为广播帧),如果发现广播包(ARP)请求的IP并不是自己的IP地址将会直接丢弃该包。 1、当路由器收到数据包的时候,先拆开查看目标IP地址,然后基于路由表中的信息进行数据包的转发。 以下是AR1的路由表信息:[AR1]display ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 11 Routes : 11 Destination/Mask Proto Pre Cost Flags NextHop Interface 10.10.1.0/24 Direct 0 0 D 10.10.1.1 GigabitEthernet0/0/1 10.10.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 10.10.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0 127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/0 192.168.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 192.168.2.0/24 Static 60 0 RD 10.10.1.2 GigabitEthernet0/0/1 #《最优路由 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack02、如何知道下一跳的MAC地址?优先查看一下ARP缓存表(与交换机的MAC地址表相似),但并没有下一跳10.10.1.2的MAC信息。 以下是AR1的ARP缓存表信息:[AR1]display arp IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE VLAN/CEVLAN PVC ------------------------------------------------------------------------------ 192.168.1.254 00e0-fc34-2537 I - GE0/0/0 192.168.1.1 5489-98dc-20a4 11 D-0 GE0/0/0 ------------------------------------------------------------------------------ Total:4 Dynamic:2 Static:0 Interface:2 ARP缓存表中没有信息,将基于目标IP地址,匹配出最优的路由条目的下一跳IP地址,生成一个ARP Request,请求下一跳的MAC地址。 抓包可发现AR1确实发出了ARP Request请求AR2的地址 收到ARP Replay之后,ARP缓存表得到完善[AR1]display arp IP ADDRESS MAC ADDRESS EXPIRE(M) TYPE INTERFACE VPN-INSTANCE VLAN/CEVLAN PVC ------------------------------------------------------------------------------ 192.168.1.254 00e0-fc34-2537 I - GE0/0/0 192.168.1.1 5489-98dc-20a4 11 D-0 GE0/0/0 10.10.1.1 00e0-fc34-2538 I - GE0/0/1 10.10.1.2 00e0-fc65-0a30 11 D-0 GE0/0/1 #《有了10.10.1.2下一跳信息 ------------------------------------------------------------------------------ Total:4 Dynamic:2 Static:0 Interface:2 3、转发的时候源IP、目标IP不变,源MAC地址为出接口MAC地址、目标MAC地址为路由下一跳目标的MAC地址(通常是出接口对端的MAC地址) 以下是抓包结果,源MAC地址为AR1的10.10.1.1接口MAC地址,目标MAC地址为AR2的10.10.1.2接口MAC地址