网络层通过路由选择算法,为 IP 分组从源主机到目的主机选择一条合适的传输路径,为传输层端-端数据传输提供服务。
IP 协议
- IP 协议是一种无连接,不可靠的分组传送服务协议
- IP 协议针对源主机-路由器,路由器-路由器,路由器-目的主机,之间的数据传输的点-点网络层通信协议
IP 协议提供一种尽力而为的服务
IP 协议屏蔽了互联的网络在数据链路层,物理层协议与实现技术上的差异。
分组格式
- 版本字段:4 表示 IPV4,6 表示 IPV6
- 协议字段:长度为 8 位,1-ICMP,2-IGMP,6-TCP,8-EGP,17-UDP,41-IPv6,89-OSPF
- 分组头长度字段:长度 4 位,定义了以 4 字节为一个单位的分组头长度,分组头中处了 IP 选项字段和填充字段之外,其他各项为定长。分组头长度字段最小为 5 最大为 15
- 总长度字段:16 位,定义以字节为单位的分组总长度,能表示的 IP 分组最大长度为 65535=2^16-1 字节,包括分组头长度
- 服务类型字段:8 位,用于指示路由器如何分组
- 生存时间 TTL:用来设定分组在 Internet 中的寿命通常是用转发分组最多的路由器跳数来度量,TTL 初始值由源主机设置,每经过一个路由器转发,TTL-1,当 TTL 为 0 时,丢弃分组并发送 ICMP 报文通知源主机
- 头部校验和字段:16 位,保证分组头部的完整性
- 地址字段:包括源地址与目的 IP 地址,长度都是 32 位
头部校验和计算方法
只对头部进行校验,不包括分组数据。每两个字节 16 位当作一个数,相加得到和,取末 2 个字节,再取反码得到头部校验和。
IP 分组的分片与组装
以太网能承载最大不超过 1500 字节的数据,这个数值称为最大传输单元 MTU,链路层协议的 MTU 严格限制着 IP 数据报的长度。
问题是发送方与目的的路径上每段链路可能使用不同的链路层协议,也就是有不同的 MTU。
- 分组:从某条链路接收到一个 IP 数据报,通过检查转发表确定出链路,且该链路的 MTU 比该 IP 报的长度小,则将这个过大的 IP 数据报分组,分成两个或更多个较小的 IP 数据报。这些较小的数据报称为片
- 组装:IP 报文的组装工作在端系统中,而不是路由器中
IP 报文中有与分组相关的字段:
- 标识
- 标志
- 片偏移:以字节为单位,即计算时 bit*8
IP 地址
- 连接到 Internet 的每一个主机,计算机或路由器至少有 1 个 IP 地址
- IP 地址是分配给网络接口的
- 一个接口可以分配多个 IP 地址
- 网桥,Ethernet 交换机,集线器,属于数据链路层设备,使用 MAC 地址,不分配 IP 地址
标准分类
- A 类地址:1.0.0.0-127.255.255.255 0+网络号 7+主机号 24
- B 类地址:128.0.0.0-191.255.255.255 10+网络号 14+主机号 16
- C 类地址:192.0.0.0-223.255.255.255 110+网络号 21+主机号 8
- D 类地址:224.0.0.0-239.255.255.255 多播地址 1110+28 位
- E 类地址:240.0.0.0-247.255.255.255 保留用于实验与将来使用 11110+27 位
特殊 IP 地址
- 直接广播地址:A 类,B 类,C 类 IP 地址中主机号全 1 的 IP 地址,如 191.1.255.255,路由器将这个分组以广播方式大送给特定网络 191.1.0.0 的所有主机
- 受限广播地址:网络号主机号全为 1,255.255.255.255
- 本网络的特定主机地址:网络号全 0,如 0.0.0.25
- 回送地址:127.0.0.0
保留的专用地址
- A 类:10.
- B 类:172.16-172.31
- C 类:192.168.0-192.168.255
子网
借用主机号的一部分作为子网的子网号,划分出更多的子网IP地址,对外部路由器寻址没有影响,两级IP地址变为三级的IP地址
子网掩码
IP地址 AND 子网掩码 = 网络地址
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻的路由器交换路由信息时,必须把自己所在的网络的子网掩码告诉相邻路由器
- 路由器的路由表的每一个项目除了给出目的网络地址外,还必须给出该网络的子网掩码
可变长度子网掩码VLSM
在一个划分子网的网络中可同时使用几个不同的子网掩码,使用边长子网掩码,可进一步提高IP地址的资源利用率
无类别域间路由CIDR
在VLSM上进一步研究出的无分类变址方法
- 消除了传统的ABC类地址以及划分子网的概念
- 使用各种长度的网络前缀代替分类地址中的网络号和子网号
- IP地址从三级地址又回到两级编址
128.14.32.0/20,标识的地址块共有2^12个地址,其中的20为网络前缀的个数,因此主机号为32-20=12位,共有2^12个地址,128.14.32.0为起始地址,最小地址128.14.32.0,最大地址128.14.47.255,全0与全1的主机号地址一般不使用。
路由协议
路由选择算法:
- 算法必须正确稳定公平
- 算法尽量简单
- 算法必须能够适应网络拓扑与通信量的变化
- 算法应该是最佳的,尽可能接近理想
主要参数:
- 跳数:一个分组从源主机到目的主机转发分组的路由器数量
- 带宽:链路传输速率
- 延时:从源主机到目的主机花费的时间
- 负载:通过路由器或线路的单位时间通信量
- 可靠性:丢失率
- 开销:耗费,链路长度,数据速率,链路容量,安全,传播延时与费用等因素
静态路由表
人工建立,开销小,不能及时适应网络变化
动态路由表
通常采用动态路由表,系统自动运行动态路由选择协议建立路由表。当互联网结构变化时,动态路由选择协议会自动更新路由表
路由转发分组基本流程
- 从收到的分组首部提取目的IP地址D
- 用个网络的子网掩码与D逐位与运算,查看是否和相应的网络地址匹配,若匹配则直接交付。否则间接交付执行3
- 若路由表中有目的地址为D的特定主机路由,则将分组传给指明的吓一跳路由器,否则执行4
- 若路由表中每一行的子网掩码与D逐位与,若结果与该行的网络地址匹配则将分组转发给该行指明的下一跳路由器,否则执行5
- 若路由表中有一个默认路由则将分组传送给路由表所指明的默认路由器,否则执行6
- 报告转发分组出错
RIP路由信息协议
- 仅和相邻路由器交换信息
- 交换信息是当前本路由器知道的全部信息,即自己的路由表
- 固定时间间隔交换路由更新信息
- 允许最多跳数15,为16时相当于不可达,RIP只适用于小型互联网
- 不能在两个网络之间使用多条路由,RIP选择一个最短路由
当一个路由器收到相邻路由器X的RIP报文
- 修改RIP报文内容,下一跳地址改为X,距离字段+1
- 若RIP内容项目中的目的网络不在路由表中则加入到路由表,否则若下一跳字段给出的路由地址同一则将收到的项目替换原路由表中的项目,否则若收到项目中的距离小于路由表中的距离,则进行更新,否则什么也不做
- 若3分钟还未收到相邻路由器的更新路由表,则把次路由器记为不可达路由,距离设置为16
RIP的四个计时器
- 周期更新计时器:30s交换一次路由更新信息
- 延时定时器:防止广播风暴,路由更新设置随机延迟1-5秒
- 超时定时器:180秒威慑偶倒刷新信息记为无效路由
- 清除定时器:已经被标记为无效的路由,120秒未收到更新,则删除该记录
距离向量算法DV
Dx(y)=minv{c(x,v),dv(y)}
dx(y):x到y的最小代价的路径值
c(x,v):端点为x,v的边的代价
RIP2数据报特点
- 采用UDP协议,端口号520
- 目的地址为组播地址
- 包含下一跳的地址和子网掩码
OSPF开放最短路径优先协议
- 使用链路状态协议
- 区域内一个路由器状态更新,传播到区域内所有路由器
- 区域内所有路由器都能形成一个跟踪网络链路变化的链路状态数据库,全网拓扑结构图并都能以自己为根建立最短路径优先树
- OSPF使用IP数据报传送而不是UDP
链路状态算法
Dijkstra最短路径优先算法
- 网络中每个路由器都知道全网的拓扑结果和每条边的权值
- 每个路由器计算自己和网络中其他节点的最短路径
- 通过相互交换信息,路由器更新自己的路由表,多次迭代之后每个路由器得到其他所有节点的最佳路由信息
BGP外部网关协议
力求寻找一条能够到达目的地且比较好的路由,而非最佳路由
ICMP控制报文协议
ICMP本身是网络层的一个协议,但是它的报文封装称IP分组再传输给数据链路层
报文类型
- 差错报告报文
- 查询报文
差错报文类型值
- 3 目的节点不可达
- 4 源节点抑制
- 5 超时
- 11 参数问题
- 12 重定向
询问报文类型值
- 8/0 回显请求与应答
- 13/14 时间戳请求与应答
- 15/16 信息请求与应答
- 17/18 地址掩码请求与应答
ARP 地址解析协议
A要给B发送IP数据报,但是A中的ARP缓存中没有B的MAC地址,因此A要广播ARP分组,分组中包含B的IP地址,LAN中所有机器都能接收到广播的ARP分组,B收到ARP分组,发送给A自己的MAC地址
IPv6
- 新的协议格式
- 巨大地址空间128位
- 有效的分级寻址和路由结构
- 有状态和无状态的地址自动配置
- 内置安全机制
- 更好支持QoS服务
扩展首部
IPV6将原来的IPv4首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站主机来处理。数据报在途中经过的路由不处理这些扩展首部。大大提高了路由器处理效率
NAT
- 缓解IP地址池短缺
- 网络安全,隐藏内部网络地址
工作过程
- 内部主机X用本地地址IPx和因特网上的主机Y通信发送的数据报必须经过NAT路由器
- NAT路由器将数据报的源地址IPx转化为全球地址IPG,目的地址IPy不变,发送到因特网
- NAT路由器接收到主机Y发回的数据报时,知道数据报中的源地址为IPx而不是IPg
- 根据NAT转换表,NAT路由器将目的地址IPG转换为IPx,转发给内部主机X