提供服务
- 分片与重组
- 路由服务
- 服务分类
- 确保交付
- 确保时延上限的确保交付
- 有序分组交付
- 确保最小带宽
- 安全性
- 尽力而为服务(无服务,数据报服务)
- 确保交付
- 审计服务
IPv4
服务
- 原语:执行的功能
- 发送原语:请求数据单元的传输
- 交付原语:通知有数据到达
- 参数:传递数据和控制信息
- 源地址,目的地址
- 协议
- 服务类型指示,标识,不分片标识符,生存时间,数据长度,数据
IPv4 数据报格式
首部通常长 20 字节
版本 | 互联网首部长度 IHL | DS | ECN | 总长度 | 标识 | 标志 | Fragment Offset | Time to Live | 协议 | 首部检验和 | 源地址 | 目的地址 | 选择+填充 | 数据 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 bits | 4 bits | 6 | 2 | 16 | 16 | 3 | 13 | 8 | 8 | 16 | 32 | 32 | $<65535*8$ | |
4 | 以32比特为单位首部长度,最小值为5 | 区分服务功能 | 阻塞通知字段 | 数据报片在源数据报中的位置 | TTL | TCP=6,UDP=17 | 因特网检验和 |
IPv4 分片
- 片(fragment):分片成的较小的数据报封装成的帧
- 重装工作在端系统中完成
- 属于同一数据报的片具有相同标识
- 最后一片标志比特为0,其余为1
- 以 64 bit 为单位
IPv4 地址
一个 IP 地址与一个接口相关联
子网:分开主机和路由器第每个接口产生的网络岛
子网掩码:子网的地址 x.x.x.x/x
分类编址
分类 | 格式 | 默认子网掩码 | 子网掩码举例 | |
---|---|---|---|---|
保留 | 主机部分全零或全一 | 前缀(网络)(主机) | 255.0.0.0 | 255.192.0.0 |
A类 | 0(7)(24) | $126$ 网络地址 | 255.255.0.0 | 255.255.248.0 |
B类 | 10(14)(16) | $2^{14}=16384$ 网络地址 | 255.255.255.0 | 255.255.255.252 |
C类 | 110(21)(8) | $2^{21}=2097152$ 网络地址 | ||
D类 | 1110(28) | 多播 | ||
E类 | 1111(28) | 留用 | ||
Private Address | 10./172.16~172.31/192.168.0~192.168.255 | 1个A类地址,16个B类地址,256个C类地址 |
无类别域间路由选择 (Classless InterDomain Routing, CIDR) a.b.c.d/x 网络前缀 x
DHCP
动态主机配置协议
- 端口 67
- 动态为主机分配IP地址,即插即用协议
- 客户机/服务器模式
DHCP 报文 | 对应步骤 | |
---|---|---|
DHCPDISCOVER | 服务器发现 | 客户机用广播找出有效服务器 |
DHCPOFFER | 服务器提供 | 服务器响应 DHCPDISCOVER,提供配置参数,广播 |
DHCPREQUEST | 请求 | 客户机选择服务器 |
DHCPACK | ACK | 服务器到客户机的报文,携带配置参数和网络地址 |
DHCPRELEASE | 客户机表示放弃对网络地址的租用 |
NAT
Network Address Translation, 网络地址转换
- NAT 使能路由器
- 内部:提供专用网络的路由
- 外部:相当于单一设备
- NAT 转换表
- WAN端:ip, port (端口用于主机寻址)
- LAN端:ip, port
- NAT不允许公网主机主动访问内网主机
- NAT 穿越工具
- UPnP 协议(Universal Plug and Play, 通用即插即用)
IPv6
IPv6 数据报
IPv6 首部 | 逐帧选项首部(可选) | 路由选择首部(可选) | 分片首部(可选) | 目的地选择首部(可选) | TCP首部(可选) | 应用数据 |
---|---|---|---|---|---|---|
40 bytes | variable | variable | 8 | variable | 20 | |
逐跳处理 | 路由选择 | 分片和重装信息 |
IPv6 首部
版本 | DS/ECN | 流标号 | 有效载荷长度 | 下一首部 | 跳数限制 | 源地址 | 目的地址 |
---|---|---|---|---|---|---|---|
4 bits | 6+2 | 20 | 16 | 8 | 8 | 128 | 128 |
6 | 为分组做标记 | 扩展首部+数据单元长度 | IPv6首部后类型 |
- 扩大的地址容量
- 简化的40字节首部
- 不允许分片与重装
- 无首部检验和
- 流
- 源点角度:某一应用实例生成并具有相同传送服务需求的分组序列
- 路由器角度:相同属性分组序列
- 任播:一组接口的标识符,交付到最近的一个接口上
- 兼容 IPv4
- 隧道:将整个 IPv6 数据报放入 IPv4 数据报的数据段中
IPv6 地址
地址为结点上的接口设置;地址格式 ipv6地址/前缀长度
类型 | IPv6表示法 |
---|---|
嵌入式IPv4 | ::FFFF:x.x.x.x/96 |
回路 | ::1/128 |
链路本地单播 | FE80::/10 |
多播: | FF00::/8 |
全局单播 | 其它所有 |
路由选择
- 性能评估标准:代价(时延,吞吐量,跳数),公平性
- 固定式路由选择: 为每一对源节点何目的结点选择永久路由;每个结点只需知道路由上第一个结点标识
- 洪泛:每个结点收到分组后传到除分组到达所经过的链路外其它链路;设置跳数计数器或重复则抛弃
- 优点:高度稳健
- 缺点:通信负荷高,安全风险
- 随机路由选择:为每个输出链路分配一个概率,例如基于数据率 $P_i=\frac{R_i}{\sum_jR_j}$
- 自适应路由选择
- 判决条件:故障或拥塞
- 集中式路由选择:链路状态算法
- 分散式路由选择:距离向量算法
路由选择算法
APPANET 第一代(距离向量 DV, Bellman-Ford)
- 每个结点维护两个向量:$D_i,S_i$
- $D_i$: 结点$i$的时延向量,$D_{ij}$ 为从$i$到$j$的最小时延的当前估算值
- $S_i$: 结点$i$的后继结点向量,$S_{ij}$ 为$i$到$j$最小时延路由的下一个结点
- 周期性与相邻结点交换时延向量
- $A$: 相邻结点集合
- $l_{ki}$: 从$k$到$i$的当前估计时延
- $D_{kj}=\min_{i\in A}(D_{ij}+l_{ki})$
- $S_{kj}=\arg\min_{i\in A}(D_{ij}+l_{ki})$
- 缺点
- 没有考虑容量
- 导致振荡状态
- 路由选择环路问题
- 毒性逆转:如果 $z$ 通过 $y$ 到达目的地 $x$,则 $z$ 通告 $y$ 到 $x$ 距离无穷大
- 无穷计数问题
- 毒性逆转只能解决两个点环路问题
- 报文复杂性较低
- 收敛速度较慢
- 健壮性较差
APPANET 第二代(链路状态 LS, Dijkstra)
- 分组中包含时延信息,所有结点维护了网络中各条网络中各链路上的估算时延
- 每10s交换一次,新信息到达则用 Dijstra 计算路由选择表
- 缺点
- 链路上测量的分组时延与链路实际遇到的时延不符
- 导致振荡状态:非所有路由器同时运行 LS 算法
- 报文复杂性较高 $O(|N||E|)$
- 收敛速度 $O(|N|^2)$
- 健壮性较高
APPANET 第三代
- 改变代价函数
- 单排队服务模式:利用率 $\rho=\frac{2(T_s-T)}{T_s-2T}$
- 服务时间 $T_x$ 为平均分组长度处理链路比特率
- 平均利用率 $U(n+1)=0.5*\rho(n+1)+0.5*U(n)$
- 链路代价为平均利用率的函数
路由选择协议
OSPF
开放最短路径优先协议,RFC 2328,自治系统内部路由选择协议
- 基于 IP
- 使用 Dijkstra 算法
- 每个路由器维护一个数据库,反映该路由器掌握的所属自治系统的拓扑结构
- 顶点:路由器或网络
- 边:路由器与路由器点对点连或路由器与网络顶点连
BGP
边界网关协议,自治系统间路由选择协议
- 179 端口, TCP
- 网关路由器
- 内部路由器
- 外部 BGP(eBGP):连接不同 AS 中的网关路由器
- 内部 BGP(iBGP):每个 AS 间的路由器
报文类型 | |
---|---|
Open | 实现邻站获取 |
Update | 传输路由信息 |
Keepalive | 确认 Open 及周期性保持邻站可达性 |
Notification | 检测到错误时发送 |
标记 | Length | Type | 参数 |
---|---|---|---|
16bytes | 2 | 1 | |
鉴别 | 报文长度 | 报文类型 | 四种类型不同 |
- Update
- AS-PATH: 路由已经通过的自治系统
- Next-Hop: 起始的路由器接口的 IP 地址
- NLRI: 某自治系统中所有网络列表(由OSPF得到)
- 增加 AS 外部目的地的步骤
- 从 AS 间协议学到多个网关可到达子网 x
- 从 AS 内部协议学到到达各个网关的开销
- 热土豆路由选择:尽可能快的送出 AS
- 本地偏好 -> 最短 AS-PATH -> 热土豆路由选择 -> BGP 表示符
- 确定通往该网关的接口 I,增加表现 (x,I)
- IP 任播(Anycasting)
- 访问某任播地址的报文可以被 IP 网络路由到这一组目标中的任何一台主机上
- 根据 BGP 路径选择得到最近的服务
- 用于 DNS 服务, CDN 服务
ICMP
网际控制报文协议
类型 | 编码 | 检验和 | 参数 | 数据 |
---|---|---|---|---|
8 bits | 8 | 16 | 32 |
类型 | 功能 |
---|---|
终点不可达;超时;源站抑制 | 路由器不知道如何到达;生存时间超时或重装超时;流量控制 |
参数问题,Echo | 语法或语义错误 |
重定向 | 建议一条更好的路由 |
回送和回送回答 | 测试两个实体能否通信 |
时间戳和时间戳回答 | 对互联网时延特性采样 |
地址掩码请求和地址掩码回答 | 使主机知道所连接的局域网地址掩码 |
SNMPv2
简单网络管理协议,Simple Network Manage Protocol, RFC 3416
- 网络管理框架
- 管理服务器:运行在网络运营中心(NOC)的应用程序,人类管理员与网络设备打交道
- 被管设备
- 管理信息库(MIB)
- 网络管理代理:被管设备中的进程
- 网络管理协议
- SNMP:请求-响应
多播
- 应用:多媒体,电话会议,数据库,分布式计算,实时工作组
- 多播产生的通信量小于广播和多次单播:构建生成树
IGMP 网际组管理协议
IGMPv3, IPv6 中整合进 ICMPv6
- 成员关系查询
类型 | 最长响应时间 | 检验和 | 组地址 | Res | S | QRV | QQIC | 源数量 | 源地址 |
---|---|---|---|---|---|---|---|---|---|
8bits | 8 | 16 | 32 | 4 | 1 | 3 | 8 | 16 | |
一般查询/指明组查询/指明组合源查询 | 单位:0.1s | 0/有效多播地址 | 1:抑制因收到查询而执行正常计时器更新 | 非零则包含查询者所用的健壮性变量值 | 查询者的查询者间隙 |
- 成员关系报告
类型 | Res | 检验和 | Res | 组记录数量 | 组记录 |
---|---|---|---|---|---|
8bits | 8 | 16 | 16 | 16 | 包含记录类型,辅助数据长度,源数量,多播地址,源地址和辅助数据 |
PIM
协议独立多播,路由选择协议
- 稀疏模式 PIM (RFC 2362)
- 多播组其中一台路由器为集合点 RP
- 组目的路由器向集合点发送 Join 报文。路由器用单播向该集合点发送,逆路径成为分布树一部分
- 允许目的路由器用通往源路由器的最短路径树替换共享树(发送Prune)
- 密集模式 PIM:适用于自治系统内部的多播路由选择,对 MOSPF 的备用协议
- 归属网络:一个移动结点被分配给的特定的网络
- 归属代理
- 归属地址
- 外地网络
- 外地代理
- 转交地址
- 归属网络:一个移动结点被分配给的特定的网络
移动IP
RFC 3344
让移动设备用户,能够从一个网上系统中,移动到另一个网上系统,但是设备的IP地址保持不变
发现
移动结点使用一种发现过程来识别预期的归属代理和外地代理
- 利用 ICMP 路由器通告报文
- 移动结点判断自己是在归属网络还是外地网络
- 代理通告报文:充当代理的路由器或其他网络设备定期发布带有通告扩展的路由器通告 ICMP 报文
登记
- 移动结点通过向它希望使用的外地代理发送一个等级请求报文来请求转发服务
- 外地代理将这个请求转交给移动结点的归属代理
- 归属代理接受或者拒绝这个请求,向外地代理发送一个登记回答
- 外地代理将这个回答转交给移动结点
隧道
- 为了捕获正在归属网络中传播目的为该结点的分组,归属代理需要盗用移动结点身份
- 封装:归属代理将整个IP数据报放入一个外部IP数据报中
- IP在IP中的封装(RFC 2003):增加一个完整的新IP首部
- 最小封装 (RFC 2004):生成新的外部IP首部时,原始IP首部进行修改
- 普通选路封装 (RFC 1701)