网络协议基础--IP协议

embedded/2025/1/18 11:29:28/

一.IP基本认识

1.IP的作用
  • 位置:IP 在 TCP/IP 参考模型中处于第三层,即网络层。

  • 功能:网络层主要实现主机与主机之间的通信,也称为点对点(end to end)通信。这种通信方式确保了在复杂的网络环境中,数据能够从一个主机准确无误地传输到另一个主机。

  • 图示:


2.IP与MAC的关系
  1. IP 和 MAC 的功能区别

    • IP(网络层):IP 的主要作用是实现主机之间的通信,尤其是在 “没有直连” 的两个网络之间进行通信传输。它就像是一个远程导航系统,为数据在不同网络之间的传输提供路径规划和目标定位。
    • MAC(数据链路层):MAC 的作用则是实现 “直连” 的两个设备之间的通信。可以将其类比为在一个局部范围内(如同一房间内或同一子网内),设备之间直接通信的标识符。
  2. 生活实例

    以小明旅行为例来解释 IP 和 MAC 的关系:

    • 旅行方式类比:小林要去一个很远的地方旅行,制定了一个行程表,其间需先后乘坐飞机、地铁、公交车才能抵达目的地,为此小林需要买飞机票、地铁票等。

      • 车票与数据链路层类比:飞机票和地铁票都是去往特定的地点的,每张票只能够在某一限定区间内移动,此处的 “区间内” 就如同通信网络中数据链路。在区间内移动相当于数据链路层,充当区间内两个节点传输的功能,区间内的出发点好比源 MAC 地址,目标地点好比目的 MAC 地址。
      • 行程表与网络层类比:整个旅游行程表就相当于网络层,充当远程定位的功能,行程的开始好比源 IP,行程的终点好比目的 IP 地址。
    • 缺一不可:如果小林只有行程表而没有车票,就无法搭乘交通工具到达目的地。相反,如果除了车票而没有行程表,恐怕也很难到达目的地,因为小林不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地。与此类似,计算机网络中也需要 “数据链路层” 和 “网络层” 这个分层才能实现向最终目标地址的通信。

  3. 图片示例:


传输过程中的地址变化

  • 还有重要一点,旅行途中我们虽然不断变化了交通工具,但是旅行行程的起始地址和目的地址始终都没变。其实,在网络中数据包传输中也是如此,源 IP 地址和目标 IP 地址在传输过程中是不会变化的,只有源 MAC 地址和目标 MAC 一直在变化。这是因为 IP 地址是用于在整个网络范围内定位主机的,而 MAC 地址则是随着数据包在不同的链路节点间传输而不断更新,以适应每一段链路的直接通信需求。

二.IP地址的基础知识

1.IP地址的定义
  • 重要性:在 TCP/IP 网络通信的环境下,IP 地址是至关重要的。为了确保网络设备之间能够正常通信,每个设备都必须配置正确的 IP 地址。如果设备没有正确配置 IP 地址或者没有 IP 地址,就如同在现实世界中没有具体的家庭住址一样,信息将无法准确地在网络中传递,也就无法实现正常的通信。

  • IP 地址(IPv4)的表示方式

    • 介绍:IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的。而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32位 IP 地址以每 8 位为一组,共分为 4 组,每组以「 .​ 」隔开,再将每组转换成十进制。

  • 表示方式:


  • ​理论上限:
  • IP地址与网卡的配置关系

    • 实际上,IP 地址并不是简单地根据主机台数来配置的。在网络设备中,IP 地址是与网卡紧密相关的,每个网卡都有一个唯一的 MAC 地址。像服务器、路由器等设备通常会有 2 个以上的网卡,这是因为这些设备需要连接到不同的网络或者执行多种网络功能。例如,服务器可能需要同时连接内部局域网和外部互联网,因此它需要多个网卡来分别处理不同网络之间的数据传输。由于每个网卡都可以独立工作,所以它们会有 2 个以上的 IP 地址,并且每块网卡还可以分配一个以上的 IP 地址,这使得网络配置更加灵活,能够满足复杂的网络应用场景。

