问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IP,MAC,ARP详解

创作时间:
作者:
@小白创作中心

IP,MAC,ARP详解

引用
CSDN
1.
https://blog.csdn.net/yovo1/article/details/146116989

在计算机网络中,IP地址、MAC地址和ARP协议是三个核心概念,它们共同构成了网络通信的基础。本文将详细介绍这些概念及其工作原理,帮助读者更好地理解计算机网络的运行机制。

IP地址与MAC地址

IP地址和MAC地址是网络通信中两个重要的地址类型,它们分别在网络层和数据链路层发挥作用。

  • IP地址:虚拟地址、软件地址、逻辑地址,网络层和以上各层使用,放在IP数据报的首部。
  • MAC地址:固化在网卡上的ROM中,硬件地址、物理地址,数据链路层使用,放在MAC帧的首部。

区别要点

  • 路由器只根据目的站的IP地址进行转发
  • IP数据报中的源地址和目的地址始终不变,但MAC帧的源地址和目的地址一直在变,因为MAC地址每到一个新的路由器下,要更新该路由器为源地址,更新下一跳为目标地址,IP地址的目的地址不变,可始终寻找同一个地址,知道找到所求的通信IP地址。

总结:IP地址决定终点到哪去,MAC地址决定下一跳是谁。

尽管互连在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。

地址解析协议(ARP)

地址解析协议(ARP)用于实现IP通信时使用了两个地址——IP地址(网络层地址)、MAC地址(数据链路层地址),存在已知IP地址,需找出其相应的MAC地址的情况,这时就需要用到ARP协议。

ARP协议的作用

ARP协议的作用就是从IP地址解析出MAC地址。

ARP高速缓存

ARP高速缓存(ARP cache)存放IP地址到MAC地址的映射表,映射表动态更新(新增或超时删除)。映射表格式为:< IP 地址;MAC 地址;生存时间 (Age);类型等 >。超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。

ARP请求与响应

当主机A欲向本局域网上的某个主机B发送IP数据报时:

  • 本局域网上广播发送ARP请求(路由器不转发ARP请求)。
  • ARP请求分组包含:发送方硬件地址 / 发送方IP地址 / 目标方硬件地址(未知时填0) / 目标方IP地址。
  • 单播ARP响应分组包含:发送方硬件地址 / 发送方IP地址 / 目标方硬件地址 / 目标方IP地址。
  • ARP分组封装在以太网帧中传输。

ARP高速缓存的作用:

  • 存放最近获得的IP地址到MAC地址的绑定。
  • 减少ARP广播的通信量。
  • 进一步减少ARP通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到MAC地址的映射写入ARP请求分组。当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。不必在发送ARP请求。

ARP用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。使用ARP的四种典型情况:

  1. 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
  2. 发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。
  4. 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

为什么要使用两种地址:IP地址和MAC地址?

不同的网络使用不同的MAC地址。MAC地址之间的转换非常复杂。对以太网MAC地址进行寻址也是极其困难的。IP编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。因此,在虚拟的IP网络上用IP地址进行通信非常方便。

由于ARP请求分组是广播发送的,可能会存在ARP欺骗的情况(软件攻击的原因之一),截获密码等,网络执法官、ARP防火墙(可根据需求进一步了解)。

IP数据报的格式

IP数据报由首部和数据两部分组成。可选字段,其长度是可变的

  • 版本:占4位,指IP协议的版本,目前的IP协议版本号为4(即IPv4)。
  • 首部长度:占4位,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。
  • 区分服务:占8位,用来获得更好的服务,只有在使用区分服务时,这个字段才起作用,在一般的情况下都不使用这个字段
  • 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。
  • 标识:占16位,它是一个计数器,用来产生IP数据报的标识。
  • 标志(flag):占3位,目前只有前两位有意义。标志字段的最低位是MF。MF=1表示后面还有分片,MF=0表示最后一个分片。标志字段中间的一位是DF。只有当DF=0时才允许分片。
  • 片偏移:占13位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。(IP数据报过长时需要拆开传送,如下例子,分成三个数据报片后,偏移量的计算为偏移=新数据片首部对应源数据部分的位置/8)


  • 生存时间:占8位,记为TTL,指示数据报在网络中可通过的路由器数的最大值。
  • 协议:占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给那个处理过程。(IP协议支持多种协议,IP数据报可以封装多种协议PDU)
  • 首部检验和:占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法。
  • 源地址和目的地址都各占32位。

IP首部的可变部分---就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。长度可变:从1个字节到40个字节不等,取决于所选择的项目。增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。

【数据包与数据报只是说法不同】

网络畅通的条件和静态路由

数据路由:路由器在不同网段转发数据包
网络畅通的条件:能去能回
(路由器只关心网段,不关心具体的地址)
沿途的路由器必须知道目标网络下一跳给哪个接口,沿途路由器必须知道到源网络下一跳给那个接口。

配置和验证网络负载均衡(给网络中的路由器添加路由)

IP层转发分组的过程

分组在互联网中是逐跳转发的。基于终点的转发:基于分组首部中的目的地址传送和转发
为了压缩转发表的大小,转发表中最主要的路由是(目的网络地址,下一跳地址),而不是(目的地址,下一跳地址),查找转发表的过程就是逐行寻找前缀匹配。

下面举个例子:
路由器R1收到分组后查找转发表。先检查第1行,
128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配!
路由器R1收到分组后查找转发表。接着检查第2行。
128.1.2.132 AND 255.255.255.192 = 128.1.2.128 匹配!(进行分组的直接交付(通过路由器R1的接口1))

最长前缀匹配:使用CIDR时,在查找转发表时可能会得到不止一个匹配结果。最长前缀匹配原则:选择前缀最长的一个作为匹配的前缀。网络前缀越长,其地址块就越小,因而路由就越具体。把前缀最长的排在转发表的第1行。

如下面的例子:
路由器R1如何转发目的地址是128.1.2.196的分组?
路由器R1收到分组后查找转发表。先检查第1行。
128.1.2.196 AND 255.255.255.0 = 128.1.2.0 匹配!
路由器R1收到分组后查找转发表。接着检查第2行。
128.1.2.196 AND 255.255.255.128 = 128.1.2.128 匹配!
路由器R1收到分组后查找转发表。接着检查第3行。
128.1.2.196 AND 255.255.255.192 = 128.1.2.192 匹配!
问题:R1从哪个接口向外转发分组?
-----------答案是接口0(匹配的前缀最长)

转发表中的2种特殊的路由:
主机路由(host route)又叫做特定主机路由,是对特定目的主机的IP地址专门指明的一个路由,网络前缀就是a.b.c.d/32,放在转发表的最前面。
默认路由(default route),不管分组的最终目的网络在哪里,都由指定的路由器R来处理
用特殊前缀0.0.0.0/0表示。

路由器分组转发的流程。使用二叉线索查找转发表:
二叉线索(binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。为简化二叉线索的结构,可以用唯一前缀(unique prefix)来构造二叉线索。为了提高二叉线索的查找速度,广泛使用了各种压缩技术。用5个唯一前缀构成的二叉线索:规则:先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。在二叉线索中查找IP地址:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号