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

计算机网络•自顶向下方法:DHCP、NAT、IPV6

获取IP地址

路由器:

  • 管理员手工配置路由器各个接口的IP地址

主机:

  • 管理员手工配置主机IP地址,服务器通常采用这种方法
  • 使用动态主机配置协议DHCP(Dynamic Host Configuration Protocol)获取IP地址、子网掩码、缺省路由器、本地DNS服务器等配置信息,个人终端通常采用这种方法

使用DHCP的好处:

  • 免去手工配置的麻烦(即插即用)
  • 可用少量的IP地址服务较多的客户(地址重用)

DHCP

DHCP(动态主机配置协议)是一种网络协议,允许网络中的设备自动从 DHCP 服务器获取 IP 地址以及其他网络配置信息。它简化了网络设备的管理,因为管理员不再需要手动为每个设备分配 IP 地址。

DHCP 是一种 客户端-服务器 模型的协议,设备(客户端)向 DHCP 服务器请求网络配置信息,服务器自动响应并分配合适的配置

DHCP 消息基于 UDP 协议

在这里插入图片描述

DHCP 的工作过程包括以下几个步骤:

  1. 客户端启动请求

当一个新的设备(客户端)加入网络时,它不知道自己的 IP 地址,因此首先会发送一个 DHCP Discover 报文。这个报文是一个广播请求,询问网络中是否有 DHCP 服务器。

  • DHCP Discover:客户端发送一个广播包到局域网,通知网络上有无 DHCP 服务器。
  1. DHCP服务器响应

网络中的 DHCP 服务器收到 DHCP Discover 请求后,会选择一个可用的 IP 地址,并将其与设备的 MAC 地址进行绑定,生成一个 DHCP Offer 报文发送回客户端。这个报文包含以下信息:

  • 可用的 IP 地址
  • 子网掩码
  • 默认网关
  • DNS 服务器地址(可选)
  • 租约时间(即该 IP 地址分配的时长)
  • DHCP Offer:DHCP 服务器向客户端发送一个包含 IP 地址等配置信息的响应。
  1. 客户端选择并请求

客户端收到一个或多个 DHCP Offer 后,会从中选择一个最合适的 IP 地址,并向选中的 DHCP 服务器发送 DHCP Request 请求,表示确认接受该 IP 地址和相关配置。

  • DHCP Request:客户端选择并请求某个 DHCP 服务器提供的 IP 地址。
  1. DHCP 服务器确认

DHCP 服务器收到 DHCP Request 请求后,会再次向客户端发送一个 DHCP Acknowledgment(ACK) 报文,表示客户端可以使用该 IP 地址。此时,客户端就正式获得了 IP 地址和其他配置信息。

  • DHCP Acknowledgment:服务器确认客户端的请求,正式分配 IP 地址。

NAT

网络地址转换(NAT) 是一种将内部网络(通常是私有IP地址)与外部网络(通常是公有IP地址)之间的地址进行转换的技术。NAT 允许多个设备通过一个公共的 IP 地址访问互联网,解决了 IPv4 地址不足的问题,并在一定程度上提高了网络的安全性。

NAT 的基本工作原理是在一个网络(通常是局域网)内的计算机和另一个网络(如互联网)之间进行 IP 地址的转换。设备发送的数据包中的源地址通常是私有IP地址,NAT 设备会将该地址转换为公有 IP 地址,然后将其转发到外部网络。

  • 私有IP地址:通常用于局域网(LAN)中的设备,它们是不能直接访问互联网上的地址。
  • 公有IP地址:是可以在互联网中进行路由和通信的地址。

在这里插入图片描述

NAT实现

外出的数据报:

  • 将数据报中的(源IP地址,源端口号)替换为(NAT IP地址,NAT端口号)

NAT 转换表:

  • 记录每个(源IP地址,源端口号)与(NAT IP地址,NAT端口号)的转换关系

进入的数据报:

  • 取出数据报中的(目的IP地址,目的端口号)查找NAT转换表,然后用转换表中对应的(IP地址,端口号)进行替换
