从IP协议的转发流程中我们可以看到:数据帧每一跳的MAC地址都在变化,但IP数据报每一跳的IP地址始终不变。但我们会发现一个问题,在网络层中将数据报交给数据链路层,并且需要告知目的MAC地址,但是在网络层中只知道IP地址,我们是如何知道目的MAC地址的呢?这就是ARP协议做的事情了。
ARP协议ARP(Address Resolution Protocol)地址解析协议,将网络层中的32位IP地址,通过ARP协议解析为数据链路层中的48位MAC地址。这个映射关系是存储在ARP缓存表中的。arp -a命令:查看ARP缓存表
IP地址 MAC地址192.168.83.254 00-50-56-e0-33-40
192.168.83.255 01-00-5e-00-00-16
224.0.0.251 01-00-5e-00-00-fc
239.1.2.3 01-00-5e-40-98-8f
255.255.255.255 01-00-5e-7f-ff-fa
ARP缓存表是ARP协议和RARP协议运行的关键,ARP缓存表缓存了IP地址到硬件地址之间的映射关系,ARP缓存表中的记录并不是永久有效的,有一定的期限。这是因为当你的网络设备,换个网络环境,网络设备的IP地址就可能会发生改变,ARP缓存表中的原来的记录就失效了。当ARP缓存表中有映射关系,就直接查询ARP缓存表;如果没有这个映射关系,ARP协议就会广播,并记录回应得地址信息。
RARP(Reverse Address Resolution Protocol)逆地址解析协议,其作用与ARP协议相反,即把数据链路层中48位MAC地址,解析位网络层中的32位IP地址。(R)ARP协议是TCP/IP协议栈里面基础的协议,ARP和RARP的操作对程序员是透明的,理解(R)ARP协议有助于理解网络分层的细节。
IP地址的子网划分 分类的IP地址 最小网络号 最大网络号 子网数量 最小主机号 最大主机号 主机数量A 0(00000000) 127(01111111) \(2^7\) 0.0.0 255.255.255 \(2^{24}\)
B 128.0 191.255 \(2^{14}\) 0.0 255.255 \(2^{16}\)
C 192.0.0 223.255.255 \(2^{21}\) 0 255 \(2^{8}\)
特殊的主机号:主机号全0表示当前网络段,不可分配为特定主机;主机号为全1表示广播地址,向当前网络段所有主机发消息
A类地址网络段全0(00000000)表示特殊网络
A类地址网络段后7位全1(01111111:127)表示回环地址
B类地址网络段(10000000.00000000:128.0)是不可使用的
C类地址网络段(192.0.0)是不可使用的
实际可使用各类IP地址如下:
最小网络号 最大网络号 子网数量 最小主机号 最大主机号 主机数量A 1 127(01111111) \(2^7\)-2 0.0.1 255.255.254 \(2^{24}\)-2
B 128.1 191.255 \(2^{14}\)-1 0.1 255.254 \(2^{16}\)-2
C 192.0.1 223.255.255 \(2^{21}\)-1 1 254 \(2^{8}\)-2
127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
划分子网