2.IP地址的分类
  • IP 地址分类的背景

    在互联网诞生初期,IP 地址资源相对充裕,计算机科学家们便设计了分类地址。IP 地址被分类成 5 种类型,即 A 类、B 类、C 类、D 类、E 类。在 IP 地址表示中,黄色部分是分类号,用于区分不同的 IP 地址类别。


  • A、B、C 类地址

    • 网络号和主机号:对于 A、B、C 类 IP 地址,主要分为网络号和主机号两个部分。这就好比生活中的地址,以小林是 A 小区 1 栋 101 号,你是 B 小区 1 栋 101 号为例,小区名字和栋数可以看作网络号,房间号可以看作主机号,通过这样的划分能够更好地在网络中定位设备。

    • 地址范围和最大主机个数

      类别地址范围(点分十进制)最大主机个数
      A 类1.0.0.0 - 126.0.0.016777214
      B 类128.0.0.0 - 191.255.0.065534
      C 类192.0.0.0 - 223.255.255.0254
    • 最大主机个数的计算

      以 C 类地址为例,其主机号占 8 位,最大主机个数为 28 - 2 = 254

      • PS:最大主机个数取决于主机号的位数。
    • 特殊 IP 地址

      为什么在计算最大主机数时要减去 2 呢?因为在 IP 地址中有两个特殊的 IP 地址。

      • 主机号全为 1 的地址:这个地址用于指定某个网络下的所有主机,主要用于广播。也就是说,当发送给该 IP 的数据时,同网络号下的所有 IP 都可以收到。例如在一个教室场景中,班长喊 “上课,全体起立!”,就类似于广播,信息会传达给教室里的所有人。

      • 主机号全为 0 的地址:这个地址用于指定某个网络

      • 图片示例:


      因此,在分配 IP 地址过程中,需要去掉这两种特殊情况。

    • 广播地址

      1. 广播地址的用途
        广播地址用于在同一个链路中相互连接的主机之间发送数据包,实现一对所有的通信方式。
      2. 广播地址的示例
        以 172.20.0.0/16 为例,将其用二进制表示为 10101100.00010100.00000000.00000000。把这个地址的主机部分全部改为 1,就形成广播地址 10101100.00010100.11111111.11111111,再转换为十进制表示就是 172.20.255.255。
      3. 广播地址的分类
        广播地址可以分为本地广播和直接广播。
      • 本地广播:在本网络内广播的叫做本地广播。例如网络地址为 192.168.0.0/24 的情况下,广播地址是 192.168.0.255。由于这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 192.168.0.0/24 以外的其他链路上。


      • 直接广播:在不同网络之间的广播叫做直接广播。例如网络地址为 192.168.0.0/24 的主机向 192.168.1.255/24 的目标地址发送 IP 包。收到这个包的路由器,会将数据转发给 192.168.1.0/24,从而使得所有 192.168.1.1 - 192.168.1.254 的主机都能收到这个包。不过,由于直接广播可能存在一定的安全问题,多数情况下会在路由器上设置为不转发。


  • D、E 类地址

    • D 类和 E 类地址是没有主机号的,所以不可用于主机 IP。D 类常被用于多播,例如视频会议等场景,一个源可以同时向多个接收者发送数据;E 类是预留的分类,暂时未使用。


  • 单播、多播(组播)和广播的区别

    • 单播:是一对一通信,就像两个人之间的单独对话。

    • 多播(组播):是一对一组通信,例如在线教育课程,老师可以同时向一组学生发送教学内容。

    • 广播:是一对所有通信,如前面提到的班长在班级中喊 “上课,全体起立”,消息传达给班级里的所有人。

    • 图示:


  • IP 分类的优点

    • 无论是路由器还是主机在解析一个 IP 地址的时候,通过判断其 IP 地址的首位是否为 0 来确定是否为 A 类地址,进而能够很快地找出网络地址和主机地址。其余分类也有相应的判断方式。这种分类地址的优点是简单明了,而且基于网络地址的选路过程也比较简单,方便网络设备快速处理和转发数据。
