Java 网络原理 ③-NAT || DHCP

news/2025/2/4 17:40:44 标签: 网络, 网络协议, 计算机网络, IP, DHCP, NAT, IPv4

 这里是Themberfue 

 上篇文章我们简单介绍了 IP 协议 的首部字段的含义,这节课我们将继续深入 IP 协议~~~


DHCP

  • 上节课我们提到,IPv4 使用点分十进制的方式管理地址,但是 IPv4 最多分配43亿个地址,早在2019年,IPv4 的地址就已经全部分配完了,为了解决这些问题,人们想到了一系列方法:动态IP分配、NATIPv6......
  • 动态IP分配:每台需要使用网络的机器的地址并不是每时每刻都是该台机器的,如果该机器未在使用网络,在不分配 IP 地址,此时就会空出一个,把这空出来的给另一个正在使用网络的机器,DHCP 便充当该角色,但 DHCP 的功能并非只有这个。
  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态 IP 分配指的是通过自动化方式(通常由专门的服务器完成)给网络中的设备分配 IP 地址,而不是手动为每台设备静态配置 IP 地址。这种方式主要通过 DHCP(动态主机配置协议) 来实现。下面详细介绍动态 IP 分配的原理、过程和优缺点。
  • 在大型网络中,手动为每台设备配置IP地址既繁琐又容易出错;而设备经常加入或离开网络IP 地址 资源需要灵活管理。动态 IP 分配使得网络管理员能够集中管理 IP 地址池,设备接入网络时自动获得 IP 地址,降低维护成本,提高网络的可管理性与灵活性。
  • 动态IP分配通过 DHCP 协议 自动为客户端分配 IP 地址 及相关网络配置信息,极大地简化了网络管理工作。它通过租约机制确保 IP 地址 资源的高效利用,同时为设备频繁加入和退出网络提供灵活支持。尽管存在对中心服务器依赖和安全问题,但通过恰当的管理和防护措施,动态 IP 分配已成为现代网络的标准配置方式。

DHCP协议的主要步骤

DHCP发现(DHCP Discover)

  • 当客户端(例如一台电脑或手机)首次连接网络时,它不知道可用的IP地址。
  • 客户端发送一个 DHCP Discover 广播消息,寻找局域网内的 DHCP服务器

DHCP提供(DHCP Offer)

  • 网络中的 DHCP服务器 收到广播后,从其IP地址池中挑选一个可用的IP地址,并发送一个 DHCP Offer 消息。
  • 该消息中包含了可分配的IP地址、子网掩码、网关、DNS服务器等配置信息,以及租约时间(lease time)。

DHCP请求(DHCP Request)

  • 客户端从收到的多个DHCP Offer中选择一个(通常第一个响应的),然后发送一个 DHCP Request 消息给选定的 DHCP服务器,确认请求该IP地址。
  • 这个消息也会被其他 DHCP服务器 收到,从而让它们知道客户端选择了某个服务器的配置。

DHCP确认(DHCP ACK)

  • 选定的 DHCP服务器 收到客户端的请求后,发送一个 DHCP ACK 消息,确认IP地址分配。
  • 客户端收到ACK后,就正式使用该IP地址,并根据租约时间使用该地址,直到租约到期或续租。

  • 上述提到的租约是什么
  • 租约(Lease):动态IP分配并非永久性的。分配给客户端的IP地址有一个租用期限(lease time)。在租期结束前,客户端可以发起续租请求;如果续租失败或客户端离网,DHCP服务器会将该IP地址收回,供其他设备使用。
  • 租期管理:租期机制确保了IP地址资源的有效利用,并防止由于设备长时间不更新状态而造成的资源浪费。
  • 集中管理DHCP服务器集中管理网络中的IP地址池和相关配置信息,一旦IP地址发生冲突或网络结构变化,管理员可以统一调整设置。

💎凡事皆有优劣,使用 动态 IP 分配也不例外

优点

  • 自动化管理:客户端自动获取IP地址,简化了网络配置工作。

  • 灵活性IP地址可以在设备间动态分配,适应设备频繁加入或离开的情况。

  • 降低错误:避免手动配置可能导致的地址冲突和错误配置问题。

  • 集中控制:管理员可以通过 DHCP服务器 集中管理整个网络IP地址和其他网络参数(如DNS、网关)。

缺点

  • 依赖中心服务器:如果DHCP服务器故障或不可达,新设备可能无法获得IP地址,导致网络接入受阻。

  • 租约管理带来的额外开销:租期到期后,设备需要发起续租操作,增加了网络交互次数。

  • 安全问题DHCP本身缺乏认证机制,可能受到攻击者伪装的DHCP服务器(如DHCP欺骗)的威胁。


