计算机网络-4-2-ARP地址解析协议以及IP数据报不可变组成部分
地址解析协议ARP
在实际的应用中,我们会经常遇见这样的一个问题:我们已知一个机器(主机或者路由器的),我们怎么获取相应的硬件地址?,地址解析协议就是用来解决这个问题的。
ARP协议的作用:

- 由上图可知:
- 首先ARP协议划归为网络层,但是ARP协议是为了从网络层使用的IP地址,解析出在数据链路层的MAC地址,因此有的书也会把ARP协议划分到数据链路层。
ARP协议的要点
网络层使用的是IP地址,但在实际的链路层传输数据帧我们使用的是MAC地址。在一个网络上可能会有新的主机加入或者旧的主机撤去。除此之外更换网络适配器也会导致MAC地址发生变化。ARP地址解析协议解决这个问题的方法是在主机ARP高速缓存中存放一张IP地址到MAC地址的映射表,而且这个表还要动态更新(添加或者删除)
每个主机都有一个ARP高速缓存(ARP cache),里面有着本局域网的各个主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。那么主机该怎么知道这些地址呢?
- ARP进程在本局域网内广播发送一个ARP请求分组。ARP请求分组的主要内容是:我的IP是209.0.0.5,我的MAC地址为00-00-C0-15-AD-18,我想知道IP地址为209.0.0.6的MAC地址为多少?
- 在本局域网所有的主机运行的ARP进程都会收到这条此ARP请求分组。
- 在主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机主动发送一个ARP响应分组,同时在这个ARP响应分组写入自己的MAC地址。由于其他主机的IP地址和ARP请求要查询的IP地址不一样,因此都不会理会这个ARP请求分组。
*
- 在主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机主动发送一个ARP响应分组,同时在这个ARP响应分组写入自己的MAC地址。由于其他主机的IP地址和ARP请求要查询的IP地址不一样,因此都不会理会这个ARP请求分组。
- 注意:
- ARP请求分组是广播,但是ARP响应分组单播,就从源地址发送到一个目的地址。
- 主机A收到这个ARP响应分组后,就在自己本地的ARP缓存中写入主机B的IP地址到MAC地址的映射。同理,当主机B在接收到这个主机A发送过来的ARP请求分组时也会在主机B本地的ARP缓存中写入主机A的IP地址到MAC地址的映射。
- 可见。ARP高速缓存是非常的有用,如果不使用ARP高速缓存,那么任何一台主机只要进行一次通信,就必须要使用ARP协议广播ARP请求分组,只会导致网络上的通信量大大增加。ARP把已经得到的地址映射写入高速缓存中,这样该主机下次再和具有同样目的主机进行通信的时候,可以直接从缓存中获取到硬件地址。
- ARP对保存在缓存中的每一个地址映射项都设立了一个生存周期(TTL),凡是超过TTL项都会被从高速缓存中清除掉,,然后会重新广播获取最新的IP地址与MAC地址映射记录。
ARP协议解决的是同一个局域网内的主机或者路由器IP地址和硬件地址之间的映射关系。如果要找的目标主机和源主机不在同一个网段内,就无法解析出另一个局域网上主机的MAC地址。
ARP的四种经典情况

- 发送方是主机(H1),要把IP数据报发送到同一个网络的另一台主机(H2),这时候H1发送一个ARP请求分组报文找到目的主机H2的MAC地址.
- 发送主机是(H2),要把IP数据报发送到另一个网络上的主机(H3/H4),这时(H1)发送一个ARP请求分组在局域网1内广播,找到局域网1 的路由器R1的MAC地址,剩下的工作交给路由器R1来完成。R1要做的是3和4.
- 发送方是路由器(R1),要把数据报发送给与R1连接在同一个网络上的主机(H3),这时候路由器R1会发送一个ARP请求分组在局域网2内广播,找到主机(H3)的MAC地址。
- 发送方是路由器R1,要把IP数据包报转发到网络3上的一台主机,如(H4),由于H4主机与R1路由器不是在同一个网段内,这时候路由器R1会发送一个ARP请求分组给路由器R2,剩下的步骤和3类似。
IP数据报的格式
- IP数据报的格式