3.公有IP与私有IP地址
  1. 公有 IP 与私有 IP 的划分

    在 A、B、C 分类地址中,实际上划分了公有 IP 地址和私有 IP 地址,也称为公网 IP 地址和内网 IP 地址。

    • 图示:

  2. 私有IP地址

    1. 使用场景

      我们在办公室、家里、学校等场所使用的 IP 地址,一般都是私有 IP 地址。

    2. 管理和分配特点

      这些私有 IP 地址允许组织内部的 IT 人员自行管理和分配,并且可以重复使用。这就好比不同学校或者不同家庭网络内部的 IP 地址可以是相同的。例如,你学校的某个私有 IP 地址和我学校的可以一样,就像每个小区都有自己的楼编号和门牌号,你小区的家可以是 1 栋 101 号,我小区的家也可以是 1 栋 101 号,在小区内部这样的编号不会产生冲突。

  3. 公有IP地址

    1. 使用场景

      如果要在互联网上提供公开访问的服务,比如开设一个博客网站,就需要申请购买一个公有 IP 地址。只有这样,全世界的人才能访问这个网站。

    2. 唯一性

      公有 IP 地址基本上要在整个互联网范围内保持唯一,就像小区对外的地址(如中山路 666 号)是国家统一分配的,不能有两个小区都叫中山路 666 号。

  4. IP地址的管理主体

    1. 私有 IP 地址(内网 IP)

      由公司内部 IT 人员管理,因为它主要用于组织内部网络,在内部网络环境下可以灵活分配和使用。

    2. 公有 IP 地址(公网 IP)

      由 ICANN 组织管理。具体来说,是通过五大区域性因特网注册管理机构负责不同区域的管理:

      1. ARIN:负责北美地区的公有 IP 地址管理。
      2. LACNIC:主要管理拉丁美洲的公有 IP 地址。
      3. RIPE:承担欧洲、中东和中亚地区公有 IP 地址的管理工作。
      4. APNIC:负责亚太地区公有 IP 地址的管理。
      5. AfriNIC:管理非洲地区的公有 IP 地址。这种分工管理的方式有助于对全球范围内的公有 IP 地址进行有效、有序的分配和维护。
4.IP 地址与路由控制
  1. 路由控制表的作用

    • IP 地址的网络地址部分主要用于路由控制。路由控制表是实现路由控制的关键,它记录着网络地址与下一步应该发送至路由器的地址。无论是主机还是路由器,都有各自的路由控制表。
  2. IP 包转发流程

    1. 确定目标地址与查找路由表
      在发送 IP 包时,首先要明确 IP 包首部中的目标地址,然后从路由控制表中查找与该目标地址具有相同网络地址的记录。
    2. 选择转发路径
      如果路由控制表中存在多条相同网络地址的记录,就会选择相同位数最多的网络地址,即所谓的 “最长匹配” 原则来确定转发路径。
  3. 路由示例

    以下图的网络链路作为例子说明:


    1. 主机 A 的转发操作
      主机 A 要发送一个 IP 包,其源地址是 10.1.1.30,目标地址是 10.1.2.10。由于主机 A 在自己的路由表中没有找到与目标地址 10.1.2.10 匹配的网络地址记录,所以按照默认设置,将这个 IP 包转发到默认路由,也就是路由器 1。
    2. 路由器 1 的转发操作
      路由器 1 收到 IP 包后,会在自己的路由表中匹配与目标地址相同的网络地址记录。此时发现能够匹配,于是根据路由表信息,把 IP 数据包转发到 IP 地址为 10.1.0.2 的路由器 2。
    3. 路由器 2 的转发操作
      路由器 2 收到 IP 包后,同样会对比自身的路由表。当发现匹配到相应记录后,就把 IP 包从路由器 2 的 10.1.2.1 这个接口发出去,最终经过交换机把 IP 数据包转发到目标主机。
5.环回地址
  1. 环回地址的用途

    • 环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。
  2. 环回地址的表示

    • 计算机使用一个特殊的 IP 地址 127.0.0.1​ 作为环回地址,并且与这个 IP 地址具有相同意义的还有一个叫做 localhost​ 的主机名。
  3. 环回地址的特点

    • 当使用这个 IP 地址或者主机名时,数据包不会流向网络,而是在本地计算机内部进行通信,就像是在计算机内部构建了一个 “闭环” 的通信路径,用于程序之间的本地交互。这种方式在本地测试网络应用程序等场景中非常有用,例如在开发一个网络服务器软件时,可以先使用环回地址在本地进行测试,检查程序的基本功能是否正常,而不用担心会对外部网络产生影响。

三.IP协议相关技术

IP协议相关的重要且常见的技术

  • DNS 域名解析
  • ARP 与 RARP 协议
  • DHCP 动态获取 IP 地址
  • NAT 网络地址转换
  • ICMP 互联网控制报文协议
