【网络】7.网络层:IP 协议详解

【网络】7.网络层:IP 协议详解 目录一、IP 协议的作用与构成1. IP 的作用2. 唯一性标识3. IP 报头结构二、子网划分1. 网络的设计思想2. 信息发送过程3. 网段划分4. 子网划分方法5. 特殊 IP 地址三、IP 地址数量限制1. IPv62. 动态分配3. 私有 IP 和公网 IP4. NAT网络地址转换5. 运营商的作用6. 消息传输过程7. 路由细节四、IP 分片与重组1. MTU最大传输单元2. IP 报头中的分片相关字段3. 分片组装一、IP 协议的作用与构成1. IP 的作用IP 协议提供一种能力将数据从 A 主机跨网络传输到 B 主机。能力的理解有很大概率能送到但难免会失手不可靠如果网络需要 100% 送到对方需要 TCP 参与分工TCP提供策略丢包重传、流量控制等IP提供能力尽力而为地传输数据包能力 策略 可靠的数据传输2. 唯一性标识层级标识作用IP 层IP 地址标识主机主机到主机TCP/UDP 层端口号标识进程进程到进程IP 地址 目标网络号 目标主机号同一个网络内主机编号不同不同网络网络编号不同3. IP 报头结构IP 报头基本长度为 20 字节选项部分可变总长度范围 [20, 60] 字节。字段长度说明4 位版本号4 位IPv4 固定为 44 位首部长度4 位单位是 4 字节最大值 15因此报头最大 60 字节8 位服务类型8 位3 位废弃1 位置 04 位可选低延迟、高吞吐、高可靠等16 位总长度16 位整个 IP 数据报的长度报头 数据16 位标识16 位标识一组分片同一数据报的分片标识相同3 位标志位3 位1 位保留1 位禁止分片DF1 位更多分片MF13 位片偏移13 位分片在原始数据报中的位置单位 8 字节8 位生存时间8 位TTLTime To Live每经过一个路由器减 1到 0 丢弃8 位协议8 位上层协议类型6TCP17UDP16 位校验和16 位只校验 IP 报头确保报头正确性32 位源 IP 地址32 位发送方 IP32 位目标 IP 地址32 位接收方 IP选项可变可选字段用于扩展功能关键字段详解8 位生存时间TTL网络结构复杂可能存在环路每经过一个路由器TTL 减 1当 TTL 变为 0 时路由器丢弃该数据报防止数据报在网络中无限循环16 位校验和只校验 IP 报头不校验数据确保报头在传输过程中没有被损坏可能因磁场等原因导致比特位翻转二、子网划分1. 网络的设计思想网络是几十年发展的产物是经历几十年建设的并且是很早就被设计过的。理解报文路由核心是要理解网络是如何被设计的。2. 信息发送过程text主机 → 路由器 → 对方路由器 → 对方主机 内网转发 公网转发 内网转发为什么这样设计发送消息就是找到对方主机的过程寻找就是一个排除错误的过程。划分子网的好处将查找目标计算机 → 查找目标网络一次排除一群不是目标的主机大大提升查找效率3. 网段划分在子网中新增一台主机它的网络号必须和子网网络号一致它的主机号不能和子网中其他主机重复IP 分配电脑连接路由器后路由器通过DHCP 协议自动分配 IP 地址路由器有构建子网的功能路由器自己的主机号往往是 1如 192.168.1.14. 子网划分方法传统分类划分法将 IP 地址分为 A、B、C 等类网络类别网络号位数主机号位数特点A 类8 位24 位用于大型网络B 类16 位16 位用于中型网络C 类24 位8 位用于小型网络问题随着上网设备增多这种划分方式导致 IP 浪费A 类网有 24 位主机号但一个组织很难有这么多机器大量 IP 地址被浪费解决方案子网掩码子网掩码是一个 32 位的数字前面连续为 1表示网络号部分后面连续为 0表示主机号部分text子网掩码 IP 地址 网络号子网掩码为 1 的位才对网络号有效。优势不区分 A、B、C 类网络可以将用不到的主机号位转为网络号位提高 IP 地址利用率示例IP192.168.1.10子网掩码255.255.255.0网络号192.168.1.0主机号105. 特殊 IP 地址地址含义网络号 主机号全 0代表整个局域网如 192.168.1.0网络号 主机号全 1广播地址如 192.168.1.255127.x.x.x本地环回地址通常用 127.0.0.1三、IP 地址数量限制IPv4 地址总量约为 43 亿如果每个设备都有一个公网 IP显然不够用。1. IPv6用 128 位16 字节表示一个 IP 地址数量极其庞大理论上可以给地球上的每一粒沙子分配一个 IP2. 动态分配路由器只给当前联网的设备分配 IP设备下线后IP 可以被回收重用3. 私有 IP 和公网 IP私有 IP 范围10.0.0.0 ~ 10.255.255.255172.16.0.0 ~ 172.31.255.255192.168.0.0 ~ 192.168.255.255普通人接触到的就是内网、子网、局域网 IP。路由器本身有构建子网、给子网主机分配 IP 的能力。4. NAT网络地址转换路由器的接口WAN 口连接上层网络公网LAN 口连接子网设备有的路由器 WAN 口连接到公网 IP就是公网出入口路由器。数据发送过程内网主机192.168.1.3发送数据到公网地址由于源 IP 是内网地址在公网中不可路由每经过一个路由器路由器将自己的 WAN 口 IP 替换到源 IP 字段到达公网出入口路由器时源 IP 已经被替换为公网 IP公网中用设计好的规则找到目的地返回时路由器根据 NAT 表将目标 IP 替换回内网 IP这个过程就叫NATNetwork Address Translation。优点多个内网设备可以共享一个公网 IP内网 IP 可以重复不同局域网不影响通信5. 运营商的作用上层路由器由运营商管理如果费用欠费等运营商可以选择不向上转发报文这就是连不上网的原因之一6. 消息传输过程公网 IP 可以根据地区向对应机构申请获得IP 的前 8 位A 类网络表示一个地区。一个地区能拥有的 IP 数量决定了该地区网络的规模。示例5.1.10.2 发送到 6.2.15.2子网掩码 255.0.0.0从 5 开头转发到 6 开头6 地区收到掩码变为 16 位找到 6.2 开头6.2 地区服务器收到通过网络码确定没问题继续向下转发直到转发到目的地7. 路由细节路由器既对内又对外内部会存储上一层路由器的信息平级路由器的信息路由在复杂的网络结构中找出一条通往终点的路线。查路由表结果查到下一条转发给指定的下一跳路由器没查到走 default 缺省路由从 eth0 扔出去交给其他路由器缺省路由就是进行内网转发的地方。四、IP 分片与重组1. MTU最大传输单元数据链路层最大传送单元MTU固定为 1500 字节如果 IP 数据报超过 MTU就要在 IP 层进行分片分片与上下层无关问题由于 IP 层与上下层解耦丢一片就等于整个数据报全丢分片会增加丢包概率最佳实践尽量做到不分片传输层TCP/UDP交给 IP 层的数据要控制大小让一个报文刚好小于 MTU考虑 IP 报头2. IP 报头中的分片相关字段16 位标识表示一组分片同一数据报的所有分片标识相同3 位标志位第 1 位保留第 2 位DFDont Fragment- 禁止分片如果报文超过 MTU 就直接丢弃第 3 位MFMore Fragments- 更多分片最后一片为 0其它为 113 位片偏移表示当前分片在原始数据报中的位置单位是 8 字节因为 13 位不够表示所有字节偏移3. 分片组装判断分片标志位 MF 1是分片的一部分不是最后一片标志位 MF 0 且片偏移 ≠ 0是分片的最后一片标志位 MF 0 且片偏移 0不是分片完整数据报组装过程将相同 16 位标识的分片收集到一起按片偏移升序排序检查完整性如果一片的偏移 大小 ≠ 下一片的偏移说明有分片丢失组装完成后交给上层协议处理