DHCP 的应用场景非常丰富

  • 家庭网络:家用路由器内置DHCP服务器,自动为连接的电脑、手机等设备分配IP地址。
  • 企业网络:企业内部网络通过专用的DHCP服务器分配IP地址,并结合DNS、网络管理工具实现集中控制。

  • 移动网络:移动运营商利用动态IP分配管理大量的用户终端连接。

  • 公共Wi-Fi热点:在咖啡馆、机场等场所,公共Wi-Fi通常也依赖DHCP为访问者分配临时IP地址。


NAT 

  • 单纯靠动态 IP 分配解决 IPv4 地址短缺的问题是不够的。目前,NAT 机制才是解决 IPv4 地址短缺的可靠方案。
  • 在进入 NAT 前,学计算机的宝宝们有没有这样一个疑惑,我知道你的 IP 地址,你也知道我的,那我和你为什么不能直接通信,比如联机游戏不能直接连接,而是需要听过某些方法才可以一起娱乐的玩耍,这就是 NAT 机制造成的了~~~
  • NAT(Network Address Translation,网络地址转换) 是一种用于 IPv4 网络的技术,主要用于在私有网络(如家庭、公司局域网)与公有网络(如互联网)之间进行 IP 地址转换。它允许多个私有 IP 通过一个或多个公网 IP 访问互联网,从而缓解 IPv4 地址耗尽的问题,并提供一定的安全性。

  • NAT 机制将 IP 分为 公网IP/外网IP私网IP/内网IP,私网IP 在同一个局域网下不可重复,但在不同的局域网下可以重复,其表示范围通常在 10.*、172.16-172.31.*、192.168.*。公网IP 则必须是唯一的,除了 私网IP 表示的范围除外,其他都可以用来表示 公网IP


  • 在同一局域网下的设备,任何设备之间都是可以直接通信的,其本身不受 NAT 机制的限制。
  • 拥有 公网IP 的设备,每个设备之间也是可以直接通信的,因为其本身就是暴露在公共场合下,同样不受 NAT 机制的影响。
  • 处于不同局域网下的设备,设备A处于局域网A,设备B处于局域网B,设备A 和 设备B 是不可以直接进行通信的,这便是 NAT 机制的限制,如需通信,则需通过某些特殊手段才可进行通信。
  • 公网设备A 是不可以直接访问 私网设备B 的,如需让 公网设备 访问你的 私网设备,同样需要某些特殊手段。
  • 私网设备如何访问公网设备呢?通过网络地址映射,内网设备 192.168.100 访问 百度(220.181.38.148)NAT 会把数据包的源 IP192.168.1.100 改为你的设备绑定的 公网 IP(例如 203.0.113.1)。
  • 路由转发过程中会经过多个节点,这些节点可能会是多个 公网IP,其会进行多次地址转换吗?答案是不会的,在转换前,它会检查你的 源IP 是否为 私网IP,否则不进行 网络地址映射。
  • 返回的数据如何找到被替换之前的 源IP 呢?通过端口号查找,例如:
  • 192.168.1.100:5001 → 203.0.113.1:60001 → 220.181.38.148:80
  • 192.168.1.101:5002 → 203.0.113.1:60002 → 220.181.38.148:80
  • NAT 设备维护一个 NAT 映射表,记录私有 IP、端口号和公网 IP、端口号的对应关系。服务器返回数据时,NAT 设备根据 NAT 映射表,将目的 IP 和端口号修改回私有 IP 和端口号,并将数据包转发回正确的内网设备。

❓端口号是否会冲突

  • NAT网络地址转换) 中,如果多个内网设备同时访问外部网络,并且它们的源端口号相同,NAT 设备如何处理端口冲突呢?
  • 如果两个内网设备使用相同的源端口访问 相同的目标 IP 和端口NAT 设备会调整映射,避免冲突。
  • 1. 修改源端口:NAT 设备会动态修改源端口,确保映射唯一。
  • 例如:
    • 192.168.1.100:5000 → 203.0.113.1:60001 → 220.181.38.148:80
    • 192.168.1.101:5000 → 203.0.113.1:60002 → 220.181.38.148:80
  • NAT 设备在 NAT 映射表中记录新的端口号,并在返回数据时修改回原来的端口号。
  • 2. 使用五元组映射
  • 有些高级 NAT 设备不仅使用四元组,还会记录协议类型(TCP/UDP),实现五元组映射:
    • IP + 源端口 + 目标 IP + 目标端口 + 协议类型
  • 这样,即使两个设备的 IP 和端口相同,但访问的目标服务器不同,NAT 仍然可以区分。
  • 3. 使用多个 公网IP
  • 在大规模 NAT 设备(如 ISP 级 CGNAT)中,如果单个公网 IP 的端口资源耗尽,NAT 设备可能会分配多个公网 IP 来均衡负载。