1.DNS 域名解析
  • 重要性:在日常上网过程中,我们习惯于使用域名(例如:www.baidu.com)来访问各种网络资源,而非直接使用 IP 地址。这是因为域名具有便于人类记忆的特点,更符合我们的使用习惯。而实现将域名转换为 IP 地址这一关键功能的技术,便是 DNS 域名解析。DNS 作为应用层协议,如同一位智能翻译官,能够自动将我们输入的域名网址,准确地转换为计算机能够识别和处理的具体 IP 地址,从而确保我们顺利地访问网络上的各类服务。

  • 域名的层级关系

    1. 域名的结构特征

      • DNS 中的域名采用句点分隔的方式,例如www.server.com,其中的句点清晰地划分了不同层次。这种结构设计蕴含着独特的层级逻辑,越靠右的位置代表其层级越高。这种从右至左层级递减的方式,与外国人描述城市地点时从小到大的顺序类似,如 XX 街道 XX 区 XX 市 XX 省,与我们中国人习惯的从大到小顺序有所不同。
    2. 具体层级构成

      1. 根域(.):处于域名层级的最顶端,虽然在实际书写中一般省略不写,但它却是整个域名体系的根基。根域的 DNS 服务器信息广泛分布并保存在互联网中的所有 DNS 服务器内。这一巧妙的设计使得任何一台 DNS 服务器,无论身处网络的何处,都能够顺利地找到并访问根域 DNS 服务器,为后续的域名解析奠定了坚实的基础。
      2. 顶级域 DNS 服务器:紧挨着根域的下一层便是顶级域,像常见的 com 顶级域,除此之外,还有 net、org、cn 等不同类型的顶级域,它们各自代表着特定的网站类型或区域属性。例如,com 通常用于商业机构,org 多用于非营利组织,cn 则是中国国家顶级域名。顶级域 DNS 服务器在域名解析过程中扮演着重要的中间角色,负责管理和引导特定顶级域下的域名解析工作。
      3. 权威 DNS 服务器:再往下一层,以server.com为例,其对应的权威 DNS 服务器承担着对该特定域名进行最终解析的重任。它作为域名解析结果的源头,拥有对所负责域名的绝对控制权,“我的域名我做主”,这也正是其被称为 “权威” 的原因所在。它掌握着域名与 IP 地址之间的准确映射关系,能够为域名解析提供最准确的答案。
    3. 图片示例:


  • 域名解析的工作流程

    1. 客户端的本地查找

      1. 浏览器缓存查询:浏览器首先会在自己的缓存中进行查找,看是否已经存储了该域名对应的 IP 地址。如果幸运地找到了,那么浏览器就能迅速获取 IP 地址并与目标服务器建立连接,大大加快了访问速度。
      2. 操作系统缓存查询:若浏览器缓存中未找到,浏览器会向操作系统的缓存发起请求,试图从操作系统的缓存数据中获取所需的 IP 地址。操作系统缓存中可能保存着近期访问过的域名 IP 映射信息,这为快速解析提供了又一次机会。
      3. hosts 文件查询:倘若操作系统缓存中也没有找到相关信息,浏览器会进一步检查本机的域名解析文件 hosts。hosts 文件是一个本地配置文件,用户可以手动在其中添加域名与 IP 地址的对应关系,它具有较高的优先级。如果 hosts 文件中存在我们输入域名的记录,那么就可以直接使用其中指定的 IP 地址。
    2. DNS 服务器查询

      1. 向本地 DNS 服务器请求:客户端首先会发出一个 DNS 请求,询问 “www.server.com的 IP 是多少呀?”,并将这个请求发送给本地 DNS 服务器,也就是我们在客户端的 TCP/IP 设置中填写的 DNS 服务器地址。本地 DNS 服务器就像是我们在网络世界中的 “本地向导”,客户端首先会向它寻求帮助。
      2. 本地 DNS 服务器的处理:本地域名服务器收到客户端的请求后,会立即在自己的缓存表格中进行查找。如果缓存中恰好保存了www.server.com的相关记录,那么它会毫不犹豫地直接返回对应的 IP 地址,整个解析过程就此顺利完成。然而,如果缓存中没有找到,本地 DNS 服务器就需要向更高级别的 DNS 服务器寻求帮助。它会向根域名服务器发出询问:“老大,能不能告诉我www.server.com的 IP 地址呢?” 这里需要注意的是,根域名服务器虽然处于最高层次,但它并不直接参与具体的域名解析工作,而是像一位经验丰富的领航员,为本地 DNS 服务器指明前进的方向。
      3. 根 DNS 服务器的指引:根 DNS 服务器收到来自本地 DNS 的请求后,会仔细分析域名的后缀信息。当发现域名后缀是.com 时,它会告诉本地 DNS 服务器:“www.server.com这个域名归.com 区域管理,我给你.com 顶级域名服务器的地址,你去问问它吧。” 就这样,根 DNS 服务器为本地 DNS 服务器指明了下一步的查询方向。
      4. 顶级域名服务器的回应:本地 DNS 服务器收到顶级域名服务器的地址后,迅速向其发起请求:“老二,你能告诉我www.server.com的 IP 地址吗?” 顶级域名服务器在接到请求后,会根据自己所掌握的信息,回应本地 DNS 服务器:“我给你负责www.server.com区域的权威 DNS 服务器的地址,你去问它应该就能得到答案了。” 顶级域名服务器在域名解析的链条中,起到了承上启下的关键作用,进一步引导本地 DNS 服务器接近最终的答案。
      5. 权威 DNS 服务器的解析:本地 DNS 服务器依照顶级域名服务器提供的地址,转向询问权威 DNS 服务器:“老三,www.server.com对应的 IP 是啥呀?” 作为域名解析结果的权威来源,server.com的权威 DNS 服务器会在自己的数据库中进行精确查询。查询完成后,它将对应的 IP 地址 X.X.X.X 告知本地 DNS 服务器。
      6. 结果返回客户端:本地 DNS 服务器在获取到 IP 地址后,将其返回给客户端。客户端在收到 IP 地址后,便能够依据这个地址与目标服务器建立连接,从而成功访问我们所请求的网络资源。
    3. 图片示例:


