计算机网络第4章-IPv6和寻址
IP地址的分配
为了获取一块IP地址用于一个组织的子网内,于是我们向ISP联系,ISP则会从已分给我们的更大
地址块中提供一些地址。
例如,ISP也许已经分配了地址块200.23.16.0/20。
该ISP可以依次将该地址块分成8个长度相等的连续地址块,随后分给我们一块。
如下图所示:

获取主机地址:动态主机配置协议
某组织一旦获得了一块地址,它就可以为本组之内的主机与路由器接口逐个分配IP地址。
路由器的IP地址通常由系统管理员配置。
但是主机地址我们自己可以手动配置,但是更多的是使用动态主机配置协议(DHCP)来完成。
DHCP允许主机自动获取一个IP地址。
网络管理员可以配置DHCP,以便使主机每次与网络连接时能得到一个相同的IP地址,或者某主机
将被分配一个临时的IP地址。
DHCP也被称为“即插即用协议”或“零配置”协议。
DHCP又是一个客户-服务器协议,客户通常是新到达的主机,它要活的包括自身使用的IP地址在内
的网路配置信息。
下图是一个DHCP接入的子网:

对于一台新到达的主机而言,DHCP协议工作要经过大概四步:
1.DHCP发现
一台新到达的主机的首要任务是发现一个要与其交互的DHCP服务器。这可以通过使用DHCP发现
报文来完成,客户在UDP分组中向端口67发送该发现报文。
怎么发送呢?很简单。
前面我们讲过广播目的地址,因此DHCP客户会在子网中使用255.255.255.255并且使用“本主机”源
IP地址0.0.0.0。
DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的节点。

2.DHCP服务器提供
DHCP服务器收到一个DHCP发现报文时,用DHCP提供报文向客户做出响应,该报文向该子网的
所有节点广播,仍然使用IP广播地址255.255.255.255。
3.DHCP请求
新到达的客户从一个或多个服务器中提供中选择一个,并向选中的服务器提供DHCP请求报文,回
显配置的参数。
4.DHCP ACK
服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
一旦客户收到DHCP ACK后,交互便完成了,并且该能够在租用期内使用DHCP分配的IP地址。
网络地址转换

我们可能会想,在家庭中很多机器使用路由器上的网络,这些机器的IP地址该如何分配呢?如果这
些机器都分配一个IP地址,那么全球的机器数量远远多于40亿,IP地址显然是不够分的,那该怎么
办呢?
很简单,在这里我们使用NAT来解释,并且来引入一个“专用网络”概念。
什么是NAT?
NAT使路由器对于外部世界来说甚至不像一台路由器。
相反NAT路由器对外界的行为就如同一个具有单一IP地址的单一设备。
所有离开家庭路由器流向更大的报文都拥有一个源IP地址138.76.29.7(上图的例子),且所有进入家
庭的报文都拥有同一个目的IP地址138.76.29.7。
从本质上讲,NAT使路由器对外界隐藏了家庭网络的细节。
而路由器怎么将分组转发给哪个内部主机呢?
技巧就是使用NAT路由器上的一张NAT转换表,并且在表项中包含了端口号及其IP地址。
NAT转换表具体操作
假设一个用户坐在家庭网络主机10. 0. 0. 1后,请求IP地址为 128.119. 40. 186的某台Web服务器
(端口 80)上的一个Web页面。
主机10. 0. 0. 1为其 指派了(任意)源端口号3345并将该数据报发送到LAN中。
NAT路由器收到该数据报, 为该数据报生成一个新的源端口号5001,将源IP替代为其广域网一侧接口
的IP地址 138. 76. 29.7,且将源端口 3345更换为新端口5001。
当生成一个新的源端口号时,NAT路由器可选择任意一个当前未在NAT转换表中的源端口号。(注
意到因为端口号字段为16 比特长,NAT协议可支持超过60 000个并行使用路由器广域网一侧单个
IP地址的连接!)
路由器中的NAT也在它的NAT转换表中增加一表项。Web服务器并不知道刚到达的包含 HTTP请求
的数据报已被NAT路由器进行了改装,它会发回一个响应报文,其目的地址是 NAT路由器的IP地
址,其目的端口是5001。
当该报文到达NAT路由器时,路由器使用目的IP地址与目的端口号从NAT转换表中检索出家庭网络
浏览器使用的适当IP地址 (10. 0. 0.1)和目的端口号(3345)。于是,路由器重写该数据报的目
的IP地址与目的端 口号,并向家庭网络转发该数据报。
IPv6
IPv6数据报的格式

