一、终端设备传输数据过程当本机访问目标主机时,通过(IP掩码求出网段地址)的方式,求出本机与目标主机的网段地址进行与运算,从而判断出主机与目标主机是否在同一网段内:如: 本地地址(172。28。128。9124) 目标地址1(172。28。128。2024) 目标地址2(172。28。129。1024) 通过地址与子网掩码的异或计算得出本机网段为172。28。128。0,目标1网段为172。28。128。0、目标2网段为172。28。129。 故认为地址1是同网段,地址2为不同网段。下图,通过IP与掩码的求出网段: 如果目标、本机在同网段,优先检查本机的ARP缓存表:成功匹配到目标的IP信息,获取到MAC地址,将直接进行封装数据向目标发送没有匹配到目标的IP信息,本机将发送ARPrequest请求目标主机MAC地址,收到ARPReplay获取到目标主机MAC地址之后再封闭数据向目标发送。如果目标、本机不在同网段,优先检查本机的ARP缓存表中是否存在本机的网关信息:成功匹配到网关的IP信息,获取到MAC地址,将直接进行封装数据向网关发送没有匹配到网关的IP信息,本机将发送ARPrequest请求网关MAC地址,收到ARPReplay获取到网关MAC地址之后再封闭数据向网关发送。下图,在windows终端查看arp缓存表:C:UsersAdministratorarpa接口:172。28。128。910xdInternet地址物理地址类型169。254。10。17158696c4c5a3b动态172。28。128。158696c4c5a3b动态172。28。129。177884477d26c59动态二、交换设备传输数据过程交换机处理数据帧的3种方式:转发(Forwarding)转发已知的单播帧(目标MAC信息在MAC地址表中存在)泛洪(Flooding)收到广播帧(目标MAC为全F时)、未知单播帧时(目标MAC信息不在MAC地址表)丢弃(Discarding)收到非正常的数据帧时(数据帧字节过小或过大,数据内容有误,FCS校验有误等)交换机收到不同帧的转发过程: 当交换机收到数据帧之后,会优先将帧中的源MAC信息与接收帧的端口号进行一个绑定,然后记录在本机的MAC地址表中,这样做的好处就是下次有数据帧需要找某个目标MAC,可以通过MAC地址表快速的找到目标的信息与转发的端口。MAC地址表:MAC地址表信息默认老化时间300秒,300秒内MAC信息没有更新替换,将自动删除该MAC信息。如果端口状态变为了Down,相应的表项也会立即清除华为设备手动删除所有MAC地址表信息(含静态、动态等):undomacaddress〔Huawei〕displaymacaddressMACaddresstableofslot0:MACAddressVLANPEVLANCEVLANPortTypeLSPLSRIDVSISIMACTunnel548998dc20a41Eth001dynamic054899836620f1Eth002dynamic0Totalmatchingitemsonslot0displayed2对于交换机收到不同帧时的转发过程:交换机收到已知单播帧 已知单播帧:帧中目标MAC地址已经存在本机MAC地址表中交换机收到单播帧之后,拆开发现需要找的目标MAC地址已经存在MAC地址表中,将直接将该帧从MAC地址表中记录的端口中发出。(交换机不修改帧中的源MAC、目标MAC)交换机收到未知单播帧 未知单播帧:帧中目标MAC地址不存在本机MAC地址表中交换机收到单播帧之后,拆开发现需要找的目标MAC地址不存在MAC地址表中,将向除了收到该帧的端口,对其它端口进行泛洪收到的未知单播帧。交换机收到广播帧 广播帧:帧中目标MAC地址为ffffffffffff当收到广播帧之后,拆开发现需要找的目标是广播MAC,将向除了收到该帧的端口,对其它端口进行泛洪收到的广播帧。三、路由设备传输数据过程 路由设备与交换设备不同,并不会转发广播包(在二层中称为广播帧),如果发现广播包(ARP)请求的IP并不是自己的IP地址将会直接丢弃该包。 1、当路由器收到数据包的时候,先拆开查看目标IP地址,然后基于路由表中的信息进行数据包的转发。 以下是AR1的路由表信息:〔AR1〕displayiproutingtableRouteFlags:Rrelay,DdownloadtofibRoutingTables:PublicDestinations:11Routes:11DestinationMaskProtoPreCostFlagsNextHopInterface10。10。1。024Direct00D10。10。1。1GigabitEthernet00110。10。1。132Direct00D127。0。0。1GigabitEthernet00110。10。1。25532Direct00D127。0。0。1GigabitEthernet001127。0。0。08Direct00D127。0。0。1InLoopBack0127。0。0。132Direct00D127。0。0。1InLoopBack0127。255。255。25532Direct00D127。0。0。1InLoopBack0192。168。1。024Direct00D192。168。1。254GigabitEthernet000192。168。1。25432Direct00D127。0。0。1GigabitEthernet000192。168。1。25532Direct00D127。0。0。1GigabitEthernet000192。168。2。024Static600RD10。10。1。2GigabitEthernet001《最优路由255。255。255。25532Direct00D127。0。0。1InLoopBack02、如何知道下一跳的MAC地址?优先查看一下ARP缓存表(与交换机的MAC地址表相似),但并没有下一跳10。10。1。2的MAC信息。 以下是AR1的ARP缓存表信息:〔AR1〕displayarpIPADDRESSMACADDRESSEXPIRE(M)TYPEINTERFACEVPNINSTANCEVLANCEVLANPVC192。168。1。25400e0fc342537IGE000192。168。1。1548998dc20a411D0GE000Total:4Dynamic:2Static:0Interface:2ARP缓存表中没有信息,将基于目标IP地址,匹配出最优的路由条目的下一跳IP地址,生成一个ARPRequest,请求下一跳的MAC地址。 抓包可发现AR1确实发出了ARPRequest请求AR2的地址 收到ARPReplay之后,ARP缓存表得到完善〔AR1〕displayarpIPADDRESSMACADDRESSEXPIRE(M)TYPEINTERFACEVPNINSTANCEVLANCEVLANPVC192。168。1。25400e0fc342537IGE000192。168。1。1548998dc20a411D0GE00010。10。1。100e0fc342538IGE00110。10。1。200e0fc650a3011D0GE001《有了10。10。1。2下一跳信息Total:4Dynamic:2Static:0Interface:23、转发的时候源IP、目标IP不变,源MAC地址为出接口MAC地址、目标MAC地址为路由下一跳目标的MAC地址(通常是出接口对端的MAC地址) 以下是抓包结果,源MAC地址为AR1的10。10。1。1接口MAC地址,目标MAC地址为AR2的10。10。1。2接口MAC地址