前置知识:mac地址
在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一标示一个 网卡,一台设备若有一或多个网卡,则每个网卡都需要并有一个唯一的MAC地址 。
MAC地址格式
MAC地址共48位(6个字节),以十六进制表示 。第1Bit为广播地址(0)/群播地址(1),第2Bit为广域地址(0)/区域地址(1) 。前3~24位由IEEE决定如何分配给每一家制造商,且不重复,后24位由实际生产该网络设备的厂商自行指定且不重复 。
ff:ff:ff:ff:ff:ff则作为广播地址 。
【一份学霸级的ARP学习笔记!引起众多网工纷纷收藏!】01:xx:xx:xx:xx:xx是多播地址,01:00:5e:xx:xx:xx是IPv4多播地址 。
ARP协议简介
地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个 通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要 。
ARP是通过 网络地址 来定位MAC地址 。ARP已经在很多 网路层 和 数据链接层 之间得以实现,包括IPv4,Chao.NET, DECnet和Xerox PARC Universal Packet(PUP)使用IEEE 802标准, 光纤分布式数据接口, X.25, 帧中继和异步传输模式(ATM),IEEE 802.3和IEEE 802.11标准上IPv4占了多数流量 。
在IPv6中, 邻居发现协议 (NDP)用于代替 地址解析协议 (ARP) 。
ARP功能
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址 。这就导致在以太网中使用IP协议时,数据链路层 的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址 。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址 。这就是ARP协议要做的事情 。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过 路由转发 才可以 。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的 路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送 。这种情况称为 委托ARP或ARP代理 (ARP Proxy) 。
在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址 。
图解ARP协议
根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去,如果P1 ping P2,那么发生下图所示过程:
文章插图
由于MAC是确定物理设备(网卡)唯一标识,那么这个包在数据链路层就会失败,因为没法找到对应的主机,于是有了ARP协议,说得简单点就是根据在发送数据之前,通过IP2获取MAC2的过程:
文章插图
这时候,有了 [IP1=>IP2, MAC1=>MAC2] ,这两个信息就可以确定主机,并且建立通讯,这时候有个问题,我们图上是一对一的,如果这两个主机不在一个局域网呢?离得很远很远,那怎么办?
解决办法是广播:
文章插图
当arp协议数据包进行广播时,非目的主机接受到这个包会直接丢弃,接收到这个包的目的主机PC2会直接将信息发送给PC1,注意,由于这时候PC2接收到的包中已经有了PC1的IP地址以及MAC地址,所以不需要广播,直接进行发送进行了 。
经过上面的处理,PC1获取了PC2的MAC2地址,就可以把数据包发送出去,之后便可以进行正常的通信 。ARP的功能和实现过程是如此的简单:它在发送方需要目标MAC地址的时及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地【ARP缓存表】,后续需要的话,就到这里查找 。
ARP缓存表
如果我想向局域网中的某个电脑再发送一个数据,那么我的电脑就会从已有的 ARP缓存表 中寻找这个IP地址对应的物理地址的ARP表项,然后直接将数据写入以太网数据帧中让网卡进行发送即可,而如果没有找到这个IP地址,那么这个数据就没法立即发送,电脑会先在局域网上广播一个 ARP请求 (目标MAC地址为 FF-FF-FF-FF-FF-FF ),广播的ARP请求发出后,处于同一局域网内的所有主机都会接收到这个请求,如果目标IP地址与接收到ARP请求的主机自身IP地址吻合就会返回一个ARP应答,告诉请求者(即我的电脑)自身的MAC地址,当我的电脑收到这个ARP应答后,就去建立一个ARP表项,并且重新将数据发送出去 。
推荐阅读
- 网站关键词排名、流量、以及抓取频次下降可能是哪些原因导致的?
- 相比React、vue资源消耗更小,使用更简单的新一代前端框架Svelte
- IPv6改造方案:双栈技术
- 最好看的青春偶像剧有哪些,超好看的偶像剧有哪些-
- 天地不仁以万物为刍狗哲学,天地不仁以万物为刍狗的哲学思想-
- 西红柿炖牛腩的做法大全家常做法大全,番茄牛腩的做法 最正宗的做法大全窍门-
- 丁海峰|盘点演员丁海峰出道作品
- 叶蕴仪|15岁爆火,拒嫁林志颖却沦为豪门弃妇:49岁,她的现状你想象不到
- 医生|丛飞邢丹相继离世,年仅5岁的爱女成孤儿,16年后孩子怎样了?
- 听雪楼|改编自大IP的《听雪楼》,播出后为何惹争议?