几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理


一、ARP协议

1、回顾要点


几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理

【两台主机通信过程】

Ø由于采用ICMP协议进行通信,双方从第三层开始协商,如上图所示,发送方主机在网络层将ICMP协议信息封装在IP报头中,源IP地址为“192.168.1.10”,目的IP地址为“192.168.1.20”,然后将数据报文送到数据链路层

Ø数据链路层封装MAC头部,其中包括泊MAC地址00-00-00-aa-aa-aa和目的MAC地址00-00-00-bb-bb-bb。之后送往物理层最终转换成电信号在网络介质中传输

《注意》:

   Arp属于广播形为,为二层广播

   ARP广播的目的地址是所有人:FF-FF-FF-FF-FF-FF

组播:它的形为是广播,但是目标是一部分人

【ARP查询过程】

当主机在数据链路层封装MAC地址的时候,主机会先查看自己的ARP缓存表,如果查找到IP地址对应的MAC地址,就执行后续封装过程;如果没有查找到对应的MAC地址,就开始ARP查询过程。

a)主机A发送ARP请求报文,其源IP和MAC地址都是自己的。目的IP地址请求方是即主机B的IP地址,目的MAC地址为FF-FF-FF-FF-FF-FF

b)由于目的MAC地址是一个广播地址,所以网内所有主机都能收到该请求报文,在本例中只有两台主机,因此主机B会收到请求报文

c)因为该请求报文中有主机A的IP与MAC字段(ARP字段中会有源地址的信息),主机B会将该信息记录在自己的ARP缓存表中,之后发送ARP回应报文给主机A

d)同样,主机A也会从主机B的ARP回应报文中记录对方的IP和MAC地址,并对应到ARP缓存中

e)这时,主机A会把刚刚获取的主机B的MAC地址封装在MAC包头内,继续后面的通信过程

【请思考】:

   1)如果网络中有很多台主机通过交换机互联,主机A发送ARP请求后是否所有主机都会给主机A发送ARP回应报文,为什么?

 答:不一定

   2)ARP缓存中的条目是否永远存在,是否可以手动写入?

 答:不永远存在,300S老化时间;可以手动写入。

   3)如果主机A并没有发送ARP请求报文,而主机B 主动发送ARP回应报文,这时主机A是否会存入自己的缓存中?

 答:会

《注意》:

网络层3个常用协议的顺序:

      ICMP:01协议

      IP:0800协议

      ARP:0806协议

2、扩展知识


几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理


【分析不同网络的ARP协议】

a)首先,主机A与主机C通信,双方的ARP缓存表中都没有彼此的IPMAC地对应条目

b)其次,ARP请求报文的目标MAC地址是FF-FF-FF-FF-FF-FF(二层广播地址),它的作用范围仅在广播范围内,也就是说ARP请求报文无法通过R1路由到达其他网段

c)所以,当接收方与发送方不在同一个网段时,ARP的请求报文将不在封装目的方的IP地址,而是封装发送方所在网段的网关地址,从而请求网关的   MAC地址。

二、交换机的转发原理

1、要点



几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理

【MAC地址表的形成】:

a)主机A与主机B通信,如上图所示,发送的数据帧源MAC地址为00-00-00-aa-aa-aa,目的MAC地址为00-00-00-bb-bb-bb

b)当交换机收到该数据帧的时候,交换机会动态地学习数据帧的源MAC地址,所谓“学习”是指数据帧的源MAC地址与接收端口的编号对应在表中;所谓“动态”是指这个条目并不会一直存储在MAC地址表中,一定时间扣,如果没有收到相同源MAC地址表中查询数据帧,交换机会“遗忘”掉这条记录

c)另一方面,交换机会在 MAC地址表中查询数据帧的目标MAC地址,如果找到,会将该数据帧从目标MAC地址所对应的接口转发出去;如果没有,交换机将会广播该数据帧

d)所以,一个局域网通信一段时间,基本上交换机会有所有激活设备的MAC地址记录(未被激活的会补遗忘”)

2、扩展知识

结论一:在MAC 地址表中,交换机的一个接口可以对应多个MAC地址

结论二;一个MAC地址只能对应在一个接口上

三、路由器的转发原理


几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理

Ø路由表记录的是网段信息,这些信息虽然不能把数据报文转发目的地,但是却能正确的方向转发,一步一步找到目的地

Ø默认情况下,物理链路正常,接口地址配置无误,路由表中会有直连路由

【路由器对数据包的封装过程】