❓端口号耗尽怎么办

  • 由于 端口号范围只有 0-65535,如果 NAT 设备的公网 IP 过少,而同时连接数过多,可能会导致端口资源耗尽。解决方案:

  • 引入多个公网 IP(负载均衡 NAT)。
  • 回收闲置端口(超时回收 NAT 映射)。
  • 限制 NAT 连接数(部分 ISP 会限制单个用户的 NAT 连接数)。

优点

  • 节省 IPv4 地址:多个设备共享一个公网 IP
  • 增强内网安全性:外部无法直接访问内网设备,提供一定的防火墙功能。
  • 灵活的 IP 管理:内网 IP 规划更加自由,无需公网 IP 资源。

缺点

  • 破坏端到端通信NAT 修改了 IP 地址,影响 P2P 应用、VoIP、在线游戏等需要直接通信的服务。
  • 增加网络延迟NAT 设备需要处理地址转换,增加了一定的延迟和计算开销。
  • 影响某些协议:如 FTP、SIP(VoIP 语音协议)等,需使用 NAT 穿透技术 才能正常工作。

NAT 穿透(NAT Traversal)

由于 NAT 阻止了外部网络主动访问内网设备,有些应用(如 P2P 下载、VoIP)需要额外技术来穿透 NAT

常见 NAT 穿透技术
  • STUN(Session Traversal Utilities for NAT让设备知道自己在公网的 NAT 地址,适用于对称 NAT 以外的情况。

  • TURN(Traversal Using Relays around NAT使用中继服务器转发数据,适用于严格 NAT 网络,但增加了服务器负担。

  • UPnP(通用即插即用)允许应用程序向路由器请求打开端口,实现内外部通信(但存在安全隐患)。

  • NAT-PMP(NAT 端口映射协议)Apple 提出的协议,可动态申请端口映射,类似 UPnP。


  • 具体解决 IP 协议 更多内容,我们下节再见~~~
  • 毕竟不知后事如何,且听下回分解 
  • ❤️❤️❤️❤️❤️❤️❤️

 


http://www.niftyadmin.cn/n/5841704.html

相关文章

https的原理

HTTPS 的原理 HTTPS(HyperText Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。它在 HTTP 的基础上增加了 SSL/TLS 协议,以实现数据传输的安全性和完整性。以下是 HTTPS 的基本原理: 1. 基本概念 HTTP…

携程Java开发面试题及参考答案 (200道-下)

insert 一行数据的时候加的是什么锁?为什么? 在 MySQL 中,当执行 INSERT 操作插入一行数据时,加锁的情况会因存储引擎和具体的事务隔离级别而有所不同。一般来说,在 InnoDB 存储引擎下,INSERT 操作加的是行级排他锁(Row Exclusive Lock),以下详细说明原因。 行级排他…

Git 的起源与发展

序章:版本控制的前世今生 在软件开发的漫长旅程中,版本控制犹如一位忠诚的伙伴,始终陪伴着开发者们。它的存在,解决了软件开发过程中代码管理的诸多难题,让团队协作更加高效,代码的演进更加有序。 简单来…

如何安装PHP依赖库 更新2025.2.3

要在PHP项目中安装依赖,首先需要确保你的系统已经安装了Composer。Composer是PHP的依赖管理工具,它允许你声明项目所需的库,并管理它们。以下是如何安装Composer和在PHP项目中安装依赖的步骤: 一. 安装Composer 对于Windows用户…

常见的 Vue.js 组件库:Element Plus, Vuetify, Quasar

Vue.js 常见的 Vue.js 组件库:Element Plus, Vuetify, Quasar 今天我们来聊聊 Vue.js 中一些非常常见的组件库,它们能帮你快速构建出美观、功能强大的应用界面。今天我们介绍的是三个非常流行的 Vue.js 组件库:Element Plus、Vuetify 和 Qua…

蓝桥备赛指南(6)

这篇文章非常简单!重点只有两个,而且都和set非常相似。 se集合 set简介 首先,set集合是一种容器,用于存储一组唯一的元素,并按照一定的排序规则进行排序,set中的元素是按照升序排序的,默认情…

React+Cesium基础教程(003):加载3D建筑物和创建标签

文章目录 03-加载3D建筑物和标签方式一方式二完整代码03-加载3D建筑物和标签 方式一 添加来自 OpenStreetMap 的建筑物模型,让场景更加丰富和真实: viewer.scene.primitives.add(new Cesium.createOsmBuildings() );方式二 使用 Cesium ion 资源:

存储器知识点2

1.主存和CPU之间增加高速缓存的目的是解决CPU和主存之间的速度匹配问题。 2.DRAM的刷新方式是常用刷新方式: 1)集中式---正常读/写操作与刷新操作分开进行,刷新集中完成。特点:存在一段停止读/写操作的死时间 适用于高速存储器, 2)分散式---将一个存储…