%% # 纲要 > 主干纲要、Hint/线索/路标 - IP 地址 - IPv4 编址 - IPv6 编址 - IP 数据报 - IPv4 数据报 - IPv6 数据报 - IP 分组与转发 # Q&A #### 已明确 #### 待明确 > 当下仍存有的疑惑 **❓<font color="#c0504d"> 有什么问题?</font>** %% # Internet 协议——IP 协议 **==IP 协议==**(Internet Protocol,**==互联网协议==**)是 TCP/IP 协议族中的核心协议,也称 "**==网际协议==**", 其规定了以下几个方面的内容: - **网络层寻址**——**路由转发** - **IP 编址**——IPv4、IPv6 地址 - **IP 数据报**:**数据报格式**、**数据封装与解封装、分片与重组** IP 协议位于 OSI 以及 TCP/IP 协议中的**网络层**,所有上层数据(TCP、UDP、ICMP、IGMP)均需要**通过 ==IP 数据报== 传输**(加上 IP 头部)。 #### IP 协议版本 IP 协议包括两个版本:**==IPv4==**、**==IPv6==**。 前者是**当前互联网使用最广泛的**,而 IPv6 是为了**应对 IPv4 地址耗尽问题**而设计的。 #### 配套协议 与 IP 协议配套使用的三个协议: - ARP 地址解析协议 - ICMP 网际控制报文协议 - IGMP 网际组管理协议 <br><br> # IP 地址 IP 地址用于**唯一地标识一个 "网络设备"**,**使得能够在整个互联网中==寻址、路由==数据包**,从而实现**设备之间的通信**。 IPv4、IPv6 具体编址方案参见 [[02-开发笔记/07-计算机网络/网络层/IPv4 编址|IPv4 编址]]、[[02-开发笔记/07-计算机网络/网络层/IPv6 编址|IPv6 编址]] 。 > [!NOTE] **网络设备** > > 指可联网的设备,例如**电脑、手机、路由器**或者**带联网功能的智能家具**等**网络终端设备**。 > [!NOTE] 数据包在互联网中的传播过程——路由器根据 "==目的 IP 地址==" 在不同网段间进行转发 > > ![[_attachment/02-开发笔记/07-计算机网络/网络层/IP 协议.assets/IMG-IP 协议-DFAFEBFF333A915B808E8BE7DAC1B358.png|563]] > ![IP地址的网络号|366](_attachment/02-开发笔记/07-计算机网络/网络层/网络层基本概念.assets/IMG-网络层基本概念-4E79E57728EE6471B25EB2F46B4B9314.jpg) > <br> ## 公网地址与私网地址 IP 地址分为 "**公网地址**" 和 "**私网地址**" 两种类型: - 公网地址**由互联网注册机构分配**,要求具有 "**全球唯一性**" 和 "**全球可达性**",用于**在==互联网==上进行通信**。 - 私网地址**由局域网管理自行分配**,只需要**在局域网内能够唯一标识一个网络设备接口即可**,用于**在==局域网内部==通信**。 公网地址间可以**直接在互联网上互相访问**,而**私网地址需要经由路由器进行 NAT 转换&转发才能访问公网 IP 地址** > [!example] 校园网 IP 地址示例 > > ![image-20230909195133147|343](_attachment/02-开发笔记/07-计算机网络/总结/IP_MAC_地址.assets/IMG-IP_MAC_地址-AEB6B72C0566DEDDEFF7F327A641DBE4.png) > > > 宿舍校园网给分配的信息如下: > > - IP 地址:222.201.191.161 > - 网关:222.201.191.254 > - 掩码:255.255.255.0 > <br> ### 公网地址 公网地址也称 "**公共 IP 地址**",为 **==全球唯一== IP 地址**,用于**互联网上通信**,**可直接在 Internet 上被访问**。 公网地址通常用于**互联网上的服务器**、路由器等设备。 > [!info] 公网 IP 地址具有 "**==全球唯一性==**" > > 公网 IP 地址由**互联网注册机构 ICANN 管理和分配**,其向**各个 ISP 分配地址块** 并确保**每个公网 IP 地址在全球范围内唯一**。 > 即 **==不存在同一公网 IP 地址同时属于多个网段==的情况**,例如公网 IP 地址 `222.201.191.161`,其**只存在于某一确定网段下**。 > > 正因如此,访问一个公网 IP 地址**不需要指出其网络前缀**,IP 数据包中也**不包含网络前缀 or 子网掩码** , > **互联网路由器中知道该唯一地址属于哪个网段**,从而能够正确转发。 ### 私网地址 私网地址即 **局域网 IP 地址**,**只能在局域网内部使用**,不具有全球唯一性,但要求 "**==在局域网内唯一==**" 私网地址通常用于**组建局域网,例如家庭网络、企业内部网络、校园网络**等。 > [!NOTE] > > - 在局域网内部,**私网地址彼此间可进行通信**。 > - 若私网地址要访问**公网地址**,或**公网地址**要访问某个私网地址,则**必须通过路由器/网关==利用 NAT 网络地址转换功能==进行转发**。 > #### 私网地址范围 最初在 "**分类编址**" 的背景下,**私有地址也按照 ABC 三类进行了划分**(RFC 1918),地址范围如下: ![img|428](_attachment/02-开发笔记/07-计算机网络/总结/IP_MAC_地址.assets/IMG-IP_MAC_地址-3AFE7B8A9FC49BF2FF4F9C9F3F86084F.png) - 在 "**分类编址**" 方案中,各个私有地址的 "**==网络地址位数固定==**",遵循**其所属地址类的设置** - A 类为 8 位,B 类 16 位,C 类 24 位。 - 在现代采用的 **CIDR 方案**中,仍 **==沿用上述私有地址==**,但**网络前缀位数==不再固定==**,**可任意设置**。 - 例如可设置局域网 `192.168.0.0/16`,该局域网内允许容纳 65534 台主机。 <br><br><br> # IP 数据报 ## IPv4 数据报格式 ![[_attachment/02-开发笔记/07-计算机网络/网络层/IPv4 协议.assets/IMG-IPv4 协议-73CF0B2EB078DE6B3453CCD2AD55B794.png|524]] > [!caution] IPv4 头部要求 "4 字节对齐" ##### 字段说明 | | 位宽 | 说明 | | --------- | --- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | **版本** | 4 | 指示 IP 协议版本,如 IPv4 或 IPv6 | | **头部长度** | 4 | 指示 IP 头部的长度,单位为 **"4 字节 32 位"**。该字段值至少为 5,即**头部至少 20 字节**。 | | **服务区分** | 8 | 用于区分数据报的优先级 | | **总长度** | 16 | 指示**整个 IP 数据报**的总长度,单位为 "**字节**"。**最小值为 20 字节**(仅包含头部),最大值为 65535 字节 | | **标识** | 16 | 标识 IP 该数据报的唯一值。**用于分片识别和重组**——当一个数据报被分片时,所有分片的标识相同。 | | **标志** | 3 | **控制分片**的三个标志位,其中常用的有两个: <br>- **DF (Don't Fragment,1位)**: 为 1 表示**数据报不能被分片**。<br>- **MF(More Fragments,1 位)**:为 1 表示后面还有更多的片段;如果为 0,则表明这是最后一个分片。 | | **片偏移** | 13 | 用于**标识某个片段在原始数据报中的位置**。<br>分片时,每个片段都包含该字段,以确保接收端可以将数据报的所有片段按正确的顺序重组。 | | **生存时间** | 8 | 表示**数据报在网络中的最大跳数**。每经过一个路由器,该值会减1,当TTL减到0时,数据报会被丢弃。<br>TTL 用于防止数据报在网络中无限循环。 | | **协议** | 8 | 指示数据报携带的**上层协议类型**,例如: <br>- **6**:TCP(传输控制协议)<br>- **17**:UDP(用户数据报协议)<br>- **1**:ICMP(Internet Control Message Protocol,互联网控制报文协议) | | **头部校验和** | 16 | 用于**检验 IP 头部**数据的完整性。只验证 IP 头部,不包括数据部分。 | | **源地址** | 32 | 发送方的 IP 地址 | | **目的地址** | 32 | 接收方的 IP 地址 | | **可选字段** | 可变 | 可选,主要用于指定数据报的路由、时间戳、记录路径等 | | **填充** | 可变 | 当可选字段长度不是 4 字节整数倍时,进行填充,**确保 IP 头部长度始终为 4 字节整数倍**(对应 "**头部长度字段**") | - 与 "分片" 有关的三个字段:**标识、标志、片偏移** ##### 报文说明 - **IPv4 数据报==总长==**:**理论**最大值为 65535 字节,受 16 位的总长度限制。 - 实际传输时,会受 MTU 限制而进行**分片** - **IPv4 头部总长**:`[20, 60]` 字节 - **至少 20 字节**,即无 "**可选字段**" 的情况。 - **至多 60 字节**,受 4 位的 "**首部长度 IHL**" 字段限制——最多表示 **15 个 32 位**,即 60 字节。 - IPv4 数据报**有效载荷**: - 可以为 0,即数据报中只包含头部 - 理论最大值为 65515 字节,即数据报理论最大值减去 20 字节头部(不含其他选项),实际受 MTU 限制; <br><br><br> ## IPv6 数据报格式 IPv6 数据报由两大部分组成: - **==基本首部==**(base header) - **==有效载荷==**(payload) - 有效载荷中允许有**零个或多个==扩展首部**== (extension header),再后面是**数据部分** > [!info] IPv6 中的扩展首部属于 "有效载荷" 部分,不属于 "基本头部",基本头部固定为 40 字节。 > > ![[_attachment/02-开发笔记/07-计算机网络/网络层/IPv6 协议.assets/IMG-IPv6 协议-1890106E64BD0C6B6D614171DD769C70.png|478]] > ![[_attachment/02-开发笔记/07-计算机网络/网络层/IPv6 协议.assets/IMG-IPv6 协议-8E61683799C7922E998C1BA97CCA3EF6.png|680]] > [!caution] IPv6 头部要求 "8 字节对齐" ##### 字段说明 | | 位宽 | 说明 | | ------------------------- | --- | ------------------------------------------------------------------------------------------------------------ | | **版本** Version | 4 | 指示 IP 协议版本,对 IPv6 该字段值为 6 | | **通信量类** Traffic Class | 8 | 用以**区分不同 IPv6 数据报的类别或优先级**,类似于 IPv4 的 "服务类型" 字段。 | | **流标号** Flow label | 20 | 标识 IPv6 数据报所属的 "**流**",同一个流的数据报具有相同的流标号。 | | **有效载荷长度** Payload length | 16 | 指明 IPv6 数据报中**除 "基本首部" 以外的字节数(包括扩展头部)**,最大值为 65535,单位字节。 | | **下一个首部** Next header | 8 | 相对于 IPv4 的 **"选项" 字段** 或 **"协议"字段**: <br>- 数据报没有扩展首部时,指示**上层协议类型**,例如 TCP 或 UPD <br>- 具有扩展首部时,指示**扩展首部类型** | | **跳数限制** hop limit | 8 | 类似于 IPv4 的 TTL,用于标识数据报的**剩余跳数**,每经过一个路由器则减 1,为 0 时丢弃,防止在网络中无限循环。 | | **源地址** | 128 | 发送方的 IP 地址 | | **目的地址** | 128 | 接收方的 IP 地址 | ##### 报文说明 - **IPv6 数据报==总长==**:**理论**最大值为 65535 字节,受 16 位的总长度限制。 - **IPv6 "基本头部" 总长**:40 字节 <br><br> ## IPv4 与 IPv6 数据报对比 ![[_attachment/02-开发笔记/07-计算机网络/网络层/IP 协议.assets/IMG-IP 协议-95F46399AD502300D61ED1E8F8E4344B.png|939]] ![[_attachment/02-开发笔记/07-计算机网络/网络层/IP 协议.assets/IMG-IP 协议-3C46843D8285D25F4347F8D204934653.png|564]] <br><br> # Buffer ## 闪念 > sudden idea ## 候选资料 > Read it later # ♾️参考资料 # Footnotes