【TCP/IP 的神奇之旅】—— 在同一个以太网下信息的传送:“地址解析协议 ARP”

我们现在要应对的情况是:在一个以太网中,已经有了一台主机 A A ,而此时这个以太网刚刚新接入了另一台主机 B B ,现在主机 B B 需要发信息给主机 A A ,应该怎么做呢?


我们知道,两台主机如果要发送信息,就相当于我们生活中两家人相互送礼一样。试想一下:假设故事的主人公小明和小红都生活在一个小区里面。小明要给小红送礼物,可是大头鬼小明只知道小红的名字却不知道小红的住址。这要怎么送礼呢?

机智的小明想了这样一个办法:它先给整个小区的每一户人家都发送了一封信,信上面写着:“给小红”,并且附上了自己的名字和住址。那么,这个小区的每一户人家在受到信的同时,就会确认自己家里有没有“小红”这个人,如果没有,就忽略这封信。如果恰好是小红家,那么小红就会根据小明提供的地址给它回一封信,上面附上自己家的地址。

好的,小明收到回信之后就得知了小红家的地址,那么就可以根据小红的名字和她家的地址给他寄去真正的礼物了。而从此以后,小明和小红就互相知道了彼此的地址,想寄礼物直接寄就行了,不再需要给每户人家都寄信了,从此快乐的生活着 . . . . . . ......

全剧终


这个故事里面,如果我们把人名比作 I P IP 地址,二而我们知道每一个主机有一个 M a c Mac 地址(也叫做硬件地址),它是唯一的。这个 M a c Mac 地址就可以比作家力的地址。

而故事里面小明一开始向所有住户发送的信, T C P / I P TCP/IP 的世界里,我们称之为 A R P ARP (地址解析协议),是根据IP地址获取物理地址的一个 T C P / I P TCP/IP 协议

ARP 协议是通过报文工作的,报文包括下面的字段:在这里插入图片描述
我们看几个关键字段:

  1. 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
  2. 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制)
  3. 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
  4. 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;(如果是小明给全体用户发的消息就属于 ARP 请求;如果是小红的回信就是 ARP 响应)
  5. 发送方硬件地址——就是小明的住址,也就是主机 B B M a c Mac 地址(注意它是 6 个字节的)。其中,发送方硬件地址(0-3字节):源主机 B B 硬件地址的前3个字节。
  6. 然后,发送方的 I P IP 地址—— 就是小明的名字,也就是主机 B B I P IP (注意是4个字节的)
  7. 目标硬件地址:这里因为一开始主机 B B 并不知道主机 A A 的地址,所以他是发送给处于这个以太网连接下的所有主机的,因此,发送的是6个字节的 “0”。
  8. 目标 I P IP 地址:就是小红的名字,主机 A A I P IP 地址。

小明只需要发送这一个信件,就可以得到小红的住址了,以后他们两家如果再需要信息传递,就可以直接传了。不再需要 ARP 了。 M a c Mac 地址和 I P IP 地址的映射关系将会被每一台主机存储下来,形成一张“地址映射表”,并且将会持续地维护这张表。

不过可以想象,当一个以太网下连接了大量主机时,让 A R P ARP 包在整个以太网下四处乱跑是一件效率非常低的事情,而且, A R P ARP 也是很不安全的,许多网络安全问题和 A R P ARP 有关。

最后,本文简单地介绍了一下在一个以太网下主机之间是如何传递信息的。对 A R P ARP 协议仅仅做了最表层的介绍,下一篇博客就来看看不在同一个以太网下的两台主机之间应该如何通信。


对于本文如有表述不当之处欢迎大家在评论区不吝指正!!

猜你喜欢

转载自blog.csdn.net/weixin_44586473/article/details/106197882