2.ARP 与 RARP 协议

在传输 IP 数据报时,确定源 IP 地址和目标 IP 地址后,需通过主机的「路由表」来确定 IP 数据包的下一跳。由于网络层的下一层是数据链路层,因此还需要知晓「下一跳」的 MAC 地址,才能实现数据在链路中的准确传输。

  • ARP协议

    • ARP 协议的作用与原理

      • 主机的路由表虽能找到下一跳的 IP 地址,但要获取对应的 MAC 地址,就需借助 ARP 协议,它属于数据链路层协议。ARP 主要通过 ARP 请求与 ARP 响应两种类型的包来确定 MAC 地址。
    • ARP 请求过程

      • 主机会以广播的形式发送 ARP 请求。在这个请求包中,包含了想要获取 MAC 地址的主机 IP 地址。这就好比在一个大房间里大声询问:“谁的 IP 地址是这个呀,快告诉我你的 MAC 地址。” 同个链路中的所有设备都会收到这个广播请求。
    • ARP 响应过程

      • 当同链路中的设备收到 ARP 请求后,会拆开请求包查看内容。若 ARP 请求包中的目标 IP 地址与自身 IP 地址一致,该设备就会将自己的 MAC 地址填入 ARP 响应包,然后返回给发起请求的主机。就像在房间里听到询问后,符合条件的人站出来回应:“我的 IP 地址是这个,我的 MAC 地址是 XX。”


    • MAC 地址缓存机制

      • 操作系统通常会把第一次通过 ARP 获取的 MAC 地址缓存起来。这样,下次当主机需要向同一 IP 地址的设备发送数据时,就可以直接从缓存中找到对应的 MAC 地址,无需再次发起 ARP 请求,大大提高了数据传输效率。不过,MAC 地址的缓存并非永久有效,而是设置了一定期限。一旦超过这个期限,缓存的内容将被清除,以保证缓存信息的时效性。
  • RARP 协议

    • RARP 协议的定义与用途

      ARP 协议是已知 IP 地址求 MAC 地址,而 RARP(Reverse Address Resolution Protocol)协议则恰恰相反,它是用于已知 MAC 地址求 IP 地址的协议。在一些场景中,如将打印机服务器等小型嵌入式设备接入网络时,经常会用到 RARP 协议。

    • RARP 协议的工作流程

      1. 设备请求:通常需要先架设一台 RARP 服务器,并在该服务器上预先注册设备的 MAC 地址及其对应的 IP 地址。当设备接入网络后,会发送一条请求信息,内容大致为「我的 MAC 地址是 XXXX,请告诉我,我的 IP 地址应该是什么」。

      2. 服务器响应:RARP 服务器接到这个消息后,会在其注册信息中查找与该 MAC 地址对应的 IP 地址,然后返回「MAC 地址为 XXXX 的设备,IP 地址为 XXXX」的信息给这个设备。

      3. 设备设置 IP 地址:设备接收到 RARP 服务器的应答信息后,就会根据该信息设置自己的 IP 地址,从而完成在网络中的 IP 地址配置,能够正常与网络中的其他设备进行通信。

      4. 图片示例:


3.DHCP 动态获取 IP 地址
  • DHCP 概述:DHCP(动态主机配置协议)是基于 UDP 协议的应用层协议。在日常生活中,我们的电脑常常借助 DHCP 动态获取 IP 地址,这极大地简化了手动配置 IP 信息的繁琐流程。

  • DHCP 工作流程:

    1. DHCP 发现(DHCP DISCOVER)

      • 数据包发起:客户端初始状态下没有 IP 地址,也不知晓 DHCP 服务器的地址。此时,客户端会发起 DHCP 发现报文(DHCP DISCOVER)的 IP 数据包。
      • 通信方式:该数据包采用 UDP 广播通信,使用广播目的地址 255.255.255.255(端口 67),并以 0.0.0.0(端口 68)作为源 IP 地址。客户端将此 IP 数据包传递给链路层,链路层进而把帧广播到网络中的所有设备。这就好比在一个大广场上大声呼喊,询问谁是提供 IP 地址的 DHCP 服务器。
    2. DHCP 提供(DHCP OFFER)

      • 服务器响应:当 DHCP 服务器接收到 DHCP 发现报文时,会用 DHCP 提供报文(DHCP OFFER)向客户端做出回应。
      • 报文内容:此报文依旧使用 IP 广播地址 255.255.255.255,其中携带了服务器可提供租约的 IP 地址、子网掩码、默认网关、DNS 服务器以及 IP 地址租用期等重要信息。这就像是有人听到呼喊后,站出来回应并给出了可供使用的 IP 地址及相关配置信息。
    3. DHCP 请求(DHCP REQUEST)

      • 客户端选择与响应:客户端可能会收到一个或多个服务器发送的 DHCP 提供报文。客户端从中挑选一个服务器,并向选中的服务器发送 DHCP 请求报文(DHCP REQUEST)进行响应,同时回显配置的参数。这一步就如同在多个回应中选择了一个,并告知对方自己接受这个配置。
    4. DHCP 确认(DHCP ACK)

      • 服务端回应:最后,服务端用 DHCP ACK 报文对 DHCP 请求报文进行应答,确认并提供客户端所要求的参数。
      • 交互完成:一旦客户端收到 DHCP ACK,整个交互过程便宣告完成。此时,客户端能够在租用期内使用 DHCP 服务器分配的 IP 地址,正式接入网络
  • IP 地址租期管理

    1. 租期将满请求:当租约的 DHCP IP 地址即将到期时,客户端会向服务器发送 DHCP 请求报文。

    2. 服务器回应处理:

      • 同意续租:若服务器同意继续租用,会用 DHCP ACK 报文进行应答,客户端即可延长租期,继续使用该 IP 地址。
      • 拒绝续租:若服务器不同意继续租用,则会发送 DHCP NACK 报文,客户端收到后就必须停止使用租约的 IP 地址。
  • DHCP 广播限制与中继代理

    1. 广播限制问题:在 DHCP 交互过程中,全程使用 UDP 广播通信。然而,如果 DHCP 服务器和客户端不在同一个局域网内,由于路由器不会转发广播包,那么似乎每个网络都需要配置一个 DHCP 服务器,这显然会增加管理成本和复杂性。

    2. DHCP 中继代理解决方案:

      • 工作原理:为解决上述问题,DHCP 中继代理应运而生。DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包,DHCP 中继代理收到这个广播包后,会以单播的形式将其发送给 DHCP 服务器。服务器端收到该包后,向 DHCP 中继代理返回应答,再由 DHCP 中继代理将此包转发给 DHCP 客户端。


      • 作用:通过这种方式,即使 DHCP 服务器与客户端不在同一链路,也能够实现 IP 地址的统一分配和管理,大大提高了网络 IP 地址管理的效率和灵活性。