a)Host A在网络层将来自上层的报文封装成IP数据包,其首部包含了源地址和目的地址,源(192.168.1.2),目的(192.168.2.2)。Host A会用本机配置的24位掩码与目的地址进行“与”运算,得出目的地址与本机不在同一网段,因此发往Host B的数据包需经过网关路由器A转发。


b)Host A通过ARP请求报文获得默认网关路由器A的“E0”口MAC地址(00-11-22-21-22-22),在数据链路层Host AIP数据包封装成以太网数据帧,在以太网数据帧首部的源MAC地址(00-11-12-21-11-11),目的MAC地址为网关E0MAC地址(00-11-12-21-22-22)。


c)路由器AE0口接收到数据帧,把数据链路层的封去掉,路由器A认为这个IP数据包要通过自己进行路由转发,路由器A会查找自己的路由表,寻找与目标IP192.168.2.2)相匹配的路由表项,根据路由表的下一跳地址将数据包转发到E1接口。


d)E1接口路由器A重新封装以太网帧,此时源MAC地址为路由器AE1MAC地址(00-11-12-21-33-33),目的MAC地址为之相连的路由器BE1MAC地址(00-11-12-21-44-44)。


e)路由器BE1口接收到数据帧,同样会把数据链路层的封装去掉,并对目的IP地址进行检查,并与路由表进行匹配,然后根据路由表的下一跳信息将数据包转发到E0接口。路由器B发现目的网段与自己的E0接口直接相连,通过ARP广播,路由B获得Host B以太口的MAC地址(00-11-12-21-66-66),路由器B再将IP数据包封装成以太网帧,源MAC地址为路由器BE0口的MAC地址(00-11-12-21-55-55),目的MAC地址为Host BMAC地址(00-11-12-21-66-66)。封装完毕后,将以太网帧从E0接口发往Host B

《名词解释》

   位(bit)、字节(Byte)

   1字节(B)=8位(bit)、1KB=1024B、1MB=1024KB、1GB=1024MB

   MAC地址:6字节/48位 (标准以太网帧大小:64~1518字节)

   IP地址:4字节/32位

   Type(类型):上层协议标识,如IP/0800,为2字节

   Head(头部):IP包头,源IP和目的IP

   Data(数据):46~1500字节;MTU(最大传输单元)为1500

《请思考》

Ø在家通过QQ软件聊天时,收到多方发送的数据报文的源MAC地址是对方主机的MAC地址吗?

答:不是,是自己网关(路由)的MAC地址?


Ø配置静态路由时,如果下一跳地指指向本地的某一个接口,该接口失效后,该条目会怎样?

答:会不通。一般分两种情况的接口失效,路由器下有交换机和没交换机的失效。

四、综合训练


几句话让你明白:分析ARP协议、图文拆解交换机/路由器转发原理



1、数据报文在主机A与R1之间

n主机A发送的第一个报文数据是什么?目标IP地址与源IP地址分别是什么?目标MAC地址与源MAC地址分别是什么?

n在此期间R1会发送报文给主机A吗?发送什么报文?

n在此期间交换机会把某个报文转发给主机B吗?如果会转发,那转发的具体是什么报文?

n在此期间主机A和R1的ARP表有何变化?

2、数据报文在R1和R2之间

n主机通信的时候会有ARP请求的过程,路由设备之间不需要。“这句话对吗”?应该怎样理解?

n如果R1上没有配置任何的路由条目,默认情况下路由表中是否存在路由条目?接收到主机A的数据报文R1会如何处理?

n如果实现全网互通,在R1和R2上应该配置怎样的路由条目?

n经过R1转发后的主机A的数据报文,它的源MAC地址和源IP地址分别是什么?

3、数据报文在R2与主机C之间

n如果R2上没有配置任何静态路由条目,由主机A发送的数据条目到达这里时,路由器会丢弃数据报文吗?主机A和主机C能ping通吗?

n当主机A与主机C通信后,SW2中是否有主机A的MAC地址条目?为什么?

五、设备模块

   NM-16ESW:交换模块,路由设备安装此模块后就有了交换功能了

   NM-1E:路由模块,该模块具有1个10M以太网路由接口

   NM-1FE-TX:路由模块,该模块具有1个100M以太网路由接口

   NM-4E:路由模块,该模块具有4个10M以太网路由接口

   NM-4T:路由模块,该模块具有4个串行链路接口


本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1210952,如需转载请自行联系原作者
上一篇:Linux下日志文件过大解决方案


下一篇:Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)