2.2.0 以太网 网络设备与终端设备在以太网中的传输数据过程
一、终端设备传输数据过程
- 当本机访问目标主机时,通过(IP+掩码 求出网段地址)的方式,求出本机与目标主机的网段地址进行
与运算
,从而判断出主机与目标主机是否在同一网段内:
- 如:本地地址(172.28.128.91/24)、目标地址1(172.28.128.20)、目标地址2(172.28.129.10/24)
- 通过计算得出本机网段172.28.128.0,目标1网段172.28.128.0、目标2网段172.28.129.0
- 下图,通过IP与掩码的求出网段:
- 如果目标、本机
在同网段
,优先检查本机的ARP缓存表:
- 成功匹配到目标的IP信息,获取到MAC地址,将直接进行封装数据
向目标
发送 - 没有匹配到目标的IP信息,本机将
发送ARP request
请求目标主机MAC地址
,收到ARP Replay获取到目标主机MAC地址之后再封闭数据向目标发送。
- 如果目标、本机
不在同网段
,优先检查本机的ARP缓存表中是否存在本机的网关信息:
- 成功匹配到网关的IP信息,获取到MAC地址,将直接进行封装数据
向网关
发送 - 没有匹配到网关的IP信息,本机将
发送ARP request
请求网关MAC地址
,收到ARP Replay获取到网关MAC地址之后再封闭数据向网关发送。
- 下图,在终端查看arp缓存表:
C:\Users\Administrator>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地址表信息默认老化时间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 InLoopBack0
2、如何知道下一跳的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地址