报文跨网段传输的过程
Mac地址
MAC地址概述
-
Media Access Control Address(MAC):媒体存取控制位,也称为物理地址
-
在网络体系结构中属于数据链路层
-
MAC一般被固化在网卡的点可擦可编程只读存储器EEPROM中,也被称为硬件地址
-
一般主机用户拥有两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球为一的MAC地址。MAC地址是对网络上每个接口的唯一标识,而不是每一个设备的唯一标识。
IEEE 802局域网MAC地址格式 (48bit)
-
扩展的唯一标识符EUI
-
EUI48
-
-
b0:
- 0:单播
- 1:多播
-
b1:
- 0:全球管理
- 本地管理
-
b1 b0 MAC地址类型 占比 0 0
1全球管理 单播地址 厂商生产网络设备固化
全球管理 多播地址 标准网络设备所支持的多播地址,用于特定功能(交换机生成树协议)1/4
1/41 0
1本地管理 单播地址 有管理管理员分配 覆盖全球管理单播地址,优先级高
用户对主机进行软件配置,以表明属于那些多播组,剩余46位为1时,就是广播地址1/4
1/4 -
台式机、wifi、蓝牙都有mac地址
-
-
十六进制:XX-XX-XX-XX-XX-XX
-
标准表示方法:XX-XX-XX-XX-XX-XX(Windows)
-
其他表示方法:
- XX:XX:XX:XX:XX:XX(linux、苹果、安卓)
- XXXX.XXXX.XXXX(思科PT)
-
字节发送顺序
- 字节发送顺序:第一字节——第六字节
- 比特发送顺序:b0——b7
MAC解决的问题
-
在广播信道上实现发送单播帧
-
使用点对点通信的信道不需要使用地址
-
当多个主机连接在同一个广播信道上,要想实现主机及间一对一的通信,需要每台主机都必须有一个唯一的地址作标识
-
MAC作用:用于区别广播域内不同的设备
MAC地址举例
-
单播MAC地址
-
PC1向PC3发送报文
-
报文格式:
目的MAC地址 源MAC地址 帧首部其他字段、数据载荷、帧尾部 C_Mac A_Mac … -
PC2收到后比较MAC地址,发现不匹配,丢弃该帧
-
PC3收到后,比较MAC地址,发现匹配,然后交给上层处理
-
-
-
广播MAC地址
-
PC1向PC3发送报文
-
报文格式:
目标MAC地址 源MAC地址 帧首部其他字段、数据载荷、帧尾部 FF-FF-FF-FF-FF-FF A_Mac … -
PC2收到后发现时广播地址,然后交给上层处理
-
PC3收到后发现时广播地址,然后交给上层处理
-
-
-
多播MAC地址
-
PC2多播组列表
07-E0-12-F6-2A-D8
PC3多播组列表
07-80-1A-F6-2A-20
-
PC1发送组播报文
-
报文格式:
目的MAC地址 源MAC地址 帧首部其他字段、数据载荷、帧尾部 07-E0-12-F6-2A-D8 A_Mac … -
多播地址:第一个字节为1、3、5、7、9、B、D、F时,报文为多播
-
给主机配置多播表进行私有应用是,不能使用公有的标准多播地址
-
PC2收到报文后,发现该多播帧目的地址在自己的多播组列表中,于是接受该报文,并交给上层处理
-
PC3收到报文后,发现发现该多播帧目的地址不在在自己的多播组列表中,于是丢弃该报文
-
-
交换机Switch
-
用于电信号转发的网络设备
-
交换机只关心MAC地址,不关心IP地址
-
MAC地址表:端口与设备的MAC地址映射的表
端口 MAC地址 -
工作原理
-
数据包:包含目标MAC地址、源MAC地址、网络层内容(3-7层内容)
目标MAC 源MAC 网络层内容 -
(学习)交换机收到数据包后,首先把数据源MAC与接受报文的端口记录在自己的MAC地址表中
-
(转发)交换机根据目标MAC DIZ查找发出端口:
- 在MAC地址表中找到与目标MAC地址关联的端口——>从关联端口发出报文
- 在MAC地址表中没找到与目标MAC地址关联的端口——>向(除了接收端口)所有端口发送报文(泛洪)
-
IP地址
-
IP地址(Internet Protocol Address)是指互联网协议地址、网际协议地址
-
因特网上主机和路由器使用的地址,用于表示两部分信息:
- 网络编号:标识因特网上的网络
- 主机编号:表示同一网络上不同的主机(或路由器)
-
MAC地址不具备区分不同网络的功能
- 一个单独的网络,不接入因特网,可以只使用MAC地址
- 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用
-
数据包再转发的过程中IP地址与MAC地址变化情况
- 源IP和目的IP保持不变
- 源MAC地址和目的MAC地址逐个链路(或网络)改变
PC1–>R1 | R1–>R2 | R2–>PC2 | |
---|---|---|---|
网络层IP地址 | 源IP:PC1_IP 目的IP:PC2_IP | 源IP:PC1_IP 目的IP:PC2_IP | 源IP:PC1_IP 目的IP:PC2_IP |
数据链路层MAC地址 | 源MCA:PC1_mac 目标MAC:AR1L_mac | 源MCA:AR1R_mac 目标MAC:AR2L_mac | 源MCA:AR2R_mac 目标MAC:PC2_mac |
路由器
-
路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。
-
特指实现OSI七层中网络层功能的路由器
-
不包含交换机功能
-
路由器内有路由表和ARP高速缓存表
-
-
作用:
- 分割网络:可将一个大型网络划分成多个子网,提高关系效率和安全性
- 路由选择:根据不同的路由选择算法,选择最佳路径转发报文,提高效率
- 支持不同协议
-
路由器的路由表
-
路径选择,用于指导数据包如何转发的表项
-
决定下一跳,决定数据包应该发送到哪一个吓一跳路由器或者直连的网络段。
目标网络/掩码 协议类型 优先级 开销 标志 下一跳 出接口
-
-
路由器ARP缓存表
-
存储目标主机IP地址与MAC地址的映射关系
-
减少ARP请求,提高效率
-
支持代理ARP功能
IP地址 MAC地址 类型
-
地址解析协议ARP
ARP报文流程:
- 源主机发送报文时(已知IP地址),在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址
- 若找到:封装MAC帧进行发送
- 没找到:发送ARP请求(封装在广播MAC帧中)
- 目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给源主机发送ARP响应(封装在单播MAC帧中)
- 源主机收到ARP响应后,将目的主机的IP地址与MAC地址记录到自己的ARP高速缓存表中,封装之前想发送的MAC帧并发送给目的主机
- APR作用范围:逐段链路或一个网段内部
- ARP高速缓存表在IP层使用
同网段报文传输过程
PC1向PC2发送报文
-
初始信息
- PC1、PC2、PC3的ARP高速缓存表为空
- 交换机LSW1的MAC地址表为空
- 设备端口地址如图所示
-
过程:
-
PC1构造发送的报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 ???? PC1_mac PC2_ip PC1_ip XXXXXXXX -
PC1在自己的ARP高速缓存表中查询PC2_ip对应的MAC地址,未查到PC2的信息
-
PC1向所在的网段内发送ARP请求(封装在广播帧)
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 FF-FF-FF-FF-FF-FF PC1_mac PC2_ip PC1_ip ARP请求 -
LSW1收到PC1的ARP请求后,首先将PC1的信息记录在MAC地址表上
端口 MAC地址 类型 端口1 PC1_mac dynamic -
LSW1检查报文目标MAC地址为广播地址,于是把报文发送给(除了接受广播帧)所有端口
-
PC2接收到广播帧后,检查目标MAC地址,发现是广播帧,于是把报文交给上层处理
-
PC2把PC1的信息记录在自己的ARP高速缓存表中
IP地址 MAC地址 类型 PC1_ip PC1_MAC dynamic -
PC2检查该帧的目标IP地址是自己,同时该报文是ARP请求报文,于是PC2向PC1发送ARP回应报文
目标MAC 源MAC 目标IP 源IP 网络层信息 PC1_mac PC2_mac PC1_ip PC2_ip ARP回应 -
LSW1收到PC2发送的ARP回应报文后,先把PC2的信息记录在自己的MAC地址表中
端口 MAC地址 类型 端口1 PC1_mac dynamic 端口2 PC2_mca dynamic -
LSW1检查报文的目标MAC地址,MAC地址为PC1_mac,然后在自己的MAC地址表查找与PC1_mac地址关联的端口,是端口1
-
LSW1从端口1以将报文发送出去
-
PC1收到ARP回应报文后,首先检查目标MAC地址,发现目标MAC地址与自己相同,然后把报文交给上层处理
-
PC1先把PC2的信息记录在自己的ARP高速缓存表中
IP地址 MAC地址 类型 PC2_ip PC2_MAC dynamic -
PC1完善发送给PC2的报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 PC2_mac PC1_mac PC2_ip PC1_ip XXXXXXXX -
LSW1收到报文后(记录PC1的信息,已存在),检查报文的目标MAC地址,MAC地址为PC2_mac,然后在自己的MAC地址表中查找与PC2_mac匹配的端口,是端口2
-
LSW1从端口2把报文发送出去
-
PC2收到报文
-
跨网段报文传输过程
PC1向PC3发送报文
-
已知信息
-
PC1已知PC3 的IP地址
-
网关设置
- PC1的网关为AR1的G0/0/0接口
- PC2的网关为AR1的G0/0/1接口
- PC3的网关为AR2的G0/0/1接口
-
所有设备的IP地址、端口MAC地址如图所示
-
所有设备(除交换机)的ARP高速缓存表为空
-
交换机MAC地址表为空
-
路由器AR1路由表信息
目标网段/掩码 下一跳 出接口 类型 其他 192.168.13.0/24 192.168.12.2 G0/0/2 static 192.168.10.0/24 —— G0/0/0 直连 192.168.11.0/24 —— G0/0/1 直连 192.168.12.0/24 —— G0/0/2 直连 -
路由器AR2路由表信息
目标网段/掩码 下一跳 出接口 类型 其他 192.168.10.0/24 192.168.12.1 G0/0/0 static 192.168.11.0/24 192.168.12.1 G0/0/0 static 192.168.12.0/24 —— G0/0/0 直连 192.168.13.0/24 —— G0/0/1 直连
-
-
报文发送过程(PC1–>PC3)
-
PC1构造报文
-
检测自己与PC3是否属于同一网段:用PC3的IP地址跟自己的子网掩码进行与运算的结果与自己的网段进行比较,PC3与自己不在同一网络
-
需要把报文发送给网关,已知网关IP,查询ARP高速缓存表寻找网关MAC地址,缓存表为空,需要发送ARP请求报文
目标MAC地址 源MAC地址 目标IP 源IP 网络层信息 FF-FF-FF-FF-FF-FF PC1_mac 192.168.10.1 192.168.10.2 ARP请求
-
-
交换机LSW1收到报文后
-
首先把PC1的信息记录在MAC地址表中
端口 MAC地址 类型 端口1 PC1_mac dynamic -
然后根据报文的目标MAC地址选择发送端口,目标MAC地址为广播,于是LSW1把报文发送至所有端口(除接收报文的端口)
-
-
路由器AR1的G0/0/0接口收到报文后
-
检查报文目标MAC地址,发现是自己,于是把报文交给上层处理
-
路由器首先把PC1 的信息记录在自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.10.2 PC1_mac dynamic -
路由器检查报文为ARP请求报文,目标IP地址为自己的G0/0/0,于是向PC1回复ARP回应报文
目标MAC地址 源MAC地址 目标IP 源IP 网络层信息 PC1_mac AR1/0_mac 192.168.10.2 192.168.10.1 ARP回应
-
-
交换机LSW1收到ARP回应报文后
-
首先把AR1的G0/0/0口的信息记录在自己的MAC地址表中
端口 MAC地址 类型 端口1 PC1_mac dynamic 端口2 AR1/0_mac dynamic -
检查目标MAC地址,目标MAC地址为PC1_mac,然后在MAC地址表中查找跟PC1_mac关联的端口,是端口1
-
LSW1把报文从端口1发出
-
-
PC1收到ARP回应报文后
-
先检查报文的目标MAC地址,发现目标MAC地址是自己,然后把保温交给上层处理
-
PC1先把AR1的G0/0/0口的信息记录在自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.10.1 AR1/0_mac dynamic -
然后根据ARP回应报文中的信息补充发送给PC3的报文,发送报文
目标MAC 源MAC 目标IP 源IP 网络层信息 AR1/0_mac PC1_mac 192.168.13.2 192.168.10.2 XXXXXXXX
-
-
交换机LSW1收到报文后
-
先检查目标MAC地址,目标MAC地址为AR1/0_mac,然后在自己的MAC地址表中查找与之对应的端口
-
此时LSW1的MAC地址表为
端口 MAC地址 类型 端口1 PC1_mac dynamic 端口2 AR1/0_mac dynamic -
LSW1将报文从端口2发出
-
-
路由器AR1的G0/0/0端口收到报文后
-
先检查报文的目标MAC地址,发现是自己,于是把报文交给上层处理
-
路由器检查报文的目标IP,目标IP网段在路由表中的下一跳为192.168.12.2,端口为G0/0/2
目标网段/掩码 下一跳 出接口 类型 其他 192.168.13.0/24 192.168.12.2 G0/0/2 static 192.168.10.0/24 —— G0/0/0 直连 192.168.11.0/24 —— G0/0/1 直连 192.168.12.0/24 —— G0/0/2 直连 -
路由器封装报文,在ARP缓存表中查找192.168.12.2的信息,ARP缓存表为空,于是向G0/0/2端口所在的网络,发送ARP请求报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 FF-FF-FF-FF-FF-FF AR1/2_mac 192.168.12.2 192.168.12.1 ARP请求
-
-
路由器AR2的G0/0/0口接收到ARP请求报文后
-
先检查报文的目标MAC地址,发现是自己,于是把报文交给上层处理
-
路由器先把AR1的G0/0/2接口的信息添加到自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.12.1 AR1/2_mac dynamic -
路由器检查报文的目标IP地址,是自己,报文内容为ARP请求,于是向AR1的G0/0/2端口发送ARP回应报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 AR1/2_mac AR2/0_mac 192.168.12.1 192.168.12.2 ARP回应
-
-
路由器AR1的G0/0/2端口收到ARP回应报文后
-
先检查报文的目标MAC地址,发现是自己,于是把报文交给上层处理
-
路由器把AR2的G0/0/0端口的信息记录在自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.12.2 AR2/0_mac dynamic -
AR1根据收到的ARP回复信息完善报文,并把报文发送给AR2的G0/0/0端口
目标MAC 源MAC 目标IP 源IP 网络层信息 AR2/0_mac AR1/2_mac 192.168.13.2 192.168.10.2 XXXXXXXX
-
-
路由器AR2的G0/0/0端口收到报文后
-
先检查报文的目标MAC地址,发现是自己,于是把报文交给上层处理
-
路由器AR2检查报文的目标IP地址,目标IP地址为192.168.13.2,是直连路由,出接口为G0/0/1
目标网段/掩码 下一跳 出接口 类型 其他 192.168.10.0/24 192.168.12.1 G0/0/0 static 192.168.11.0/24 192.168.12.1 G0/0/0 static 192.168.12.0/24 —— G0/0/0 直连 192.168.13.0/24 —— G0/0/1 直连 -
路由器构造报文,源MAC地址改为自己的G0/0/1端口,在ARP高速缓存表中查找IP为192.168.13.2的信息,未找到,于是向G0/0/1所在的网络发送ARP请求报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 FF-FF-FF-FF-FF-FF AR2/1_mac 192.168.13.2 192.168.13.1 ARP请求
-
-
交换机LSW2收到ARP请求报文后
-
首先把AR2的G0/0/1接口信息添加到自己的MAC地址表中
端口 MAC地址 类型 端口1 AR2/1_mac dynamic -
检查目标MAC地址,是广播,于是LSW2把报文转发到所有端口(除接收报文的端口)
-
-
PC3收到报文后
-
首先检查报文目标MAC地址,是广播报文,于是把报文交给上层处理
-
PC3把AR2的G0/0/1端口的信息添加到自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.13.1 AR2/1_mac dynamic -
PC3检查报文目标IP地址,是自己,报文内容为ARP请求,于是PC3向AR1的G0/01端口发送ARP回应报文
目标MAC地址 源MAC地址 目标IP地址 源IP地址 网络层信息 AR2/1_mac PC3_mac 192.168.13.1 192.168.13.2 ARP回应
-
-
交换机LSW2收到报文后
-
先把PC3的信息添加到MAC地址表中
端口 MAC地址 类型 端口1 AR2/1_mac dynamic 端口2 PC3_mac dynamic -
检查目标MAC地址,目标地址AR2/1_mac,在自己的MAC地址表中查找与目标地址关联的端口,是端口1
-
LSW2把报文从端口1转发出去
-
-
路由器AR2的G0/0/1端口收到报文后
-
先检查目标MAC地址,是自己,于是把报文交给上层处理
-
路由器把PC3的信息添加到自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.13.2 PC3_mac dynamic -
路由器根据ARP回应报文完善发给PC3的报文,发送报文
目标MAC 源MAC 目标IP 源IP 网络层信息 PC3_mac AR2/1_mac 192.168.13.2 192.168.10.2 XXXXXXXX
-
-
交换机LSW2收到报文后
- 检查目标MAC地址,为PC3_mac,在自己的MAC地址表中查找与目标地址关联的端口,是端口2
- LSW2把报文从端口2转发出去
-
PC3收到从PC1发来的报文
-
先检查目标MAC地址,是自己,于是把报文交给上层处理
-
路由器把PC3的信息添加到自己的ARP高速缓存表中
IP地址 MAC地址 类型 192.168.13.2 PC3_mac dynamic -
路由器根据ARP回应报文完善发给PC3的报文,发送报文
目标MAC 源MAC 目标IP 源IP 网络层信息 PC3_mac AR2/1_mac 192.168.13.2 192.168.10.2 XXXXXXXX
-
-
交换机LSW2收到报文后
- 检查目标MAC地址,为PC3_mac,在自己的MAC地址表中查找与目标地址关联的端口,是端口2
- LSW2把报文从端口2转发出去
-
PC3收到从PC1发来的报文
-