MAC地址表工作于数据链路层,Linux系统中对应的是Linux Bridge。初始状态下,Bridge不知道哪个设备连接了自己,也不会知道所连设备的MAC地址;工作过程中,采用边学习边转发的方式,也就是基于SMAC学习生成MAC地址表,基于DMAC转发数据帧。
当发送端设备不知道接收端设备的MAC地址时,需要根据接收端设备的IP地址进行查询,以获得MAC地址。此时,需要ARP--Address Resolution Protocol--地址解析协议。具体来说,发送端设备发送一个ARP请求,并在广播域内询问,接收端收到ARP请求后将自己的MAC地址单播给发送端,发送端接收后记录IP和MAC的映射关系到本地ARP缓存表。
root@linux:/# arp
Address HWtype HWaddress Flags Mask Iface
_gateway ether fa:16:3e:bf:14:20 C ens3
30.0.0.2 ether fa:16:3e:42:4f:07 C ens3
root@linux:/# arp -n
Address HWtype HWaddress Flags Mask Iface
30.0.0.1 ether fa:16:3e:bf:14:20 C ens3
30.0.0.2 ether fa:16:3e:42:4f:07 C ens3
root@linux:/# arp -v
Address HWtype HWaddress Flags Mask Iface
_gateway ether fa:16:3e:bf:14:20 C ens3
30.0.0.2 ether fa:16:3e:42:4f:07 C ens3
Entries: 2Skipped: 0Found: 2
记录数据可能的传输路径,有两种表:
RIB:Routing Information Base,路由信息表;存放路由策略。
FIB:Forwarding Information Base,转发信息表;用来转发数据包。
#RIB
root@linux:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 ens3
30.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
169.254.169.254 _gateway 255.255.255.255 UGH 100 0 0 ens3
#FIB
root@linux:~# route -F
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 ens3
30.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
169.254.169.254 _gateway 255.255.255.255 UGH 100 0 0 ens3
Destination -- 目的网络地址
Genmask -- 子网掩码
Gateway -- 网关
Iface -- 接口,数据包从iface发送到下一跳
Flags -- 标记
U:动态路由
H:目标是一个主机;
G:路由指向网关;
目的网络地址和子网掩码共同确定目的网络范围,可以是主机地址、子网地址、或者默认路由。
路由表的匹配有精确匹配算法、最长前缀匹配算法(Longest Prefix Matching, 简称LPM)。
全部0条评论
快来发表一下你的评论吧 !