网络地址转换">4.NAT 网络地址转换
  • IPv4 地址紧缺:IPv4 地址资源极为紧缺,尽管无分类地址(CIDR)技术能在一定程度上延缓 IPv4 地址耗尽的进程,但鉴于互联网用户数量的爆炸式增长,IPv4 地址仍面临枯竭风险。

  • NAT 技术的诞生:为缓解 IPv4 地址耗尽问题,网络地址转换 NAT(Network Address Translation,属于网络层协议)技术应运而生。简单而言,NAT 旨在实现同一公司、家庭或教室内的主机在与外部通信时,将私有 IP 地址转换为公有 IP 地址。


  • NAT与NAPT

    • 普通NAT的局限性:乍看之下,似乎每将 N 个私有 IP 地址转换为公有 IP 地址,就需对应 N 个公有 IP 地址,如此并不能有效缓解 IPv4 地址耗尽问题,普通 NAT 转换看似意义不大。

    • NAPT的原理

      1. 原理:由于绝大多数网络应用借助传输层协议 TCP 或 UDP 传输数据,NAPT(网络地址与端口转换,Network Address Port Translation)技术将 IP 地址与端口号一同进行转换,从而实现仅用一个全球 IP 地址,便可满足多个私有 IP 地址对外通信需求。
      2. 示例:以两个客户端 192.168.1.10 和 192.168.1.11 同时与服务器 183.232.231.172 通信为例,二者本地端口均为 1025。此时,它们的私有 IP 地址都转换为公有地址 120.229.175.121,但通过不同端口号加以区分。NAPT 路由器自动生成转换表,凭借此表可正确转换地址与端口组合,保障客户端 A、B 与服务器的同时通信。在 TCP 场景下,建立 TCP 连接首次握手时发出的 SYN 包,会触发转换表生成;而收到关闭连接时发出 FIN 包的确认应答后,相关记录会从表中删除。
  • NAT/NAPT的缺点

    • 外部连接受限:外部难以主动与 NAT 内部服务器建立连接,原因在于 NAPT 转换表若无对应转换记录,内网 IP 地址便无法接收如反弹 shell、外带敏感信息等操作。这在一定程度上限制了内网服务的对外可访问性,例如一些需要外部主动发起连接的特殊服务(如某些远程管理服务),在 NAT 环境下可能无法正常工作。

    • 性能开销问题

      1. 转换表生成开销:NAT/NAPT 转换表的生成并非无成本操作,这一过程需要占用路由器的计算资源和存储资源,用于记录和管理 IP 地址与端口号的转换映射关系。
      2. 转换操作开销:每次数据传输时,路由器都需依据转换表进行地址与端口的转换操作,这会增加数据处理的延迟,尤其在网络流量较大时,可能导致网络性能下降。
    • 连接稳定型问题:通信过程中,若 NAT 路由器重启,所有 TCP 连接将被重置。这意味着正在进行的网络通信会突然中断,给用户带来不便,例如在线视频播放中断、实时游戏掉线等。这是因为 NAT 路由器重启后,原有的转换表信息丢失,TCP 连接的状态无法维持,客户端与服务器之间需要重新建立连接,重新协商通信参数。

