一、ARP协议
1、回顾要点
【两台主机通信过程】
Ø由于采用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协议】
a)首先,主机A与主机C通信,双方的ARP缓存表中都没有彼此的IP与MAC地对应条目
b)其次,ARP请求报文的目标MAC地址是FF-FF-FF-FF-FF-FF(二层广播地址),它的作用范围仅在广播范围内,也就是说ARP请求报文无法通过R1路由到达其他网段
c)所以,当接收方与发送方不在同一个网段时,ARP的请求报文将不在封装目的方的IP地址,而是封装发送方所在网段的网关地址,从而请求网关的 MAC地址。
二、交换机的转发原理
1、要点
【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地址只能对应在一个接口上
三、路由器的转发原理
Ø路由表记录的是网段信息,这些信息虽然不能把数据报文转发目的地,但是却能正确的方向转发,一步一步找到目的地
Ø默认情况下,物理链路正常,接口地址配置无误,路由表中会有直连路由
【路由器对数据包的封装过程】
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 A将IP数据包封装成以太网数据帧,在以太网数据帧首部的源MAC地址(00-11-12-21-11-11),目的MAC地址为网关E0的MAC地址(00-11-12-21-22-22)。
c)路由器A从E0口接收到数据帧,把数据链路层的封去掉,路由器A认为这个IP数据包要通过自己进行路由转发,路由器A会查找自己的路由表,寻找与目标IP(192.168.2.2)相匹配的路由表项,根据路由表的下一跳地址将数据包转发到E1接口。
d)在E1接口路由器A重新封装以太网帧,此时源MAC地址为路由器A的E1口MAC地址(00-11-12-21-33-33),目的MAC地址为之相连的路由器B的E1口MAC地址(00-11-12-21-44-44)。
e)路由器B从E1口接收到数据帧,同样会把数据链路层的封装去掉,并对目的IP地址进行检查,并与路由表进行匹配,然后根据路由表的下一跳信息将数据包转发到E0接口。路由器B发现目的网段与自己的E0接口直接相连,通过ARP广播,路由B获得Host B以太口的MAC地址(00-11-12-21-66-66),路由器B再将IP数据包封装成以太网帧,源MAC地址为路由器B的E0口的MAC地址(00-11-12-21-55-55),目的MAC地址为Host B的MAC地址(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地址?
Ø配置静态路由时,如果下一跳地指指向本地的某一个接口,该接口失效后,该条目会怎样?
答:会不通。一般分两种情况的接口失效,路由器下有交换机和没交换机的失效。
四、综合训练
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个串行链路接口