扩大的地址容量
IPv6将IP地址长度从32比特增加到128比特,这就确保全世界将不会用尽IP地址。
IPv6还引入了一种称为任播地址的新型地址,这种地址可以使数据报交付给一组主机中的任意一
个。
简化高效的40字节首部
新的选项编码允许进行更灵活的选项处理。
流标签
IPv6有一个难以琢磨的"流"定义。
该字段用于“给属于特殊流的分组加上标签,这些特殊流是发送方要求进行特殊处理的流,如一种
非默认服务质量或需要实时服务的流。”
版本
该4比特字段用于标识IP版本号,IPv6将该字段值设为6,但是该字段不能被置为4,即使置为4也
无法创建一个合法的IPv4数据报。
流量类型
该8比特字段与我们在IPv4中看到的TOS字段含义相似。
有效载荷长度
该16比特值为一个无符号整数,给出了IPv6数据报中跟在定长的40字节数据报首部后面的字节数
量。
下一个首部
该字段标识数据报中的内容(数据字段)需要交给哪个协议?(TVP/UDP)
跳限制
转发数据报的每台路由器将对该字段的内容减1,若被减少到0,则被丢弃。
数据
这是IPv6数据报的有效载荷部分,当数据报到达目的地时,该有效载荷就从IP数据报中移出。
分片/重新组装
IPv6不允许在中间路由器上进行分片与重新组装。
相关文章:
计算机网络第4章-IPv6和寻址
IP地址的分配 为了获取一块IP地址用于一个组织的子网内,于是我们向ISP联系,ISP则会从已分给我们的更大 地址块中提供一些地址。 例如,ISP也许已经分配了地址块200.23.16.0/20。 该ISP可以依次将该地址块分成8个长度相等的连续地址块&…...
Lazarus安装和入门资料
azarus-2.2.6-fpc-3.2.2-win64 下载地址 Lazarus 基础教程 - Lazarus Tutorials for Beginners Lazarus Tutorial #1 - Learning programming_哔哩哔哩_bilibili https://www.devstructor.com/index.php?pagetutorials Lazarus是一款开源免费的object pascal语言RAD IDE&…...
mediapipe流水线分析 二
目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 ,该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…...
1.性能优化
概述 今日目标: 性能优化的终极目标是什么压力测试压力测试的指标 性能优化的终极目标是什么 用户体验 产品设计(非技术) 系统性能(快,3秒不能更久了) 后端:RT,TPS,并发数 影响因素01:数据库读写,RPCÿ…...
使用Plsql+oracle client 连接 Oracle数据库
2011年入职老东家X煤集团的时候,在csnd上写了一篇blog,题目叫“什么是ERP”,从此跳入DBA了这个烂坑,目前公司的数据库一部分是Oracle,另一部分是MySQL的,少量MSSQL,还需要捡起来一部分ÿ…...
centos获取服务器公网ip
查看公网IP 用下面几个命令: #curl ifconfig.me #curl icanhazip.com #curl cip.cc...
思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布
大模型技术正在引领新一轮工业革命,但将其应用于工业制造,仍面临许多挑战,专业知识的缺乏是关键难点。11月5日,香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…...
Wsl2 Ubuntu在不安装Docker Desktop情况下使用Docker
目录 1. 前提条件 2.安装Distrod 3. 常见问题 3.1.docker compose 问题无法使用问题 3.1. docker-compose up报错 参考文档 1. 前提条件 win10 WSL2 Ubuntu(截止202308最新版本是20.04.xx) 有不少的博客都是建议直接安装docker desktop,这样无论在windows…...
pytorch之relu激活函数
目录 1、relu 2、relu6 3、leaky_relu 4、ELU 5、SELU 6、PReLU 1、relu ReLU(Rectified Linear Unit)是一种常用的神经网络激活函数,它在PyTorch中被广泛使用。ReLU函数接受一个输入值,如果该值大于零,则返回该…...
UML---用例图
UML–用例图 0.用例图简介 用例图是一种UML(统一建模语言)的图形化表示方法,用于描述系统的功能和行为。它可以帮助系统分析师和开发人员理解系统的需求,用例图由参与者、用例和它们之间的关系组成。 1.用例图的组成部分 系统…...
后端配置跨域怎么配置
在后端配置跨域,需要在服务器的代码中添加相应的设置。以下是几种常见的后端语言的跨域配置方式: Node.js 在使用 Node.js 的 Express 框架时,可以使用 cors 中间件来处理跨域问题。安装 cors 中间件后,在代码中添加如下设置&am…...
【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因
一.硬编码/静态重定向 我们先来观察下没有地址分段时代CPU是怎么和内存们打交道,在8086CPU以前的老大哥们,访问内存时通常就是实打实的“指哪打哪”,程序指定要放在哪个地址,那就老老实实地放在哪个地址,比如程序A要放…...
Web逆向-某网络学院学习的”偷懒“思路分析
接到求助,帮朋友完成20课时的网络学习。 我想都没想就接下了,寻思找个接口直接把学习时间提交上去,易如反掌。 最不济最不济,咱还能16x播放,也简单的很 然鹅,当我登陆的时候,发现自己还是太天真…...
一个用python PyQT写的背单词小程序
主要用到了QGridLayout, QTableWidget import sys import os import pandas as pd from PyQt5.QtWidgets import *class DataFrameExample(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle(DataFrame Example)self.setGeom…...
AutoSAR配置与实践(深入篇)10.1 UDS刷写诊断服务解析(34/36/37服务)
AutoSAR配置与实践(深入篇)10.1 Boot刷写诊断服务解析(34/36/37服务) UDS刷写服务一、0x34服务1.1 0x34服务请求格式1.2 0x34服务响应格式1.3 举例说明二、TransferData (0x36) service2.1 0x36服务请求格式2.2 0x36服务响应格式2.3 举例说明三、RequestTransferExit (0x37…...
【机器学习】六、概率图模型
今天我们对概率图模型(Probabilistic Graphical Model,PGM)做一个总结。 模型表示 概率图模型,是指一种用图结构来描述多元随机变量之间条件独立关系的概率模型。 它提出的背景是为了更好研究复杂联合概率分布的数据特征&#x…...
机器视觉软件破解的背后是道高一尺,魔高一丈
讲个故事,小明从某购物平台花2000元买了一个C#机器视觉架构,压缩包带加密,卖家让小明先确认收货后给密码。 小明花了3元从另外一家卖家破解开压缩包密码,然后迅速从第一家卖家退货。小明成功省了1997元。 “道高一尺,…...
【I/O流之旅】File类-零基础入门指南
🎊专栏【Java】 🌺每日一句:看不清楚未来时,就比别人坚持久一点 ⭐欢迎并且感谢大家指出我的问题 目录 1.File概述 2.File构造方法 (1).根据文件路径创建文件对象 (2).根据父路径名字符串和子路径名字符串创建对象 (3).根据父路径对应文件对象和子路…...
ArrayList和LinkedList的区别有哪些?
ArrayList 和 LinkedList 是 Java 中常用的两种集合类,它们之间有一些重要的区别,主要涉及到其内部实现和性能特点: 内部实现: ArrayList 是基于动态数组实现的。它使用一个数组来存储元素,当数组已满并需要添加新元素…...
Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题
1.0 安装selenium 终端输入: pip install selenium 查看版本: pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是,基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
