ARP协议(地址解析协议)
ARP协议是用来把IP地址转换成MAC地址的。
因为在局域网里,真正通信靠的是MAC地址,但我们平时只知道目标的IP地址,所以需要一个办法把IP地址变成MAC地址 —— 这个过程就是靠ARP完成的。
举个超简单的例子:
-
你电脑要发数据给192.168.1.10这台机器,但你不知道它的MAC地址。
-
你电脑就会发出一个ARP请求广播,问:“谁是192.168.1.10?请告诉我你的MAC地址!”
-
如果192.168.1.10在这网段上,它就会回答:“我在这里,我的MAC地址是xx:xx:xx:xx:xx:xx。”
-
你的电脑记下这个MAC地址,然后开始真正的数据传输。
总结一句话:
➡️ ARP协议是在局域网中,根据IP地址找对应MAC地址的一种协议。
假设你的计算机(A)要向另一台计算机(B)发送数据,A的IP地址是192.168.1.5,B的IP地址是192.168.1.10,但A并不知道B的MAC地址(即硬件地址),而只有B的IP地址。
ARP协议的过程:
-
A发送ARP请求
-
A的操作系统发现它没有B的MAC地址,因此就会生成一个ARP请求包。ARP请求的格式大概是:
-
发送者IP:192.168.1.5(A的IP)
-
发送者MAC:A的MAC地址
-
目标IP:192.168.1.10(B的IP)
-
目标MAC:全是0,因为A不知道B的MAC地址。
-
-
然后A会广播这个ARP请求到整个局域网(即发送到局域网内的所有设备)。
-
-
B响应ARP请求
-
局域网中的所有设备都会收到ARP请求,但只有IP地址为192.168.1.10的B会对这个请求做出回应。
-
B的操作系统收到ARP请求后,会发现请求的目标IP正是它的IP,于是B会生成一个ARP响应包,内容包括:
-
发送者IP:192.168.1.10(B的IP)
-
发送者MAC:B的MAC地址
-
目标IP:192.168.1.5(A的IP)
-
目标MAC:A的MAC地址(B知道这个信息)
-
-
然后B将这个响应包直接发送回A(不再是广播,而是单播)。
-
-
A收到ARP响应
-
A收到B的ARP响应后,获取了B的MAC地址,并将其存储在自己的ARP缓存表中,方便以后使用。
-
-
数据传输
-
现在,A已经知道B的MAC地址,它可以直接用B的MAC地址来发送数据包了。
-
发送的数据包的目标MAC地址就可以是B的MAC地址,目标IP地址是B的IP地址。
-
数据可以通过MAC地址在局域网内被正确地转发到B。
-
过程总结:
-
A不知道B的MAC地址,于是A发送ARP请求广播给局域网。
-
B响应A的请求,告诉A它的MAC地址。
-
A根据B的MAC地址直接向B发送数据。
ARP缓存:
-
为了避免每次通信都进行ARP请求,A会把B的IP与MAC地址保存在ARP缓存表中(每隔一段时间会过期,必须重新ARP请求)。