CCNA 学习记录-ARP协议和数据转发
引言
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。
ARP 协议
ARP的概念
ARP 地址解析(Address Resolution Protocol)协议用于将IP地址映射到对应的MAC地址,实现在网络中定位和通信设备的地址解析。
ARP 数据包格式
ARP报文不能被路由器所转发,只能在当前广播域
ARP 的作用
当主机A向数据B进行他通信的时候,数据链路层在进行数据封装的时候,需要主机B的MAC地址,此时主机A并不知道主机B的MAC地址,只知道主机B的IP地址为192.168.1.200
,则会进行ARP广播,ARP请求是一个广播消息,会被发送到本地网络的所有设备。这个广播消息包含了主机A正在寻找的目标IP地址。
在这种情况下,泛洪(Flooding)操作会发生在交换机上。当交换机收到主机A的ARP广播时,它并不知道主机B的确切位置(MAC地址),因此会将ARP请求广播到所有连接的端口,包括主机B所在的端口。这样,主机B就能接收到ARP请求,并能够回应主机A,将自己的MAC地址提供给主机A。
ARP 请求包
此时 主机A 会发送ARP广播包,去问 IP 192.168.1.200 的MAC地址是多少,此时发送方的MAC地址为主机A的MAC地址,接收方的地址则为全F广播地址。
当主机192.168.1.200收到该数据包时,发现网络层的目的地址为自己时,则进行解封装,并给出响应。
ARP 响应包
接着主机A就会在MAC地址表中记录 192.168.1.200 对应的MAC地址是 00:50:79:66:68:02
,于是就会将主机B的MAC地址封装在数据链路层中的 Destination Mac
当中。
ARP 缓存
主机A收到主机B的ARP响应包时,则会将其MAC地址和IP地址保存到本机的MAC地址表当中。
主机B也会将主机A的MAC地址保存到本机的MAC地址表当中。
数据的封装和解封装
数据的封装
假设 192.168.1.1 要使用 telnet 连接 192.168.1.2 服务器,数据的封装是按照OSI七层模型自上而下的,封装过程如下:
应用层省略..
表示层省略..
会话层省略..
在传输层封装了来源端口和目的端口,来源端口则是随机生成的,而目的端口为telnet服务端口的23。
在网络层封装了来源IP和目的IP,来源IP为 192.168.1.1,而目的IP为 192.168.1.200
现在,我们知道数据包要到具体哪个路由下,但是我们现在还不知道到具体哪个接口,于是这里就需要数据链链路层中的来源MAC和目的MAC。
在数据链路层封装了 源MAC和目的MAC,源MAC则为 192.168.1.1 的MAC地址,而目的MAC则为 192.168.1.2 的地址。
通过物理层连接的介质进行发送
以上就是一段数据的封装,接下来我们来看数据包的解封装。
数据的解封装
数据的解封装是参照OSI七层模型自下而上的。
物理层接收数据帧,并将其传给数据链路层,查看目的MAC是否是自己,如果是,则进行解封装,并将其传给网络层,查看目的地址是否是自己,如果是,则继续解封装,并传给传输层,传输层提取数据,交给应用层进行处理和显示。