以下内容为参考课件和《计算机网络》(第7版,谢希仁编著)的个人整理,若有错误欢迎指出
第四章 网络层
数据链路层完成了帧的转发(一跳hop),网络层需要实现包的转发(由路由完成),而且可能Multi-hop。网络层负责任意两端间的传输,但是先不管出错,而是追求best effect。
一、网络层提供的两种服务
网络层应该为传输层提供什么样的服务一直有争议,下面两种是当时的观点,目前主要是第二种
1、面向连接的服务——虚电路
双方在数据传输之前先由网络建立连接(逻辑连接)
2、无连接服务——数据报
发送数据不需要建立连接,每一个分组(packet)在网络中独立传送
数据报并不管出错(由传输层处理),只提供检测。这使得路由可以硬软件都相对简单
二、网络协议IP
1、IP(Internet Protocol)简介
与 IP 协议配套使用的还有四个协议:
-
地址解析协议ARP(Address Resolutio Protocol) -
逆地址解析协议RARP(Reverse Address Resolution Protocol)
配套ARP使用的,目前已被淘汰
-
网际控制报文协议ICMP (Internet Control Message Protocol) -
网际组管理协议IGMP(Internet Group Management Protocol)
在上图中的上下关系是因为IP要使用ARP,而ICMP、IGMP要使用IP
2、分类的IP地址
(1)IP地址定义
是分配给主机或路由器的标识符,目前使用的IPv4为32位IP地址,由ICANN分配。
(2)编址方法的三个发展阶段
(3)分类的IP地址
IP地址=网络号+主机号,不同类别是网络号、主机号长度不同
3、IP地址与硬件地址
IP地址是网络层及其上层使用的,是逻辑地址;物理地址是数据链路层及物理层使用
4、ARP与RARP协议
解决的是IP地址和物理地址相互转换
(1)ARP:IP转物理
(2)RARP:物理转IP
5、IP数据报格式
分为头部和数据两部分。下面主要讲解头部 header
(1)头部的总体结构
20字节的固定字段+0到多个可选字段
下面的图表示各字段,因为总长度较大,故一般表示为每32bit一行,从上往下排开
(2)各字段介绍
-
Version字段:4bit,IP协议的版本,目前的IP协议版本号为4 (即 IPv4) -
IHL:4bit,IP包头长度,最小5,最大15,单位为word(32bit)。因此 IP包头最长60 字节 -
Type of service:1字节,服务类型,目前很多路由器忽略该字段 -
Total Length:2字节,IP包总长度(含头部和数据),单位为字节。因此IP包的最大长度为65535(
2
16
2^{16}
216)字节
因为数据较多的包要分片传输(数据链路层帧长度限制),因此需要有以下相关的四个字段。实际应用中一般会限制包长度尽量减少分片。
-
Identification:2字节,标识,,表示这些片是一个包的 -
DF:1bit,DF=0表示允许分片 -
MF:1bit,MF=1表示后面还有分片,0表示这是最后一个分片 -
Fragment offset:13bit,片偏移,以8字节为单位 -
Time to Live(TTL):1字节,生存时间,指IP包在网络中可通过的路由器个数的最大值
- 相当于一个倒计时,每经过一个路由器(one hop)就-1,至0就丢弃并向源主机发送告警包
- 防止有包在网络中由于错误而无休止游荡
- 最大值为255,由源主机设置
-
Protocol:8bit,协议字段,表示上层协议类型(如TCP、UTP) -
Header checksum:2字节,包头校验和
- 对IP包头每16位求反(校验和这段置为全0),循环相加(进位加在末尾),和再求反
- 检验时同样操作,结果为0就保留
- 因为TTL一直在变,所以实际上校验和每一跳都要变
-
Source address:4字节,源IP地址 -
Destination address:4字节,目的IP地址 -
选项字段:以4字节为单位,最长40字节,实际网路中很少使用
三、划分子网和构造超网
1、划分子网
(1)分类IP地址的缺点
每一类的主机数很多,都放一个网效率太差;(随着规模变大)如果每个物理网络分配一个网络号会使路由表变得很大
(2)解决方法
形成三级IP地址,增加子网字段(就是主机号分出一部分表示子网字段)比如:
2、子网掩码
方便算出子网划分信息(就是包括子网在内的网络号),会使用子网掩码。
子网掩码就是表示主机号的全0,其他全1,然后与目的地址按位与就能算出所属的网络号。
3、使用子网掩码的分组转发过程
4、无分类编址CIDR
四、网际控制报文协议ICMP
前面主要讲传递IP数据包,但是也需要控制信息
1、简介
ICMP 即Internet Control Message Protocol,主要用于报告出错和测试等控制信息。此类报文的类型protocol字段为1。
2、9种ICMP报文
- 差错报告
- Destination unreachable:终点不可达
- Source quench:源点抑制,拥塞时让源主机放慢发送速度
- Time exceeded:超时,即路由器收到TTL字段为0的报文时向源主机发送
- Parameter problem:参数问题,即头部有非法字段
- Redirect:重定向,向主机发送此报告知路由改变,主机下次发送数据报给另外的路由器
- 询问报文
- Echo request/reply:回声探测,测试网络连通性
- Timestamp request/reply:请求时间,可用于时间同步
3、常用ICMP协议
-
ping
- 测试两个主机间的连通性
- 采用Echo request/reply报文
-
traceroute/tracert
- 测试到另一台主机所经过的路由信息
- 采用超时报告报文:逐个发送UDP报文,TTL分别设置为1,2,3.……直到到达目的主机。路径上的路由器会返回超时报文,从而得知路由器IP
五、路由算法及协议
路由协议就是用来生成路由信息(生成路由表)的,但不是转发分组的。路由算法时路由协议的基础和核心
1、分类
-
静态路由
-
动态路由
-
自适应网络变化 -
两类典型算法:距离向量路由算法、链路状态路由算法
在自治系统背景下,Internet路由协议可以分为内部网关协议(自治系统内部)和外部网关协议(自治系统之间)两类。
2、距离向量路由
距离向量路由也称为Bellman-Ford路由算法和Ford-Fulkerson算法,最初用于ARPANET,被RIP协议采用
(1)基本思想
- 每个路由器维护一张表,记录到每个目的地已知的最佳距离和路线(下一跳)
- 周期性向相邻路由器发送距离表,同时也接受邻居节点发送来的距离表
- 更新自己的路由表:若邻居x距离i为
x
i
x_i
xi?,自己到x的距离为m,更新到i的距离为
m
i
n
(
x
i
+
m
,
原
始
值
)
min(x_i+m, 原始值)
min(xi?+m,原始值)。
(2)缺陷
对好消息反应迅速,对坏消息反应迟钝(考虑shutdown,但是因为之前有的是可达的,会误发很多信息,造成的无穷计算,直至都超过阈值被认为不可达)
3、RIP(Routing Information Protocol)协议
4、链路状态路由
(1)基本思想
- 发现邻居并学习其网络地址(发送HELLO包)
- 测量到各邻居节点的延迟或开销
- 构造分组,包含所有刚知道的信息,并把分组发送给其他所有路由器
- 计算到每一个其他路由的最短路径
(2)每个路由器都建立一个链路状态数据库——全网的拓扑结构图,一句dijkstra算法计算最佳路径
5、OSPF(Open Shortest Path First)协议
(1)属于链路状态路由协议
(2)优点
(3)为扩大规模,OSPF将一个自治系统再划分为若干个区域,将洪泛局限在一个区域,而一个区域内的路由器也仅知道本区域的完整网络拓扑
(4)OSPF分组结构
(不用UDP,直接用IP数据报) 5种类型的分组:
- 问候分组(Hello):发现和维持邻站的可达性
- 数据库描述(Database Description)分组:给出自己数据库的所有链路状态的摘要信息
- 链路状态请求(Link State Request)分组:请求部分链路状态的详细信息
- 链路更新状态(Link State Update)分组:洪泛,仅有一个路由器链路状态发生变化时使用
- 链路状态确认(Link State Acknowledgment)分组:对链路更新分组的确认
后四种都是用于数据库同步的
为了减少发送所有信息的代价,一般是让数据库用数据库描述分组与相邻路由交换信息,请求分组去获取缺少的链路状态信息。
前面说的时自治系统内的(即内部网关路由协议)
6、外部网关路由协议BGP(Border Gateway Protocol)
(1)规模大,而且不同的路由选择需考虑不同的策略(比如有的考虑距离,有的涉及保密),因此难以找到最佳路由,BGP只是找到一条可达且就好的无环路由
(2)BGP发言人(speaker)
- 每个AS(自治系统)选择至少一个路由器作为 speaker,两个speaker通过共享网络连接
- speaker一般是边界路由器,也可以不是
- speaker之间先建立TCP连接,交换BGP报文,建立BGP会话,进而交换路由信息
(3)路径向量路由选择协议
- BGP采用的时路径向量路由选择协议,与上文提到的两种都不同
- 路径向量是网络的可达性信息,即到达某个网络需要经过哪些AS
- speaker交换可达性信息后,根据所采取的策略选择到达各AS较好的路由
(4)BGP-4的四种报文
-
OPEN报文:用来与相邻的另一个BGP发言人建立关系 -
UPDATE报文:用来发送某一路由的信息,以及列出要撤消的多条路由 -
KEEPALIVE报文:用来确认打开报文和周期性地证实邻站关系 -
NOTIFICATION报文:用来发送检测到的差错
流程:
(5)协议特点
-
交换路由信息的结点数量级与自治系统个数相当,大大少于这些自治系统中的网络数 -
每个自治系统中BGP发言人(或边界路由器)的数目很少,使得自治系统间的路由选择不致过分复杂 -
BGP支持CIDR,因此BGP路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络要经过的各个自治系统序列 -
在BGP刚运行时,邻站交换完整的BGP路由表,以后只需要在发生变化时更新变动部分,有利于节省网络带宽和减少处理开销
7、路由器
(1)定义
具有多个输入/输出端口的专用计算机,其任务是转发分组。
(2)组成
8、网络的控制平面与数据平面
(1)控制平面:生成路由表和转发表
(2)数据平面:进行分组的快速转发
传统网络中路由器集成了两者,缺少灵活性
(3)软件定义网络(SDN)
六、IP组播
1、基本概念
-
组播,又称多播,实现一点对多点的数据传输
如果使用单播,那么1对n就要传输n条数据流,但这n条数据流是一样的。因此组播就是希望只需传1条数据流
2、组播地址
-
D类IP地址:224.0.0.0—239.255.255.255 -
组播数据报:IP包包头目的地址为D类地址,协议类型为2(IGMP协议) -
组播地址就是特定组播的标识符,主机通过加入组播组来接收组播数据
3、两类组播
七、地址转换NAT
1、专用地址(保留地址)
只用于机构的内部,Internet中的路由器不转发目的地址为专用地址的包。根据RFC1918规定,有下列专用地址:
- 10.0.0.0 ~ 10.255.255.255 (CIDR记法: 10/8)
- 172.16.0.0 ~ 172.31.255.255 (CIDR记法: 172.16/12)
- 192.168.0.0 ~ 192.168.255.255 (CIDR记法: 192.168/16)
优点:减少IP地址空间的占用;提高安全性
2、地址转换NAT
-
当内部网络使用专用地址时,与Internet的通信需要通过NAT(Network Address Translation) -
发向外网需要换成全球IP地址,并且要记录什么时候内网的哪台主机向外网发送了信息 -
接收外网数据报时,根据TCP/UDP端口号转回内网地址 -
减少全球IP占用;安全(外网不知道具体内网地址)
3、虚拟专用网VPN
多个企业/机构的内部网络之间互连的实现方法
涉及隧道、加密等技术
|