1、主要任务
从发送主机向接收主机传送数据,网络层传输的数据叫做数据段;网络层需要考虑如何将数据包从一个节点传输到另一个节点
核心功能:
- 转发:将分组从路由器的输入端口转移到合适的输出端口
- 路由:确定分组从源到目的经过的路径
网络层主要提供两种服务
- 无连接服务:
- 不事先为系列分组的传输确定路径
- 每个分组独立确定传输路径
- 不同分组可能传输路径不同
- 数据包网络
- 连接服务
- 首先为系列分组的传输确定从源到目的的路径
- 然后沿该路径传输
- 传输结束后拆除连接
- 虚电路网络
2、虚电路网络
虚电路:一条从源主机到目的主机的类似于电路的路径
- 分组交换
- 每个分组的传输利用链路的全部带宽
- 源到目的路径经过的网络层设备共同完成虚电路功能
每个分组携带虚电路标识(VCID),而不是目的主机地址,虚电路经过的每个网络设备都需要维护每条经过他的虚电路的连接状态
3、数据报网络
无连接,每个分组携带目的地址,路由器根据分组的目的地转发分组
路由器使用最长前缀匹配优先原则确定转发路径
4、IP协议
4.1、IP数据报
- IP数据包首部:20字节固定+可选字段
- 版本号:4bit,4_>IPv4 6->IPv6
- 首部长度:IP分组的header长度,以4字节为单位
- TOS:服务类型
- 总长度:16bit,最大IP分组总长度65535Bytes,去除20Byte头部,每个IP分组可以封装的最大数据为65515B
- 生存时间(TTL):8bit,IP分组在网络中可以通过的路由器数,路由器转发一次,TTL减一
- 协议:8bit,TCP为6,UDP为17
- 首部校验和
- 源IP,目的IP:32bit
- 选项字段:长度可变,1-40B之间,携带安全路径、时间戳和路由记录等内容
- 填充:长度可变,0-3B,目的是补齐首部
- 剩余部分和IP分片有关系,4.2节中讲
4.2、IP分片
网络链路存在MTU(最大传输单元)–链路层数据帧可封装数据的上限
大IP分组向较小的MTU链路转发时,可以被“分片”,IP首部的相关字段用于标识分片以及确定分片的相对顺序
参照4.1中的IP数据报格式
- 标识(ID):16bit,标识一个IP分组,IP协议利用一个计数器,每产生一个IP分组计数器加1,作为该IP分组的标识
- 标志位:3bit
- 片偏移:13bit,一个IP分片封装原IP分组数据的相对偏移量,以8字节为单位
4.3、IP编址
IP地址:32bit(IPv4),编号标识主机、路由器的接口
IP地址由两部分组成:
- 网络号(NetID)-高位比特
- 主机号(HostId)-低位比特
IP子网:
- IP地址具有相同网络号的设备接口
- 不跨越路由器(第三及上层网络设备)可以批次物理联通的接口
IP地址分类:
特殊IP地址:
子网掩码
解决无法确定网络号和主机号长度的问题,取值:NetID全部取1,HostId全部取0
如:A网的默认子网掩码为255.0.0.0,B网的默认子网掩码为255.255.0.0
CIDR
CIDR(Classless InterDomain Routing),消除传统ABC类地址界限
NetId+SubID → \rightarrow → NetworkPrefix可以任意长度
融合子网地址与子网掩码,方便子网划分,a.b.c.d/x,其中x为前缀长度,如:
路由聚合
使用CIDR的方法可以简化路由器的转发表,以前每个IP都需要记录一次,但有了CIDR技术,我们可以将一个子网合并成一个IP/后缀的格式,可以大大的简化转发表,转发时使用最大前缀匹配原则
DHCP
Dynamic Host Configuration Protocol,动态主机配置协议
- I从服务器动态获取
- IP地址
- 子网掩码
- 默认网关地址
- DNS服务器名称与IP地址
- 即插即用
- 允许地址重用
- 支持在用地址续租
- 支持移动用户加入网络
工作过程
NAT:网络地址转换
动机:只能从ISP申请一个IP地址,IPv4地址耗尽,可以支持的设备数量有限
实现:
- 替换:利用(NAT IP地址,新端口号)替换每个外出IP数据报的(源IP地址,源端口号)
- 记录:将每对(NAT IP地址,新端口号)与(源IP地址,源端口号)的替换信息存储到NAT转换表中
出现问题:子网对外只暴露一个节点的IP地址,无法确定某台主机使用NAT技术之后的IP
解决办法:
- 静态配置NAT,将特定端口的连接请求转发给服务器
- 利用UpnP互联网网关设备协议
- 使用一个中继服务器
5、ICMP
互联网控制报文协议支持主机或路由器:
- 差错(或异常)报告
- 网络探寻
两类ICMP报文:差错报文和网络探寻报文
6、IPv6
解决IPv4地址空间分配殆尽的问题
IPv6数据格式:
IPv6地址表示形式:
一般形式:1080:0:FF:0L8:800:200C:417A
压缩形式:FF01:0:0:0:0:0:0:43 ⇒ \Rightarrow ⇒ FF01::43
IPv4-嵌入形式:0:0:0:0:0:FFFF:13.1.68.3
7、路由算法
路由器功能是路由和转发,路由算法的功能是确定去往目的网络的最佳路径
路由算法分类
- 静态路由:手动配置路由,优先级高
- 动态路由:动态更新,及时响应链路费用或网络拓扑变化
链路状态路由算法:
所有结点掌握网络拓扑和链路费用:使用Dijkstra算法
- c(x,y):结点x到结点y链路费用;如果x和y不直接相连,则= ∞ \infin ∞
- D(v):源到目的v的当前路径费用值
- p(v):沿从源到v的当前路径,v的前序结点
- N‘:已经找到的最小费用路径结点集合
存在问题:链路震荡,由于路由器需要掌握全局信息,一旦整个链路变化比较频繁,则会需要消耗大量资源计算传输全局链路的费用
距离向量路由算法
Bellman-Ford方程(动态规划):该算法不需要路由器掌握全局变量,只需要每个路由器知道与相邻路由器之间的链路消耗即可
存在的问题:好消息传播快,坏消息传播慢
解决方法:
- 毒性逆转,如果一个节点到达某目的的最小费用路径是通过某个邻居的,则通告该邻居节点到达该目的的距离为无穷大
- 定义最大度量,如15跳,超过则为 ∞ \infin ∞
8、层次路由
网络规模过大,路由器无法承载如此多的信息!所以采取层次路由,聚合路由器为一个区域:自治系统AS
同一个AS内运行相同的协议,网关路由器位于AD边缘,通过链路连接其他AS的网关路由器
不同的AS之间也运行着一种路由算法
9、AS内部路由协议
9.1、RIP协议
Routing Information Protocol,使用跳步hop计算链路间距离,每隔30秒邻居之间交换一次DV,,每次最多通告25个子网;如果180秒内没有收到通告,说明邻居/链路失效,需要重新计算路由
使用毒性逆转技术预防乒乓环路,同时设置最大距离16
9.2、OSPF协议
Open Shortest Path First,利用链路状态路由算法,可以设置不同的费用度量
最主要:支持大规模AS分层
分为局部区域和主干区域,链路状态通告只限定在区域内部
10、AS间路由协议
BGP协议,Border Gateway Protocol,分为iBGP和eBGP两种,eBGP负责边界网关之间传输信息,iBGP负责子网内部传递信息
子网;如果180秒内没有收到通告,说明邻居/链路失效,需要重新计算路由
使用毒性逆转技术预防乒乓环路,同时设置最大距离16
9.2、OSPF协议
Open Shortest Path First,利用链路状态路由算法,可以设置不同的费用度量
最主要:支持大规模AS分层
分为局部区域和主干区域,链路状态通告只限定在区域内部
10、AS间路由协议
BGP协议,Border Gateway Protocol,分为iBGP和eBGP两种,eBGP负责边界网关之间传输信息,iBGP负责子网内部传递信息