TCP/IP详解-地址解析协议ARP
IP协议的设计目标是为跨越不同类型物理网络的分组交换提供互操作。这需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换。网络接口硬件通常有一个主要的硬件地址定位到正确的接口;否则,无法传输数据。但是,一个传统IPv4网路偶需要使用自己的地址:32位的IPv4地址。如果一台主机要将一个帧发送到另一台主机,仅知道这台主机的IP地址是不够的,还需要知道主机在网络中的有效硬件地址。操作系统软件(即以太网驱动程序)必须知道目的主机的硬件地址,以便直接向它发送数据。对于TCP/IP网络,地址解析协议ARP提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射。ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6。
ARP提供从网络层地址到相关硬件地址的动态映射。我们使用动态这个术语是因为它会自动执行和随时间变化,而不需要系统管理员重新配置。也就是说,如果一台主机改变它的网络接口卡,从而改变了它的硬件地址(但保留其分配的IP地址),ARP可以在一定延时后继续正常运作。ARP操作通常与用户或系统管理员无关。
当我们打开一个网页,本地计算机必须确定如何与相关服务器联系。它首先是判断该服务位于本地(同一IP子网的一部分)还是远程。如果是远程的,需要一台可到达目的地的路由器。
直接交付和ARP
直接交付发生在一个IP数据报被发送到一个IP地址,而该地址与发送方具有相同IP前缀的情况下。当我们访问http://10.0.0.1
时。
IPv4直接交付的基本操作:
- 在这种情况下,应用是一个web浏览器,调用一个特殊函数来解析URL,看它是否包含主机名。这里不是,应用程序使用32位IPv4地址10.0.0.1
- 应用程序要求TCP协议建立一条到10.0.0.1的连接。
- 通过向10.0.0.1发送一个IPv4数据报,TCP尝试向远程主机发送一个连接请求。
- 我们假设地址10.0.0.1使用与发送主机相同的网络前缀,数据报可被直接发送到这个地址而不经过任何路由器。
- 假设以太网兼容地址被用于IPv4子网,发送主机必须将32位的IPv4目的地址转换为48位的以太网地址。就是需要从逻辑Internet地址向对应物理硬件地址进行转换。这是ARP功能。ARP在正常模式下,仅适用于广播网络,链路层能将一个消息交付到它连接的所有网络设备。这是ARP运行的一个重要要求。在非广播网络可能需要更复杂的映射协议。