当前位置: 首页 > article >正文

Java 网络原理 ③-NAT || DHCP

 这里是Themberfue 

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


DHCP

  • 上节课我们提到,IPv4 使用点分十进制的方式管理地址,但是 IPv4 最多分配43亿个地址,早在2019年,IPv4 的地址就已经全部分配完了,为了解决这些问题,人们想到了一系列方法:动态IP分配、NAT、IPv6......
  • 动态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 会把数据包的源 IP 从 192.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.kler.cn/a/530853.html

相关文章:

  • 6. 【Vue实战--孢子记账--Web 版开发】-- 主币种设置
  • OSCP - Proving Grounds - Roquefort
  • git基础使用--4---git分支和使用
  • 【零基础学JAVA】数据类型
  • 计算机网络一点事(23)
  • MediaPipe与YOLO已训练模型实现可视化人脸和手势关键点检测
  • 在K8S中,如何把某个worker节点设置为不可调度?
  • C语言可变参数
  • leetcode解题思路分析(一百六十三)1409 - 1415 题
  • 【1】快手面试题整理
  • C基础寒假练习(2)
  • AI模型升级版0.04
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.10 ndarray内存模型:从指针到缓存优化
  • DeepSeek横空出世,AI格局或将改写?
  • 《苍穹外卖》项目学习记录-Day11用户统计
  • selenium记录Spiderbuf例题C01
  • Rust中使用ORM框架diesel报错问题
  • ip属地是实时刷新吗还是网络刷新
  • AI模型升级版0.03
  • Vue.js组件开发-实现字母向上浮动
  • 基于STM32的网络摄像头
  • 我们信仰AI?从神明到人工智能——信任的进化
  • 【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点
  • 【实践案例】基于大语言模型的海龟汤游戏
  • 【Excel笔记_4】平均绝对偏差(MAD,Mean Absolute Deviation)的EXCEL公式表达
  • C++底层学习预备:模板初阶