《TCP/IP详解卷1》学习小结(三)------ARP协议与RARP协议

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

一.  总述

        简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。
       再介绍一下无盘系统。比如有些网吧的机器本身没有硬盘,而是通过局域网连接到服务器。从这些机器上看到的磁盘实际上是共享的服务器的磁盘。

二.  ARP协议

        (一)ARP介绍
        ARP协议将IP地址转化为MAC物理地址。网络体系结构自上而下可以大致分成四层:应用层,传输层,网络层,链接层。数据传输的过程也是从上至下,最后在链接层之间进行数据交换。当数据包从网络层将要进入链接层时,这个数据包只有目的地的IP地址,这时链接层就不清楚这个IP地址是什么了,就好像接口不统一的手机和充电器无法连接一样。这时,ARP server就派上用场了。ARP server先将目的地的IP地址转换成物理地址,发出一个ARP request,这个request是个没有指定目的地的广播,当网络中有匹配的物理地址时,就将这个物理地址返回,即ARP reply,但ARP reply是有明确的目标地址的,是单播。这时,数据包就有方向了,就可以继续向目的地进发了。
        (二)ARP Cache
        缓存的思想无处不在。IP地址对应MAC物理地址,ARP Cahe中存储的就是这些mappings。有缓存自然就会有timeout,当过了某个时间间隔后,缓存就会被清除,否则缓存无限制增长是件非常可怕的事。如果需要,可以用arp命令的-s选项来添加一个永久的缓存条目。

三.RARP服务器在设计上的复杂性

        RARP是将MAC物理地址转换成IP地址。RARP也有request与reply,并且RARP request也是广播,没有目标地址;RARP reply也是有目标地址,也是单播。这两点与ARP都相同。看起来虽然仅仅是ARP协议的逆向操作,但是RARP server设计的复杂性是远远超过ARP server的。首先,ARP server是存在于kernel中,而RARP server仅仅是一个用户进程,RARP就有些"先天不足"。其次,RARP是寻找与物理地址对应的IP地址,这就表明了RARP request packet包中没有IP地址,自然也就无法通过路由器进行转发了。因为路由器是工作在网络层,网络层的协议是IP协议,ARP request能够通过路由器进行转发,是因为在ARP request packet中有IP地址的字段,而RARP request packet没有,所以路由器对RARP也就没有帮助了。
       RARP还有一个机制,就是在每个网络中都有多个RARP server。我猜想这可能是为了增大可靠性,是用的主从服务器的设计理念。源地址一般只接受第一个RARP reply。有多个服务器,自然也就可能出现冲突。所以RARP server是这样设计的:一般有一个主服务器是接收到request后立刻发送RARP reply,没有发送延迟;而其他的服务器即使接收到了request,也会在一个随机的发送延迟后才能发送reply,而且一般是在短时间内收到重复的第二个request才可以发送reply。因为如果这些次要的服务器都收到了第二次相同的request,那么这种情况一般是主服务器挂了。

四.  ARP与RARP的比较

       (一)相同点
       对于ARP与RARP,request是广播,而reply是单播。
       (二)不同点
        1.协议的目的完全不同。在总述中已经说明。
       2.发送ARP packet的是路由器,而RARP不是。
       3.ARP server在kernel中,而RARP是一个用于进程。

本文转自NeilHappy 51CTO博客,原文链接:http://blog.51cto.com/neilhappy/1123140,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
基于阿里云,构建一个企业web应用上云经典架构,让IT从业者体验企业级架构的实战训练。
相关文章
|
18天前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
29 4
|
4月前
|
缓存 网络协议 安全
【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
【1月更文挑战第27天】【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
|
5月前
|
存储 缓存 网络协议
dpdk课程学习之练习笔记二(arp, udp协议api测试)
dpdk课程学习之练习笔记二(arp, udp协议api测试)
74 0
|
19天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
23 1
|
5天前
|
网络协议 Linux Android开发
计算机网络:MAC地址 & IP地址 & ARP协议
计算机网络:MAC地址 & IP地址 & ARP协议
27 7
|
4月前
|
存储 缓存 网络协议
ARP协议:地址解析协议
ARP协议:地址解析协议
45 0
|
15天前
|
存储 缓存 运维
基于 Wireshark 分析 ARP 协议
基于 Wireshark 分析 ARP 协议
|
18天前
|
存储 缓存 网络协议
CCNA 200-301系列:地址解析协议(ARP)
【4月更文挑战第21天】
21 0
|
27天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
2月前
|
网络协议 数据格式