zoukankan      html  css  js  c++  java
  • (原创)TCP/IP学习笔记之ARP(地址解析协议)

    TCP/IP学习笔记之ARP(地址解析协议)

     

    一、引言

    当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据 48 bit的以太网地址来确定目的接口的(即物理地址)。设备驱动程序从不检查 I P数据报中的目的I P地址。地址解析为这两种不同的地址形式提供映射: 32 bitI P地址和数据链路层使用的任何类型的地址。

     

    ARPRARP的区别:

    ARPIP地址到对应的硬件地址之间提供动态映射。过程是自动完成的,一般应用程序用户或系统管理员不必关心。

    RARP是被那些没有磁盘驱动器的系统使用(一般是无盘工作站或 X终端) ,它需要系统管理员进行手工设置。

     

    注:在ARP背后有一个基本概念,那就是网络接口有一个硬件地址(一个 48 bit的值,标识不同的以太网或令牌环网络接口) 。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址:32 bitIP地址。知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。 ARP的功能是在32 bitIP地址和采用不同网络技术的硬件地址之间提供动态映射。

     

    点对点链路不使用ARP。当设置这些链路时(一般在引导过程进行) ,必须告知内核链路每一端的IP地址。像以太网地址这样的硬件地址并不涉及。

     

    二、ARP的分组格式

    在以太网上解析IP地址时,ARP请求和应答分组的格式如图 1所示(ARP可以用于其他类型的网络,可以解析 IP地址以外的地址。紧跟着帧类型字段的前四个字段指定了最后四个字段的类型和长度) 。

     (1)用于以太网的ARP请求或应答分组格式

    以太网目的地址

    6字节,目的地址为全 1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。

     

    以太网源地址

    6字节,为发送端的物理地址

     

    帧类型

    2字节,表示后面数据的类型。对于 ARP请求或应答来说,该字段的值为0x0806

     

    硬件类型

    2字节,硬件类型字段表示硬件地址的类型。它的值为 1即表示以太网地址。

     

    协议类型

    2字节,协议类型字段表示要映射的协议地址类型。它的值为 0x0800即表示IP地址。它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。

     

    硬件地址长度

    1字节,指出硬件地址的长度,以字节为单位,对于以太网上IP地址的ARP请求或应答来说,它们的值为6

     

    协议地址长度

    1字节,指出协议地址的长度,以字节为单位,对于以太网上IP地址的ARP请求或应答来说,它们的值为4

     

    op操作字段

    1字节,操作字段指出四种操作类型,它们是 ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)。注:这个字段必需的,因为ARP请求和ARP应答的帧类型字段值是相同的。

     

    发送端以太网地址

    6字节,与以太网源地址一致。

     

    发送端IP地址

    4字节。

     

    目的以太网地址

    6字节。

     

    目的IP地址

    4字节。

     

    备注:

    在以太网的数据帧报头中和ARP请求数据帧中都有发送端的硬件地址。

     

    对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的 ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为 2,最后把它发送回去。

     

    由于ARP请求或回答的数据帧长都是42字节(28字节的ARP数据,14字节的以太网帧头) ,因此,每一帧都必须加入填充字符以达到以太网的最小长度要求:60字节。这个最小长度60字节包含14字节的以太网帧头,但是不包括4个字节的以太网帧尾。有一些书把最小长度定为64字节,它包括以太网的帧尾。

     

    注:为方便大家,若需下载完整文档,请点击

    https://files.cnblogs.com/tdyizhen1314/TCP-IP%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8BARP(%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE).zip

    作者:tdyizhen1314

          (现从事LED行业,专注于户外大型LED显示屏控制系统的研发,希望与大家一起交流,共同进步)

    邮箱: 495567585@qq.com  

          td.logic@hotmail.com

     

  • 相关阅读:
    Apollo服务搭建
    常用MIME类型
    eclipse 搭建 swagger-ui(maven项目 springboot框架)
    子页面iframe跨域执行父页面定义的JS方法
    SpringBoot 实现前后端分离的跨域访问(CORS)
    使用 QueryRunner 实现 JDBC 常用操作封装
    纯Java版本的JDBC基础操作,支持查询结果到泛型实体类的转换
    javascript_鼠标划词,弹出选取的词
    js获取url参数值
    纯CSS打造的下拉菜单
  • 原文地址:https://www.cnblogs.com/tdyizhen1314/p/2638936.html
Copyright © 2011-2022 走看看