网络层
功能
主要任务是把分组从源端传输到目的端,为分组交换网上的不同主机提供的服务,传输单位是数据报
- 路由选择与分组转发
- 异构网络互联
- 拥塞控制
开环控制和闭环控制
数据交换的方式
电路交换
建立连接-> 通信 -> 释放连接
优点:通信时延小,有序传输,没有冲突,实时性强
缺点:建立连接时间长,线路独占使用效率低,灵活性差,无差错控制能力
报文交换
把信息整体打包发送出去,传到交换设备的时候会储存在交换设备里面,然后交换设备动态选取路径发送到下一个设备
优点:无需建立连接,储存转发,动态分配线路,线路可靠性高,线路利用率高,多目标服务
缺点:有储存转发时延,报文大小不确定,需要网络节点有较大的缓存空间
分组交换
把大数据块分割成小数据块,之后跟报文交换的过程差不多
优点:无需建立连接,储存转发,动态分配线路,线路可靠性高,线路利用率高,相对于报文交换存储管理更加容易
缺点:有储存转发时延,需要传输额外的信息量,乱序到目的主机,需要重新排序
数据报方式
提供无连接服务:不事先为分组确定路径,每个分组独立确定传输路径,不同分组传输路径可能不同。路由器根据分组的目的地址转发分组。
虚电路方式
提供连接服务:从源主机到目的主机建立类似于电路的逻辑连接,路径上所有的节点都要维持这条虚电路的建立,维持一张虚电路表,每一项记录了一个打开的虚电路的信息。当传输完成后源主机发送释放请求,拆除虚电路。
IP
IP数据报格式
分为首部和数据部分
首部:20字节固定部分,0-40字节可变部分
20字节固定部分
4bit版本,4bit首部长度(单位4B),8bit区分服务,16bit总长度(单位1B),16bit标识,3bit标志,13bit片偏移,8bit生存时间,8bit协议,16bit首部检验和,32bit源地址,32bit目的地址
可变部分
长度可选的字段+补全部分,补全部分把字段变为4字节的整数倍
IP数据报分片
首部固定部分:
16bit标识:同一数据报的分片使用相同的标识
3bit标志:第一个bit没意义,第二个表示是否允许分片,1位否,0位是,第三个bit表示后面是否还有分片,1为有,若第二位为1,第三位无意义。
13bit片偏移:该分片在数据报中的位置,以8B为单位,则除了最后一个分片,其他分片的长度一定为8B的整数倍。
IPV4地址(IP地址)
32位标识符,表示路由器主机的接口,每个接口全世界唯一
分类
A类:1B网络号3B主机号,网络号第一个比特为0
B类:2B网络号2B主机号,网络号前两个比特为10
C类:3B网络号1B主机号,网络号前三个比特位110
D类:1110开头,多播地址
E类:1111开头,留今后使用
网络地址转换
专用网跟因特网使用的不是同一个IP,专用网不能直接连接到因特网中,需要地址转换。在专用网连接到因特网的路由器上安装NAT软件,形成NAT路由器,其拥有至少一个有效的外部全球地址。内网设备向外发送信息时将发送的信息传到NAT路由器,NAT路由器将内网IP地址转换成全球IP地址后发送到因特网中。
子网划分和子网掩码
子网划分
将主机号切割成子网号+主机号,三级IP地址
子网掩码
主机号的子网掩码全为0,非主机号为1。
通过IP地址和子网掩码求网络地址:将掩码和IP写成二进制形式,对应位进行‘与’运算的结果就是网络地址
路由器转发分组算法
- 提取目标地址IP
- 跟子网掩码进行与运算判断是否交付
- 在路由表中找特定主机路由
- 检测路由表中有无路径
- 默认路由0.0.0.0
- 丢弃,报错
无分类编址CIDR
网络前缀+主机号,在IP后面加上‘/+数字’标明网络前缀的长度
地址掩码:网络前缀为1,主机号为0
构成超网
将多个子网聚合成一个较大的子网,使用的方法为网络前缀缩短。
目的:在路由器转发表中有可能有多个不同的子网的下一跳地址相同,为了节省开销,将跳向同一地址的网络前缀缩短组成一个。
最长前缀匹配
使用CIDR是如果查找路由表发现有多个匹配结果,选取具有最长网络前缀的路由,因为网络前缀越长路由就越具体。
ARP协议
解决数据下一步传输到哪里的问题。
数据在网络层时添加了源主机和目的主机的IP地址,传到数据链路层的时候需要添加源主机物理地址和目的主机物理地址,ARP协议就是用来寻找目的主机物理地址的协议。
过程:
首先检查ARP高速换成,如果有对应表就写入MAC帧,如果没有就将MAC地址设置为全1(广播),同一局域网的主机收到请求后如果自己是目的主机的话就向源主机发送响应,将MAC地址传给源主机。如果没有的话就由连接的路由将自己端口的MAC传给源主机,源主机把数据传输给路由,再由路由传给其他的路由。
DHCP协议
主机获得IP地址方式:静态配置和动态配置
DHCP协议是用于主机IP地址动态分配中的,属于应用层协议,使用C/S方式,客户端和服务端通过广播方式进行交互,基于UDP协议
作用
提供即插即用的联网机制,主机可以从服务器动态获取IP地址,子网掩码,默认网关,DNS服务器名称和IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。
工作过程
- 主机广播HDCP发现报文,试图找到服务器以获得IP地址
- DHCP服务器广播DHCP提供报文,将IP和相关配置传给主机。
- 主机广播请求报文,给先到的IP发送请求信息,并使其他的服务器知道自己的IP没被选上。
- DHCP服务器广播DHCP确认报文。
ICMP协议
IMCP协议支持主机或者路由器进行差错报告和网络探询,属于网络层协议,发送的数据是由IMCP报文和首部组成的IP数据报
ICMP差错报文
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变路由
不发送ICMP差错报文的情况
- 不发送差错报文的差错。
- 对于分片的数据,只发送第一个数据报片的差错
- 对于具有组播地址的数据报都不发送差错
- 具有特殊地址的数据不发送差错
ICMP询问报文
- 回送请求和回答报文
- 时间请求和回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
ICMP应用
PING:测试两主机之间的连通性
Traceroute:跟踪一个分组从源点到终点的路径。
IPV6
意义
从根本上解决地址耗尽的问题。
通过改进首部格式,使得支持快速处理/转发数据报,支持QoS
数据报格式
40B基本首部+不超过65535B的有效载荷。其中,有效载荷分为选项部分和数据部分。选项部分就类似于IPV4的首部拓展。
基本首部组成
4bit版本,8bit优先级,20bit流标签,16bit有效载荷长度,8bit下一个首部,8bit跳数限制,128bit的源地址和目的地址(IPV4是32,可以说IPV6目前来看是永远用不完的)
IPV6地址的表现形式
一般形式:冒号十六进制记法
用一个十六进制数代表4个字节,每隔4个十六进制数用冒号分开
压缩形式:每4个字节一组,组前面的0可以省略。另外,一连串的0可以用双冒号表示,但是只能用一次。
IPV6地址基本类型
单播:可作为原地址和目的地址
多播:可作为目的地址
任播:可作为目的地址
IPV6和IPV4的区别
- 地址从32位扩大到128位
- IPV6删除了校验和字段,减少了每跳的处理时间
- IPV6将拓展字段移出首部,变成了拓展首部,路由器不再对拓展首部进行检查,大大提高了路由器的处理效率。
- IPV6支持即插即用,不需要DHCP协议
- IPV6首部长度是8B的整数倍,IPV4是4B的整数倍
- IPV6只能在主机进行分片,路由器不行。
- ICMPv6:附加报文类型“分组过大”。
- IPV6支持资源预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
- IPV6取消协议字段,改成下一个部首字段。
- IPV6取消总长度字段。
- IPV6取消了服务类型字段。
IPV6向IPV4过渡
双栈协议:一个设备上同时启用IPV4和IPV6协议栈。
隧道技术:将整个数据报作为传送数据重新用另一个协议打开包装发送。
转换模式
路由算法和相关协议
路由算法
静态路由算法
管理员收工配置路由信息
简单可靠,不适用大型网络
动态路由算法
路由器直接彼此交换信息,按照路由算法优化出路由表
路由更新快,适用大型网络,算法复杂
动态路由算法又分为全局性和分散性两种类型
全局性:所有路由器掌握完整的网络拓扑和链路费用信息
分散性:路由只掌握物理相连的邻居及链路费用
分层次的路由选择协议
自治系统AS: 单一技术管理下的一组路由器
内部网关协议IGP:一个AS里面使用的协议,有RIP、OSPF等
外部网关协议EGP:AS之间使用的协议,有BGP等
RIP协议与距离向量算法
RIP协议
分布式的基于距离向量的路由选择协议,因特网的协议标准,简单。
内容:每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录。距离定义为需要经过的路由器的个数。 同时RIP协议规定一条路只允许有15个路由器,即距离为16+不可达。只适用于小型互联网。
信息更新:每30s相邻路由器之间交换自己的路由表,如果180s没收到邻居路由器的信息就判断邻居没了,从自己的路由表中删除。当路由器刚开始接入网络时路由表里面只有自己相邻的路由器的信息,当第一个30s后收到邻居的路由表才开始更新到其他非相连的路由器的最短距离。随着更新次数增加,最终所有的路由器都知道到达本系统内任意网络的最短距离和下一跳的路由器地址。
RIP协议是应用层协议,使用UDP传送数据,一个报文最多包含25个信息
距离向量算法
修改相邻路由器发来的RIP报文中所有的表项,把X路由器的报文中所有的下一跳的地址改为X,所有的距离+1。如果路由表中没有某些节点的信息,就直接填入路由器,如果有,判断路由表中原数据的下一跳是否是X,如果是,覆盖原信息,如果不是,判断新信息的距离是否小于原信息,如果是则覆盖,不是则丢弃。
OSPF协议与链路状态算法
OSPF协议
内容:向AS内所有的路由器发送与本路由器相连的所有路由器的状态(与哪些路由器相连以及费用、代价、时延、带宽等)内部使用dijkstra算法计算最短路径。只有当链路状态发生变化时才发送信息。所有的路由器都能建立一个全局拓扑图
链路状态算法
- 路由器向邻居节点发送【HELLO问候分组】
- 设置到每个邻居的成本变量
- 构造【DD数据库描述分组】,给邻居传输自己链路状态数据库中的简略信息。
- 邻居接收DD分组,如果里面的信息自己都有就不做处理,没有或者更新的话,发送【LSR链路状态请求分组】请求自己没有的信息
- 邻居收到LSR分组后发送【LSU链路状态更新分组】
- 更新完毕后返回【LSAck链路状态确认分组】
- 使用dijkstra构造最短路径。
OSPF其他特点
- 每30min要刷新数据库中的链路状态
- 链路状态更新只涉及相连路由器的联通状态,与整个互联网的规模没有关系,所以适用于互联网规模很大的情况。
- 收敛速度快。
BGP协议
外部网关协议,应用层,借助TCP传送
内容:每一个AS都要指定一个路由器作为BGP发言人负责与外界交换信息。发言人之间交换的信息是到达某个网络所需要经过的一系列AS。发言人交换完信息后根据所采用的策略从信息中找出到达各AS的比较好的路由(不是最好)。
BGP-4的4种报文
BGP-4是目前最常用的协议
- OPEN
- UPDATE
- KEEPALIVE
- NOTIFICATION
IP组播
IP数据报传输方式
- 单波:点对点
- 广播:点对多点,对所有的主机
- 组播:点对多点,对有相同需求的主机,范围比广播小
组播和广播的区别
广播是从源主机发送多个信息,而组播是发送一个信息到路由器,如果有需要再在路由器里复制,提高了传输效率
IP组播地址
组播地址能让源设备发送信息给一组设备。属于同一个多播组的设备都有共同的组播IP地址。组播的地址范围为224.0.0.0-239.255.255.255,属于D类地址,只能用作目的地址。
组播使用UDP协议。
IGMP协议
判断局域网内是否有主机加入或退出某个组播组
网络层协议
当某个主机要加入组播组时,向组播地址发送IGMP报文。本地组播路由器接受到报文之后,利用组播路由选择协议把该组成员关系发到其他的组播路由器。同时,本地组播路由器还会周期性发送信息确认主机是否还是组播组成员,只要有一个主机响应就认为这个组是活跃的。多次试探没有响应后就认为组播组里面不存在主机,就不把关系发给其他路由器。
组播路由选择协议
三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播
移动IP
通信过程:当一个主机进入外部网络时,外部代理登记一个转交地址发送给本地代理注册。当有主机发信息给外部网络的信息时,先发送给本地代理,本地代理发给外部代理。外部网络里的主机发送信息时直接发给外部地址就行,不需要转到本地代理去发送。