网络层
4.1 网络层提供的两种服务
- 电信网
虚电路:表示这是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。 - 互联网
数据报服务:
- 网络层向上只提供简单灵活的、无连接的、尽量最大努力交付的数据报服务
- 网络在发送分组时不需要建立连接
- 网络层不通过服务质量的承诺
- 由运输层负责(包括差错处理、流量控制等)
优点:网络造价大大降低,运行方式灵活,能够适应多种应用
对比 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用每个分组使用短的虚电路号 | 每个分组都有中点的完整地址 |
分组的转发 | 属于同一条虚电路的分组,均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
结点出现故障 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的节点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点的时间不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
电信网提供的端到端可靠传输的服务对电话业务无疑是很合适的。但计算机网络的端系统是有智能的计算机。计算机有很强的差错处理能力,因此互联网在设计上就采用了和电信网完全不同的思路—数据报服务。
TCP/IP体系的网络层提供的是数据报服务,因此我们围绕IP数据报讨论。
4.2 网际协议IP
与IP协议配套使用四个协议:
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制报文协议 ICMP(Internet Control Message Protocol)
- 网际组管理协议 IGMP(Internet Group Management Protocol)
4.2.1 虚拟互联网络
网络互联的中间设备(中继系统):
- 物理层中继系统:转发器(repeater)。
- 数据链路层中继系统:网桥或桥接器(bridge)。
- 网络层中继系统:路由器(router)。
- 网络层以上的中继系统:网关(gateway)
4.2.2 分类的IP地址
IP地址就是给网络上的每一台主机(路由器)分配一个在全世界范围内唯一的32位的标识符。
IP地址的编址方法发展的三个阶段:分类的IP地址、子网划分、构造超网
分类的IP地址:
- A类、B类和C类地址的网络号字段分别为1个、2个和3个字节长,而在网络号字段的最前面有1~3位的类别位,其数值分别规定为0,10和110
- A类、B类和C类地址的主机号字段分别为3个、2个和1个字节长
- D类地址(前4位是1110)用于多播(一对多通信)
- E类地址(前4位是1111)保留为以后用
IP地址具有以下一些重要特点
- 每一个IP地址都由网络号和主机号两部分组成
IP地址是一种分等级的地址结构。好处:第一,方便了IP地址的管理;第二,减小了路由表所占的存储空间以及查找路由表的时间。
- 实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的
这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。这好比一个建筑正好处在北京路和上海路的交叉口上,那么这个建筑就可以拥有两个门牌号码。例如,北京路4号和上海路37号。
- 一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,具有不同网络号的局域网必须使用路由器进行互连
- 互联网同等对待每一个IP地址
4.2.3 IP地址和硬件地址
硬件地址又名MAC地址。
物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
注意:
- 在IP层抽象的互联网上只能看到IP数据报
- 路由器只根据目的站的IP地址的网络号进行路由选择
- 在局域网的链路层,只能看见MAC帧
- IP层抽象的互联网“屏蔽”了下层复杂的细节
4.2.4 地址解析协议 ARP
知道IP地址解析出MAC地址
ARP协议划归网络层,也可划归数据链路层
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
4.2.5 IP数据报的格式
IP数据报格式如下图:
IP数据报首部固定部分的各字段含义:
- 版本:占4位,指IP协议的版本。
- 首部长度:占4位,可表示的最大数值是 15 个单位(一个单位32个字长,为 4 字节),因此 IP 的首部长度的最大值是 60 字节
- 区分服务:占8位,确定优先级,一般不使用
- 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535(216-1) 字节。总长度必须不超过最大传送单元 MTU
- 标识:占16位,是一个计时器,每产生一个数据报,计时器加一
- 标志:占3位,目前只有两位有意义
最低位记为MF,MF=1表示后面还有分片,MF=0表示这是数据报的最后一个
中间位记为DF,意思是不能分片,当DF=0才允许分片
- 片偏移:占13位, 较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位
- 生存时间TTL:占8位,表明数据报在网络的寿命,数据报每经过一个路由器,TTL减一,TTL最大为255
- 协议:占8位,指出数据报携带的数据使用何种协议
- 首部校验和:占16位,这个字段只检验数据报的首部,不包括数据部分
- 源地址:占32位,从哪里来
- 目的地址:占32位,到哪里去
4.3 划分子网和构造超网
4.3.1 划分子网
早期使用的IP地址空间的利用率低,两级IP地址不够灵活,因此使用划分子网方式将两级IP地址变成三级IP地址。
优点:
- 充分利用地址
- 划分管理职责
- 提高网络性能和安全性
思路:
- 单位对外仍然表现为一个网络
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器,然后此路由器在收到 IP 数据报后,再按目的网络号net-id 和子网号 subnet-id 找到目的子网,最后将 IP 数据报直接交付目的主机
格式:
IP地址 ::= {<网络号>, <子网号>, <主机号>}
子网掩码
- 使用子网掩码可以计算出子网划分
- 如果一个网络不划分子网,那子网掩码也叫默认子网掩码。
- 子网掩码是一个网络或者子网的重要属性
互联网标准协议中,子网号不能为全1或全0,但随着无分类域间路由选择(构造超网)的使用,现在全0全1的子网号也可以使用,请注意这一点!
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
4.3.2 构造超网
(1)网络前缀
特点:
- 消除ABC类地址以及划分子网的概念
- CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”
CIDR使用32位的地址掩码,斜线记法中数字代表地址掩码中1的个数
(2)最长前缀匹配
路由选择:应当选择匹配结果中具有最长网络前缀的路由。
因为网络前缀越长,地址块就越小,路由就越具体
(3)使用二叉线索查找路由表
为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)
4.4 网际控制报文协议ICMP
为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。ICMP 不是高层协议,而是 IP 层的协议。
通过ICMP可以探测网络故障
ICMP报文的种类:
ICMP报文有两种,ICMP差错报告报文和ICMP询问报文
ICMP报文前四个字节是统一的格式,共三个字段:类型、代码和检验和
ICMP差错报告报文
共有 4 种,如下:
- 终点不可达:当路由器或主机不能交付数据报
- 时间超过:当路由器收到生存时间为零的数据报或终点在预定时间不能收到一个数据报的全部数据
- 参数问题:当路由器或目的主机收到数据报首部有字段的值不正确
- 改变路由(重定向)(Redirect):路由器吧改变路由的报文发送给主机,让下次主机选择另外更好地路由
ICMP询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
4.5 互联网的路由选择协议
4.5.1 基本概念
(1)理想的路由算法应具备以下特点:
- 完整与正确
- 计算简单
- 能适应通信量与网络拓扑的变化,有自适应性(稳健性)
- 具有稳定性
- 应是最佳的,相对于某种特定需求下较为合理的选择
从路由算法的自适应性考虑分两大类:
- 静态路由选择策略(非自适应路由选择):简单,开销小,但不能适应网络状态的变化
- 动态路由选择策略(自适应路由选择):能较好适应网络状态的变化,但实现较为复杂,开销大
(2)分层次的路由选择协议
将互联网划分为许多小的自治系统(AS),一个AS对其他AS表现出单一的和一致的路由选择策略。
互联网把路由选择协议划分为两大类:
- 内部网关协议IGP:自治系统内部使用的路由选择协议,如RIP和OSPF
- 外部网关协议EGP:当源主机与目的主机处在不同的自治系统中所使用的路由选择协议,目前使用最多的是BGP-4
自治系统之间的路由选择也叫做域间路由选择(interdomain routing),在自治系统内部的路由选择叫做域内路由选择(intradomain routing)
4.5.2 内部网关协议RIP
RIP是一种分布式的基于距离向量的路由选择协议
“距离”的定义:
- 从一路由器到直接连接的网络的距离定义为 1。从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
- RIP 协 议 中 的 “ 距 离 ” 也 称 为 “ 跳数”(hop count),因为每经过一个路由器,跳数就加 1。
RIP 协议最大的优点就是实现简单,开销较小。
缺点:
- RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。(好消息传得快,坏消息传的慢)
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达),可见 RIP 只适用于小型互联网。
- RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器相比较多的路由。
RIP 协议的三个要点:
- 仅和相邻路由器交换信息
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
- 按固定的时间间隔交换路由信息
4.5.3 内部网关协议OSPF
开放最短路径优先OSPF,为克服RIP缺点而生
主要特征是使用分布式的链路状态协议
开放:表明不受某一家厂商控制。
注意:OSPF只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。实际上,所有的在自治系统内部使用的路由选择协议(包括RIP协议)都是要寻找一条最短的路径。
要点:
- 使用泛洪法,向本自治系统所有的路由器发送信息
- 发送的是有本路由器相邻的所有路由器的链路状态
- 只有链路状态改变时才使用泛洪发送信息
OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。区域也不能太大,在一个区域内的路由器最好不超过 200 个。
OSPF建立网络拓扑结构图的方式:
- 首先每个路由器会每10s对相邻的路由器发送问候(Hello)分组,来维持相邻路由器的可达性
- 通过交换得到的链路状态信息,建立链路状态数据库,构造全网的拓扑结构图
- 当链路状态发生改变时,每个路由器都能及时更新同步数据库
4.5.4 外部网关协议BGP
边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” ,一般为BGP边界路由器。
4.6 IPv6
从根本上解决地址耗尽问题
4.6.1 IPv6的基本首部
IPv6的主要变化:
- 更大的地址空间:从32位(4B)增大到128位(32B)
- 扩展的地址层次结构:IPv6由于地址空间很大,可划分更多层次
- 灵活的首部格式:定义了许多可选的扩展首部
- 改进的选项
- 允许协议继续扩充
- 支持即插即用,自动配置:不需要使用DHCP
- 支持资源的预分配
- 首部8字节对齐
- IPv6只能在主机处分片,IPv4能在路由器和主机处分片
- ICMPv6:附加报文类型“分组过大”
IPv6数据报由两大部分组成,即基本首部(base header)和后面的有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。但请注意,所有的扩展首部并不属于IPv6数据报的首部。
- 版本:占4位,指明了版本协议,总是6 优先级:占8位,区分数据报的类别和优先级
- 流标签:占20位,“流”是从特定源点到特定终点的一系列数据报,所有属于同一个流的数据报有同样的流标签。
- 有效载荷长度:占16位,它指明IPv6数据报除基本首部以外的字节数,这个字段最大64KB
- 下一个首部:占8位
当IPv6没有扩展首部时,它的作用相当于协议字段,指明数据报一个交付上层那个协议 当出现扩展首部,它就用来标识后面一个扩展首部的类型
- 跳数限制:占8位,相当于IPv4的TTL(生存时间) 源地址:占128位,是数据报发送端IP地址
- 目的地址:占128位,是数据报接收端IP地址
4.6.2 IPv6的地址
IPv6使用冒号十六进制记法,允许零压缩法,也可结合点分十进制
IPv6基本地址类型
- 单播:一对一通信,可做源地址或目的地址
- 多播:一对多通信,只能用于目的地址
- 任播:IPv6新增类型,可做目的地址,通常是距离最近的一个发送数据报
4.6.3 IPv4向IPv6的过渡
(1)双栈协议
双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了lPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
(2)隧道技术
通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载可以是不同协议的数据帧或包)。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。
4.7 虚拟专用网VPN
- 本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。
- 全球地址:全球唯一的IP地址,必须向因特网的管理机构申请
用于机构内部通信,访问外网等
4.8 网络地址转换NAT
网络地址转换NAT(Network Address Translation)方法是在1994年提出的。这种方法需要在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。
水平有限,如有错误之处,还请指正。