从前两章中有学到,网络层地址和链路层地址是由不同的,一个是物理地址,一个是IP地址。物理地址固定存储在网卡中,不会改变,而IP地址是可以网络管理员和用户自己分配的
  在传统的IPv4网络中,一台A主机要想将数据传输到另一台B主机上,只知道B的IP地址可不行,还需要知道B主机在网络中的有效物理地址,但是要怎么才能把IP地址转换成物理地址呢?这时候就要用到ARP(地址解析协议)


  ARP


  地址解析其实是发现两个地址之间映射关系的过程,基本上都用于32位的IPv4地址和以太网的48位MAC地址之间的映射,如下图所示,IP地址经过ARP的处理,变成了硬件地址。

  书中还举了一个例子,当我们打开一个网页,我们的电脑会和相关的服务器联系,它首先判断该服务是位于本地(同一IP子网)还是远程,如果在同一子网,则向本网发送ARP广播,获得目标IP所对应的MAC地址,如果不在同一子网,就通过ARP询问默认网关(路由器)对应的MAC地址

  ARP帧格式


  下图为以太网中转换一个IPv4地址时常用的ARP请求和应答分组的格式

  

  • 在以太网中,对于ARP(请求或应答),两字节的帧类型字段必须为0x0806
  • 硬件类型字段指出硬件地址类型,对于以太网该值为1
  • 协议类型字段指出映射的协议地址类型,对于IPv4地址,该值为0x0800
  • 硬件和协议地址长度分别指出硬件地址和协议地址的字节数,对于以太网中使用IPv4地址的ARP请求或应答,它们的值分别为6和4
  • Op字段指出该操作是ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4),RARP为反向地址转换

  直接交付


  在同一个子网下,两个IP地址直接传输数据,就可以使用直接交付,IPv4直接交付的基本操作如下:

  • 主机A向主机B发送IPv4数据报,A必须将B的IP地址转换成物理地址,ARP开始运行
  • ARP工作在正常模式下,仅适用于广播网络,在一个共享的链路层网段上,ARP向所有连接着的主机发送一个称为ARP请求的以太网帧,其中包含主机B的IP地址
  • 只有符合目标IP地址的主机B回答这个ARP请求,其他站点则忽略这个请求,即为ARP应答,该应答包含B的IP地址和MAC地址,此时不是广播,而是直接发送给A
  • 主机A收到应答后,会在自己的缓存中构建一个ARP表,将得到的地址信息缓存起来,以备将来和同一目的节点通信时直接在ARP表中查找,避免了多次的广播请求

  

  感谢在实践中深入理解ARP协议ARP地址解析过程(同一子网和不同子网)这两篇文章的作者们提供的帮助,想更深入了解ARP的同学可以点击链接学习

 

<TCP/IP>地址解析协议ARP的更多相关文章

  1. TCP/IP具体解释学习笔记——地址解析协议ARP

    一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...

  2. TCP/IP的排头兵――地址解析协议(ARP) (转载)

    转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...

  3. TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点

    ISO/OSI的网络模型架构 TCP/IP参考模型的层次结果 以太网头部结构 以太网属于数据链路层, 属于最基本的协议结构 IP协议 IP协议为TCP, UDP, ICMP提供最基本的数据传输通路 I ...

  4. 【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP

    第23章      RL-TCPnet之地址解析协议ARP 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家 ...

  5. TCP/IP网络协议基础

    实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...

  6. 地址解析协议ARP与逆地址解析协议RARP

    IP地址是用来通信的,但是和硬件地址是有区别的.物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上各层使用的地址. 发送数据时,数据从高层向下层传输,使用IP地址的IP数据报交给下层的数据 ...

  7. 2016.7.8 计算机网络复习要点第四章之地址解析协议ARP

    1.地址解析协议ARP:知道一个机器的IP地址,需要找到其相应的硬件地址:ARP协议的用途是为了从网络层使用的IP地址解析出在链路层使用的硬件地址: 2.由于是IP协议使用了ARP协议,因此通常就把A ...

  8. TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP

    TCP/IP,HTTP,SOAP等协议之区别   术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...

  9. Linux学习(1)- TCP/IP网络协议基础

    Linux学习(1)- TCP/IP网络协议基础 一.TCP/IP 简介 学习内容 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输 ...

随机推荐

  1. win10常用帮助

    添加自启动项: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp shell:startup win10找回图片查看器: Win ...

  2. VS2012 编译带有c/c++代码的python模块失败解决方案

    python2.7默认编译带有/c++代码的模块/包是使用VS2008环境变量,所以为了可用,我们要在编译前设置环境变量 SET VS90COMNTOOLS=%VS110COMNTOOLS% 但有时只 ...

  3. JavaScript 简介

    JavaScript是一种专为网页交互而设计的脚本语言,由下列三个不同的部分组成: ECMAScript,由ECMA-262 定义,提供核心语言功能: DOM, 提供访问和操作网页内容的方法和接口; ...

  4. ogg实现oracle到sql server 2005的同步

    一.源端(oracle)配置1.创建同步测试表create table gg_user.t01(name varchar(20) primary key);create table gg_user.t ...

  5. linux 启动 关闭 防火墙

    开启防火墙: systemctl start firewalld 关闭防火墙: systemctl stop firewalld

  6. PyQt5——隐藏控件并保留位置

    原文地址:https://blog.csdn.net/qq_38161040/article/details/86605798 ———————————————————————————————— 设置控 ...

  7. tchart5

    https://blog.csdn.net/wuyuanjingni/article/details/8585810

  8. shell while 语句

    普通循环格式: while condition do command done 例子一 #!/bin/bash )) do echo $int let "int++" done 结 ...

  9. Jersey RESTful Web服务

    Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层.与Struts类似,它同样可以和hibernate,spring框架整合 ...

  10. &lt;数据挖掘导论&gt;读书笔记11异常检测

    异常检测的目标是发现与大部分其他对象不同的对象.通常,异常对象被称作离群点(Outlier). 异常检测也称偏差检测(Deviation detection),因为异常对象的属性值明显偏离期望的或者常 ...