5.ICMP 互联网控制报文协议
  • ICMP 协议概述:ICMP,全称 Internet Control Message Protocol,即互联网控制报文协议,归属于网络层协议。我们日常常用的 ping 命令,便是基于 ICMP 协议得以实现。

    • 如何控制?

      网络包传输过程中,复杂的网络环境会引发各种问题。计算机网络秉持严谨的风格,不会让问题 “不明不白”。因此,当出现问题时,需要传出消息报告具体情况,以便调整传输策略,实现对网络传输局面的有效控制。

  • ICMP 的主要功能

    1. 确认 IP 包送达情况:判断 IP 包是否成功抵达目标地址。在网络传输中,确保数据准确到达目的地是关键,ICMP 能帮助我们知晓这一结果。
    2. 报告 IP 包废弃原因:当 IP 包在发送过程中因各种原因被废弃时,ICMP 负责将具体原因通知发送方。例如网络拥塞、目标不可达等情况,发送方可以据此了解问题所在。
    3. 助力网络设置改善:通过 ICMP 反馈的信息,网络管理员可以发现网络中存在的问题,进而对网络设置进行优化,提升网络性能。
  • ICMP 的工作示例

    • 以主机 A 向主机 B 发送数据包为例,若途中路由器 2 未能发现主机 B 的存在,路由器 2 会向主机 A 发送一个 ICMP 目标不可达数据包,告知发往主机 B 的包未能成功。这个 ICMP 通知消息会借助 IP 协议进行发送,从路由器 2 返回的 ICMP 包会依照常规的路由控制,先经过路由器 1,再转发给主机 A。主机 A 收到该 ICMP 包后,通过分解 ICMP 的首部和数据域,就能得知具体的问题原因。


  • ICMP 的分类

    1. 查询报文类型:主要用于诊断,通过这类消息可以获取网络中设备的相关信息,例如主机是否可达、网络延迟情况等。ping 命令就是利用查询报文类型,向目标主机发送 ICMP Echo Request 报文,目标主机收到后回复 ICMP Echo Reply 报文,以此来判断目标主机是否存活以及网络连通状况。
    2. 差错报文类型:负责通知出错原因。当网络传输出现问题,如 IP 包无法送达目标地址、网络拥塞导致数据包丢弃等情况时,就会发送差错报文,让发送方了解传输过程中出现的错误,以便采取相应措施。



http://www.ppmy.cn/embedded/154930.html

相关文章

【Uniapp-Vue3】vite.config中安装插件unplugin-auto-import自动导入vue和uniapp

对着项目右键-->使用命令行窗口打开所在目录,就会弹出终端 在终端中输入如下命令,后回车。 npm install unplugin-auto-import 在项目目录下创建vite.config.js 在vite.config.js文件中输入如下代码: import { defineConfig } from vi…

飞牛 使用docker部署Watchtower 自动更新 Docker 容器

Watchtower是一款开源的Docker容器管理工具,其主要功能在于自动更新运行中的Docker容器 Watchtower 支持以下功能: 自动拉取镜像并更新容器。 配置邮件通知。 定时执行容器更新任务。 compose搭建Watchtower 1、新建文件夹 先在任意位置创建一个 w…

【Linux】常用指令详解二

前言 介绍一些Linux常用命令,本文为文章【Linux】常用指令详解一的续作 1.绝对路径与相对路径 绝对路径:从系统根目录开始,可以完整描述文件或目录的路径。使用绝对路径可以准确定位到系统中的某个文件或目录。 相对路径:相对…

【Linux系统】分区挂载

我们能够根据一个 inode 号在指定分区寻找目标文件的 struct inode,也能根据目录文件的内容,通过映射关系,找指定的 inode,可是,现在有个问题: 问题:inode 是不能跨分区使用的!Linu…

正则表达式--元字符-基础字符(2)

只代表一位 1.\w 字母 数字 下划线 2.\W 非字母 数字 下划线 3. . 任意内容&#xff08;换行不算&#xff09; 4. 转义字符 \ 强行转义成没意义的 <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

Hessian矩阵 通过符号计算解析 Hessian 矩阵

在工业机器人中&#xff0c;构建Hessian矩阵通常用于优化、运动规划或控制任务。Hessian矩阵是目标函数的二阶偏导数矩阵&#xff0c;常用于牛顿法等优化算法中。以下是构建Hessian矩阵的步骤&#xff1a; 1. 定义目标函数 首先&#xff0c;明确需要优化的目标函数 ( f ( x …

云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”

2024 年 12 月 24 日&#xff0c;由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;主办的“2025 中国信通院深度观察报告会&#xff1a;算力互联网分论坛”&#xff0c;在北京隆重召开。本次论坛以“算力互联网 新质生产力”为主题&#xff0c;全面展示中国…

期权懂|期权的溢价率和杠杆率有什么区别?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权的溢价率和杠杆率有什么区别&#xff1f; 一、定义篇 期权溢价率&#xff1a;这是一个细腻地描绘了期权价格与其内在价值之间微妙差异的指标。想象一下&#xff0c;期权价格就…