- IP数据报长度为4个字节,也就是32位
- IP数据报是由报首和数据两部分组成。
- 首部包括20个字节的固定长度和可选字段
- (1:)版本占4位。指的是IP协议的版本。通信双方必须要使用相同的IP协议版本。目前广泛使用的是IP协议版本是IPV4和和IPV6
- (2:)首部长度占用4位,可以表示最大的1111(15)
- (3:)区分服务占用8位,用来获取更好的服务,这个字段只有在使用区分服务的时候才起作用。
- (4:)总长度占用16位,指的是首部和数据之和的长度。单位为字节,总长度字段为16位,因此数据报的长度为(2^16)-1=65535字节,但在现实生活中确实很少遇到。
- 首部包括20个字节的固定长度和可选字段
- 在网络层的下面数据链路层,规定了一个数据帧中的数据字段最大传送单元MTU,当一个IP数据报文封装成链路层的帧的时候,此数据报的长度,一定不能超过数据链路成所规定的MTU值。最常用的以太网规定其MTU最大值为1500字节。如果传输的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。
- 虽然使用尽可能长的IP数据报会使得传输效率更高一些(因为内一个IP数据报中首部长度占数据报总长度的比例小一些),但数据报短些也有好处。每一个IP数据报越短,路由器转发的速度越快。为此,IP协议规定,在互联网中所有的主机和路由器,必须能够接受长度不能超过576字节的数据报,这是假定上层交下来的数据长度有512字节(合理的长度),加上最长部分的IP数据报首部60字节再加上4个字节的富余量,就得到了576字节。当主机需要发送576字节的数据报的时候。应当需要先询问目标主机能否接受所要发送的数据报长度,否则,就要进行分片。
- (5:)标识占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就+1 ,但是这个并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题,当数据报由于长度超过网络的MTU而必须分片的时候,这个标识的字段的值就会被复制到所有的数据报片的标识字段中,相同标识字段的值使得分片后最后能够正确的重装为原来的数据报。
- (6:)标志(Flag)占3位,只有两位有意义
- 最低位MF(more fragment):当MF=1时候表示后面还有分片,当MF=0表示这已经是最后一个数据报片。
- 中间位DF(don't fragment)意思之不能再分片,只有当DF=0才允许分片。
- (7:)片偏移:占13位,较长的分组在分片后,某片在原分组中的相对位置,也就是说,相对与用户数据字段的起点,该片从何时开始。片偏移以8个字节为便宜单位,也就是说:每个分片的长度一定是8字节的整数倍。
- (8:)生存周期TTL:占8位,表明这是数据报在网络中的寿命,称之为跳数限制。目的就是为了防止在路由器之间无限转圈导致白白耗费网络资源。每经过一个路由器,TTL就-1,当TTL=0,路由器就会丢掉这个IP数据报,一般TTL默认为16。
- (9:)协议,占8位,协议字段指的是此数据报所携带的数据是使用的何种协议,以便于目的主机的IP层知道应将数据部分上交给哪一个协议来处理。
- (10:)首部校验和:占16位,这个字段只检验数据报的首部,不包括数据本身部分,这是因为数据报每经过一次路由器,路由器都会重新计算生存周期,标志,偏移量等等,不检验数据部分可以减少路由器的工作量。除此之外,为了减少校验工作量,IP数据报的首部校验和并不会使用CRC检验码,而是采用从下面简单的校验方式:

- (1)在发送方,先把IP数据报首部划分为许多16位子的序列,并把检验和字段设置为0,用反码算数()把所有16位字相加后,将得到的和的反码写入检验校验和中,接收方收到数据报之后,把首部的所有16位字在使用反码算相加一次,将得到的和取反码,即得到接收端检验和的计算结果。若首部未发生变化,则检验和必然为0,于是就保留这个数据报,否则认为出错,就直接丢弃。
- (11:)源地址 占32位
- (12:)目的地址 占32位
- 以上就是IP数据报不可变组成部分。
计算机网络-4-2-ARP地址解析协议以及IP数据报不可变组成部分的更多相关文章
- 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...
- ARP地址解析协议
ARP地址解析协议:为IP地址到相应的硬件地址之间提供动态映射. 下面图为例说明地址解析协议的详细工作流程. 结合图中的序号进行说明. client通过FTP协议连接server时,首先解析器会把主机 ...
- ARP地址解析协议原理
概述 网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口.因此我们需要进行IP地址与物理地址之间的转化. 对于IPv4来说,我们使用ARP地址解析协议来完成IP地址 ...
- 《TCP/IP作品详细解释2:达到》注意事项--ARP:地址解析协议
Net/3于ARP和实施密切与路由表相关联的,下图显示了我们的叙述性说明ARP使用样品. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVE9ERDkxMQ ...
- IP地址、MAC地址、ARP地址解析协议
互联网中一台主机要和另一台主机实现通信首先需要知道彼此在互联网中的位置,主机在互联网中的位置是通过ip地址标记的,当找到ip地址后,再通过端口号标识运行在主机中的进程从而实现通信. IP地址: IP地 ...
- ARP:地址解析协议
ARP是地址解析协议,简单语言解释一下工作原理.1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系.2:当源主机要发送数据时,首先检查ARP列表中 ...
- arp:地址解析协议(Address Resolution Protocol)(来自维基百科)
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...
- 【网络协议】ARP地址解析协议
地址解析协议ARP 在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址.而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址.这就导致在以太 ...
- 【网络基础】ARP地址解析协议
ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...
随机推荐
- Linux命令:ps -ef |grep java
一.ps -ef |grep java 查看包含"java"的所有进程 二.涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进程查看命令) grep命 ...
- java输入字符
1.创建一个Scanner对象. 2.调用.next()返回一个String类型用一个变量接受. 3.调用该String变量的.charAt(0),获取第一个字符. Scanner scn=new S ...
- Git (13) -- Git 分支 -- 分支的新建与合并
@ 目录 0.准备工作 1.新建分支 一个简单提交历史: 创建一个新分支指针: iss53 分支随着工作的进展向前推进: 基于 main 分支的紧急问题分支 hotfix branch: main 被 ...
- mysql switch语句
SELECT CASE the_order_status WHEN 4 THEN '待收货' WHEN 5 THEN '已收货' ELSE '其他' END AS statuss ,order_id ...
- 关闭 Scroll Lock
通常,在电子表格中选择一个单元格并按箭头键时,所选内容会在各个单元格之间上下左右移动,具体取决于您按的箭头键.但是,如果在 Scroll Lock 处于开启状态时按箭头键,则向上或向下滚动一行.或者, ...
- K8S的核心概念
1.Pod -- 是最小部署单元 -- 是一组容器的集合 -- Pod中的容器共享网络 -- 生命周期是短暂的 2.controller -- 确保预期的pod副本的数量 -- 确保所有的node运行 ...
- 【Python机器学习实战】决策树与集成学习(六)——集成学习(4)XGBoost原理篇
XGBoost是陈天奇等人开发的一个开源项目,前文提到XGBoost是GBDT的一种提升和变异形式,其本质上还是一个GBDT,但力争将GBDT的性能发挥到极致,因此这里的X指代的"Extre ...
- adb 常用命令大全(6)- 模拟按键输入
语法格式 input [<source>] <command> [<arg>...] 物理键 # 电源键 adb shell input keyevent 26 # ...
- Ubantu启动失败,提示“Started GNOME Display Manager”之后起不来了
我是在搭建DPDK环境时,为了尝试下多网卡多列配置,将虚拟机的网卡类型由e1000改成了vxnet3类型.之后修改了下内存大小和CPU核数.然后启动ubantu虚拟机,结果无法成功启动,显示结果如下: ...
- TCL、华星光电和中环股份,如何在一条生态链上领跑?
聚众智.汇众力.采众长. "我们决心用五年时间,将TCL科技和TCL实业做到真正的世界500强,将智能终端.半导体显示.半导体光伏三大核心产业力争做到全球领先,将半导体材料等其他产业做到中国 ...