NAT 穿越问题

NAT穿越是指在网络地址转换(NAT)环境中实现两个或多个设备之间直接通信的一系列技术和方法。由于 NAT 会修改数据包中的源IP地址和端口号,直接通过 NAT 路由器进行端到端通信变得非常困难(就是无法访问到内内部)

例如:

在上图中Client希望连接服务器 10.0.0.1,但是

  • 地址 10.0.0.1 为内部地址,对于client 不可见
  • Client 只能看到NAT路由器的公共IP地址 138.76.29.7

解决方案

  • 使用UPnP实现NAT穿越
    • 实现一个端口映射
    • 内网设备会指定一个端口(如 192.168.1.10:5000)和外部需要访问该设备的公共端口(如 203.0.113.10:5000
  • 使用中继服务器实现NAT穿越
    • NAT 后面的服务器与中继器建立连接
    • 外部客户与中继器建立连接
    • 中继器在两个连接之间转发分组

IPV6

IPv6地址

  • 128位,使用冒号十六进制表示,每16位以十六进制的形式写成一组,组之间用冒号分隔,如8000:0:0:0:0123:4567:89AB:CDEF
  • 地址表示的零压缩技术:可将连续的多组0压缩为一对冒号,如以上地址可表示为:8000**:😗*0123:4567:89AB:CDEF
  • IPv6定义了三种地址类型:
    • 单播地址:一个特定的网络接口
    • 多播地址:一组网络接口
    • 任播地址(anycast):一组网络接口中的任意一个(通常是最近的一个)

IPv6数据报格式

IPv6数据报以一个40字节的基本头开始,后面跟零个或多个扩展头,然后是数据

在这里插入图片描述

由于 IPv6 并不与 IPv4 完全兼容,现有的 IPv4 网络和设备需要与 IPv6 网络进行兼容。为了实现 IPv6 的平稳过渡,主要有以下几种技术:

  • 双栈(Dual Stack):设备同时支持 IPv4 和 IPv6,在 IPv6 网络无法连接时回退到 IPv4。
    有的 IPv4 网络和设备需要与 IPv6 网络进行兼容。为了实现 IPv6 的平稳过渡,主要有以下几种技术:

  • 双栈(Dual Stack):设备同时支持 IPv4 和 IPv6,在 IPv6 网络无法连接时回退到 IPv4。

  • 隧道(Tunneling):通过隧道技术将 IPv6 数据包封装在 IPv4 数据包中传输。


http://www.kler.cn/a/463597.html

相关文章:

  • 【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call
  • 除了淘宝、天猫和京东,其他电商平台的按图搜索商品API返回值结构是怎样的?
  • JAVA:利用 Redis 实现每周热评的技术指南
  • 【开源社区openEuler实践】hpcrunner
  • NLP 中文拼写检测纠正论文-07-NLPTEA-2020中文语法错误诊断共享任务概述
  • SQL 中复杂 CASE WHEN 嵌套逻辑优化
  • 大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)
  • 如何将vCenter6.7升级7.0?
  • vSAN手动平衡磁盘
  • 对比一下Java和go的unsafe包
  • 【电路笔记】-德摩根定理
  • pycharm+anaconda创建项目
  • 短视频矩阵系统前端搭建技术解析,支持OEM
  • React之从0开始(1)
  • Nginx搭建Web网站
  • 玩转树莓派Pico(21): 迷你气象站7——软件整合改进2
  • 基于SSM(Spring + Spring MVC + MyBatis)框架的旅游资源网站
  • git reset --hard(重置到当前提交,所有未提交的更改都会被永久丢弃)
  • ubuntu中zlib安装的步骤是什么
  • 运维人员的Go语言学习路线
  • 初学stm32---高级定时器输出n个pwm波
  • 无人机无法返航紧急处理方式!
  • Redis - 1 ( 11000 字 Redis 入门级教程 )
  • Linux性能优化-网络篇-NAT详解
  • 基于Docker+模拟器的Appium自动化测试(二)
  • 如何使用网络工具进行网络性能评估