网络层
网络层核心功能:转发与路由
转发:将分组从路由器的输入端口转移到合适的输出端口
转发表确定在本路由器如何转发分组
路由:确定分组从源到目的经过的路径。
- 路由算法:确定通过网络的端到端路径。
某些网络的重要功能:连接建立
数据分组传输前需要建立连接,和运输层不一样的是所有网络设备路由器都会参与建立连接。
网络层是两个主机建立连接
运输层是两个应用进程建立连接
无连接服务
- 不事先为分组确定传输路径
- 每个分组独立路径
- 不同分组可能传输路径不同
- 数据报网络
连接服务:
- 首先为分组确定传输路径
- 沿这个路径传输
- 系列分组传输路径相同
- 传输结束后拆除
- 虚电路网络
数据报网络
和虚电路网络
是典型两类分组交换网络。
类似UDP和TCP。但是网络层是主机到主机
.网络核心实现
.
虚电路
一条从源主机到目的主机,类似于电路的路径。
- 分组交换
- 每个分组的传输利用链路的全部带宽
- 源主机到目的主机的所有网络设备完成虚电路连接和功能
通信过程:
- 呼叫建立(call setup) -》 数据传输 -》 拆除呼叫
- 每个分组携带虚电路标识(VC ID),而不是目的主机地址
- 虚电路经过的每个网络设备,维护每条经过他的虚电路连接状态
- 链路,网络设备资源可以面向VC进行预分配
- 预分配资源 = 可预期服务性能
- 如ATM的电路仿真(CBR)
每条虚电路包括:
- 从源主机到目的主机的一条路径
- 虚电路号(VCID),沿路每段链路一个编号
- 沿路每个网络层设备,利用转发表记录经过的每条虚电路
分组携带虚电路号VCID,而不是目的地址。
同一条VC,在每段链路上的VCID通常不同。
- 路由器转发分组时依据转发表改写/替换虚电路号
虚电路信令协议
用于VC的建立,维护与拆除
- 路径选择
应用于虚电路网络
- 如ATM
目前的internet不采用
数据报网络
- 无连接
- 每个分组携带目的地址
- 路由器根据分组的目的地址转发分组
- 基于路由协议/算法构建转发表
- 检索转发表
- 每个分组独立选路
- Internet网络是数据报网络
- 路由算法
- 根据地址范围进行转发
- 最长前缀匹配优先
对比
Internet(数据报网络)
- 计算机之间的数据交换
- 弹性服务,没有严格要求
- 链路类型众多
- 特点性能各异
- 同一服务困难
ATM(虚电路网络)
- 电话网络演变而来
- 核心业务是实时对话
- 严格的时间,可靠性需求
- 需要有保障的服务
- 非智能端系统
- 电话机
- 传真机
IP协议
路由协议
- 路径选择
- RIP OSPF BGP
IP协议
- 寻址规约
- 数据报格式
- 分组处理规约
ICMP协议
- 差错报告
- 路由器“信令”
IP数据报
- 首部
- 版本号 4比特 ipv4就是4
- 首部长度 4比特 首部的长度,以4字节为单位 默认是5 表示20字节
- 服务类型 8比特 期望获得哪种类型的服务 只有在网络提供区分服务时使用 通常是0
- 总长度 16比特 IP数据报的长度(首部 + 数据),以字节为单位, 最大IP分组总长度 65535B 最小分组首部 20B IP分组数据最大可以是 65515B
- 标识 16比特 ID,计数器+1
- 标志位 3比特 保留1比特 DF = 1禁止分片 0 允许分片 MF = 1非最后一片 0 最后一片或未分片
- 片偏移 13比特 IP分组分片封装原IP分组数据的相对偏移量 以8字节为单位
- 生存时间 8比特 IP分组在网络中可以通过的路由器数(跳步数)
- 协议 8比特 指示IP分组封装的是哪个协议的数据包 6是TCP或者17是UDP
- 首部校验和 16比特 IP分组首部的差错检测 逐步计算
- 源IP地址 32比特
- 目的IP地址 32比特
- 选项字段 变长 范围 1 - 40B 携带安全,源选路径,时间戳和路由记录等内容 实际很少被使用
- 填充字段 变长 范围 0 - 3B 补齐整个首部,保证32位对齐
- 数据
IP分片
链路最大数据单元MTU。如果现在的IP分组大于下个链路的MTU就可以进行分片。
- 如果进行分片就分片,然后重组
- 如果不可以分片则丢弃分组
分片过程:
假设IP分组长L,带转发MTU为M
若L > M且DF = 0,则可以分片
分片时每个分片的标识复制原IP分组的标识
通常分片时,除最后一个分片,都为MTU允许的最大分片
一个最大分片可封装的应该是 8 的倍数。
d = M - 20 / 8 * 8
n = L - 20 / d
分片偏移量
Fi = d / 8 * (i - 1)
每片总长度
d + 20
最后一个
L - (n - 1)d
IP编址
32比特(IPv4) 11011111 00000001 00000001 00000001 = 233.1.1.1
IP地址与每个接口关联
- 网络号:高位比特
- 主机号:低位比特
IP子网
IP子网:
- IP地址具有相同的网络号
- 不跨越路由器可以彼此物理联通
- 233.1.1.0/24
有类编址
A类地址:
- 网络号 8比特 主机号 24比特 50% 0.0.0.0 - 127.255.255.255
B类地址: - 网络号 16比特 主机号 16比特 25% 128.0.0.0 - 191.255.255.255
C类地址: - 网络号 24比特 主机号 8比特 12.5% 192。0.0.0 - 223.255.255.255
D类地址: - 6.25% 224.0.0.0 - 239.255.255.255
E类地址: - 6.25% 240.0.0.0 - 255.255.255.255
私有IP地址:
- A类:网络号10开头的 10...*
- B类:172.16 - 172.31 16个
- C类:192.168.0 - 192.168.255
IP地址:
- 网络号:高位比特
- 子网号:原主机号的部分
- 主机号:地位比特
子网掩码:网络号和子网号取255,主机号取0
- A类网络子网掩码 255.255.255.0
子网地址 + 子网掩码 = 准确确定子网大小
例子:
子网 201.2.3.0 子网掩码 255.255.255.0,划分为4个等长的子网。
- 201.2.3.0 = 201.2.3.00000000 255.255.255.11000000 = 255.255.255.192
- 201.2.3.64 = 201.2.3.01000000 255.255.255.11000000 = 255.255.255.192
- 201.2.3.128 = 201.2.3.10000000 255.255.255.11000000 = 255.255.255.192
- 201.2.3.192 = 201.2.3.11000000 255.255.255.11000000 = 255.255.255.192
将IP分组的目的IP地址与子网掩码按位与
运算,提取子网地址。
目的IP:172.32.1.112 = 10101100.00100000.00000001.01110000
子网掩码:255.255.254.0 = 11111111.11111111.11111110.00000000
子网地址:10101100.00100000.00000000.00000000 = 172.32.0.0
地址范围:172.32.0.0 - 172.32.1.255
可分配地址范围:172.32.0.1 - 172.32.1.254
广播地址:172.32.1.255
CIDR与路由聚合
无类域间路由CIDR
- 消除传统的A类,B类,C类地址划分
- 网络号 + 子网号 = 网络前缀 可以任意长度
- 融合子网地址和子网掩码,方便子网划分
- 无类地址格式:a.b.c.d/x 其中x为网络前缀长度
- 提高IPv4地址空间分配效率
- 提高路由效率
- 将多个子网构成一个大的子网
- 构造超网
- 路由聚合
例如:
前23位是网络前缀,后9位是主机号
11001000 00010111 00010000 00000000
200.23.16.0/23
11001000.00010111.00010010.00000000
200.23.18.0/23
11001000.00010111.00010100.00000000
200.23.20.0/23
聚合成超网:
11001000 00010111 00010000 00000000
200.23.16.0/20
如果有一个子网不在也没事,路由记录两条信息。根据最长前缀匹配优先
。不会出错。
DHCP
动态分配路由协议:
客户:DHCP discover
- src:0.0.0.0:68
- dest:255.255.255.255:67 广播
- yiaddr:0.0.0.0
- transactionID:654
DHCP服务器:DHCP offer
- src:223.1.2.5:67 DHCP服务器的IP
- dest:255.255.255.255:68 广播
- yiaddr:223.1.2.4 分配的IP
- transactionID:654
- lifetime:3600 secs
客户:DHCP req
- src:0.0.0.0:68
- dest:255.255.255.255:67 广播
- yiaddr:223.1.2.4 分配的IP
- transactionID:655
- lifetime:3600 secs
DHCP服务器:DHCP ACK
- src:223.1.2.5:67 DHCP服务器的IP
- dest:255.255.255.255:68 广播
- yiaddr:223.1.2.4 分配的IP
- transactionID:655
- lifetime:3600 secs
网络地址转换NAT
子网使用一个公共IP。发送网络数据的时候路由器替换源IP地址。
动机:
- 只需从ISP申请一个IP地址
- IPv4地址耗尽
- 本地网络地址是私有的,局部的,IP地址变更根外界没有影响
- 变更ISP时候,无需修改内部网络IP
- 内部网络设备对外界网络不可见,更加安全
实现:
- 替换
- 利用(NAT IP地址,新端口号)替换每一个
外出IP数据报
的(源IP地址,源端口号)
- 利用(NAT IP地址,新端口号)替换每一个
- 记录
- 将每对(NAT IP地址,新端口号)和(源IP地址,源端口号)记录在
NAT转换表
中
- 将每对(NAT IP地址,新端口号)和(源IP地址,源端口号)记录在
- 替换
- 根据
NAT转换表
,利用(源IP地址,源端口号)替换(NAT IP地址,新端口号)
- 根据