一、网络层功能
网络层功能 :
① 路由与转发 : 路由选择 与 分组转发 ; 根据路由选择算法 , 选择最佳路径 , 将分组转发出去 ;
② 异构网络互连 : 实现 WIFI 网络 , 4G/5G 基站网络 , 光纤宽带网络 , 双绞线局域网 等 网络互相通信 ;
③ 拥塞控制 : 所有节点 都 来不及接受分组 , 丢弃大量分组 , 此时网络处于拥塞状态 , 此时要采用一定措施缓解该拥塞状态 ; 流量控制 是 接收方 接受能力不足 , 让发送方慢点发 ; 拥塞控制 是全局性概念 ;
开环控制 : 静态 ; 网络传输之前 , 将所有可能产生拥塞的情况都进行控制 ;
闭环控制 : 动态 ; 网络运行过程中 , 根据发生的各种问题 , 动态处理 ;
参考博客 : 【计算机网络】网络层 : 网络层简介 ( 功能 | 拥塞控制 )
二、数据交换方式 ★
1 . 数据交换方式 :
① 电路交换
② 报文交换
③ 分组交换
数据报方式 : 为 网络层 提供 无连接服务 ;
虚电路方式 : 为 网络层 提供 连接服务 ;
2 . 电路交换、报文交换、分组交换 对比 :
① 存储转发 : 报文交换 和 分组交换 , 采用 存储转发 ;
② 电路交换使用场景 : 传输数据量巨大 , 传送时间远大于呼叫时间 , 此时使用电路交换 , 电路交换的传输时延最小 ;
③ 信道利用率 : 报文交换 和 分组交换 的信道利用率 高于 电路交换 ;
④ 时延 : 分组交换 > 报文交换 ;
3 . 分组交换、报文交换 计算示例 :
存储转发 , 是将整个报文 / 分组 存储完毕后 , 才能转发 , 数据分组越小 , 速率越快 ;
链路速率 : 所有的链路传输速率是 1000 10001000 比特 / 秒 ; 源主机 -> 交换设备 , 交换设备 -> 交换设备 , 交换设备 -> 目的主机 , 每个链路的速率都是 1000 比特 / 秒 ;
报文交换 : 报文长度 10000 1000010000 比特 ;
分组交换 : 每个分组 10 1010 比特 ;
忽略条件 : 忽略 其它 传播延迟 , 头部开销等问题 ;
求 从开始发送开始 , 到所有数据传播完毕截止 , 计算传播总时间 ;
报文交换 :
链路 1 11 : 从源主机 发送到 链路上 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10
1000
10000
=10 秒 ; 需要将整个报文完整的传输到 交换设备 1 11 上 , 花费 10 1010 秒 , 才能开始转发 ;
链路 2 22 : 从 交换设备 1 11 发送到 交换设备 2 22 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10
1000
10000
=10 秒 ; 需要将整个报文完整的传输到 交换设备 2 22 上 , 花费 10 1010 秒 , 才能开始转发 ;
链路 3 33 : 从交换设备 2 22 发送到 目的主机 需要 : 10000 1000 = 10 \cfrac{10000}{1000} = 10
1000
10000
=10 秒 ; 需要将整个报文完整的传输到 交换设备 3 33 上 , 花费 10 1010 秒 , 才能开始转发 ;
总共花费了 30 秒时间 ;
分组交换 :
每个分组 大小 10 1010 比特 , 一个分组发送时延 : 10 1000 = 0.01 \cfrac{10}{1000} = 0.01
1000
10
=0.01 秒 ;
这里只考虑最后一个分组 , 从源主机发送出来 , 到达目的主机的时延 , 即 从 第一个分组开始发送计时, 到最后一个分组传输完毕就是所有分组传输结束 ;
第一个分组开始发送 到 最后一个分组开始发送 的时间 : 10000 1000 = 10 \cfrac{10000}{1000} = 10
1000
10000
=10 秒 ;
最后一个分组 从 交换设备 1 11 到 交换设备 2 22 用了 0.01 0.010.01 秒 ;
最后一个分组 从 交换设备 2 22 到 目的主机 用了 0.01 0.010.01 秒 ;
分组交换使用的总时间是 10.02 10.0210.02 秒 ;
参考博客 :
【计算机网络】网络层 : 数据交换方式 ( 电路交换 | 报文交换 | 分组交换 )★
【计算机网络】网络层 : 分组交换方式 ( 数据报方式 | 虚电路方式 )
三、IP 数据报 ★
1 . IP 数据报 首部格式 :
版本 : 4 44 比特 , [ 0 , 3 ] [ 0 , 3 ][0,3] 位 , IPv4 / IPv6 , 目前使用的是 IPv4 版本 ;
首部长度 : 4 44 比特 , [ 4 , 7 ] [ 4 , 7 ][4,7] 位 , 单位是 4 44 字节 , 最小值是 5 55 , 那么最小的首都大小是 5 × 4 = 20 5 \times 4 = 205×4=20 字节 ;
区分服务 : 8 88 比特 . [ 8 , 15 ] [ 8 , 15 ][8,15] 位 , 期望获取的服务类型 , 一般情况下不使用 ;
总长度 : 16 1616 比特 , [ 16 , 31 ] [ 16, 31 ][16,31] 位 , 首部长度 + 数据部分 的总长度 ; 单位是 1 11 字节 ; 长度最大值是 2 1 6 − 1 = 65535 2^16 - 1 = 655352
1
6−1=65535 字节 ;
生存时间 : 8 88 比特 , [ 32 , 39 ] [32 , 39][32,39] 位 , IP 分组保质期 , 每经过一个路由器 , 生存时间 − 1 -1−1 , 如果生存时间变为 0 00 , 直接丢弃 ; 防止 无法交付的数据包 , 无限制的再网络上传输 ;
协议字段 : 8 88 比特 , [ 40 , 47 ] [40 , 47][40,47] 位 , 数据部分使用的协议 ; 下面是协议名称 与 字段值的对应关系 ;
ICMP : 1
IGMP : 2
TCP : 6
EGP : 8
IGP : 9
UDP : 17
IPv6 : 41
ESP : 50
OSPF : 89
首部检验和 : 检验首部的字段 ;
源地址 / 目的地址 : 长度都是 32 位 , IPv4 的地址长度是 32 位 ;
可选字段 : 范围是可变的 , 取值范围 0 00 到 40 4040 字节之间 , 用于排错 , 测量 , 安全措施等 ;
填充字段 : 都是 0 00 , 用于将首部补全成 4 44 字节的整数倍位数 ;
2 . IP 数据报 分片 : 要根据 首部的 标识 , 标志 , 片偏移 进行相应处理 :
标识 : 同一个 IP 数据报 的分片 , 使用相同的标识 ; IP 数据报大小超过 MTU 时 , 将数据报分片 , 分片完成的 IP 数据报分片 , 其标识都是相同的 ;
标志 : 由 3 33 位组成 , [ 48 , 50 ] [ 48 , 50 ][48,50] , 只有 2 22 位有意义 ;
最高位 : 是保留位 , 没有意义 ;
中间位 : DF 位 , Don’t Fragment ; DF = 1 时 , 禁止分片 ; DF = 0 时 , 允许分片 ;
最低位 : MF 位 , More Fragment ; MF = 1 时 , 后面还有分片 ; MF = 0 时 , 本分片就是该分组的最后一个分片 , 后面没有分片 ;
只有 DF = 0 时 , MF 才有意义 ;
片偏移 : 较长的分组的分片 , 中间的某个分片 , 在原来的 IP 分组中的相对位置 ; 单位是 8 88 字节 ; 也就是说除了最后一个分片 , 每个分片的长度是 8 88 字节的整数倍 ;
3 . 分片机制 示例 :
IP 数据报 : 首部 20 2020 字节 , 数据部分 3800 38003800 字节 ;
将其进行分片处理 : 每个分片不超过 1420 14201420 字节 ;
标识 : 666 666666 ;
标志 : DF = 0 , 表示允许分片 ; MF = 0 , 表示后续没有分片 ;
片偏移量 : 0 00
分片后的结果是 : 分成 三片 ;
第一片 :
分片数据 : 首部 1 11 ( 20 2020 字节 ) + 1400 14001400 字节数据部分 ;
标识 : 666 666666 , 同一个分组的分片 , 标识相同 ;
标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
片偏移量 : 片偏移量 是 0 , 单位是 8 88 字节 , 本片偏移量相当于 0 00 字节 ;
第二片 :
分片数据 : 首部 2 22 ( 20 2020 字节 ) + 1400 14001400 字节数据部分 ;
标识 : 666 666666 , 同一个分组的分片 , 标识相同 ;
标志 : DF = 0 , 允许分片 ; MF = 1 , 后续还有分片 ;
片偏移量 : 片偏移量 是 175 , 单位是 8 88 字节 , 本片偏移量相当于 1400 14001400 字节 ;
第三片 :
分片数据 : 首部 3 33 ( 20 2020 字节 ) + 1000 10001000 字节数据部分 ;
标识 : 666 666666 , 同一个分组的分片 , 标识相同 ;
标志 : DF = 0 , 允许分片 ; MF = 0 , 后续没有分片 ;
片偏移量 : 片偏移量 是 350 , 单位是 8 88 字节 , 本片偏移量相当于 2800 28002800 字节 ;
片偏移量是从数据部分开始计数 , 数据部分的开始位置是 0 00 字节 , 其单位是 8 88 字节 , 片偏移量 1 11 代表 8 88 字节 ;
4 . IP 数据报首部中的相关数据长度单位 : 速记 : 一种 ( 总长度 ) 八片 ( 片偏移 ) 的 首 ( 首部长度 ) 饰 ( 四 )
总长度单位 : 1 11 字节 ;
片偏移单位 : 8 88 字节 ;
首部长度单位 : 4 44 字节 ;
参考博客 :
【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )
【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )