网络层(network layer)负责为分组交换网上的不同主机提供通信,在发送数据时,将运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,分组也叫做IP数据包,或简称为数据报。
简介
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统。
一种观点:让网络负责可靠交付
借助于电信网的成功经验,让网络负责可靠交付。
模仿电信网络,使用面向连接的通信方式。
虚电路服务
另一种观点:网络提供数据服务
互联网的先驱者提出了一种崭新的网络设计思路。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即IP数据包)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
数据报服务
尽最大努力交付
虚电路服务与数据包服务的对比
不通网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成,在路由器之间传送的信息有以下2大类:1. 数据。2. 路由信息(为数据传送服务)。
数据层面
控制层面
网际协议IP(Internet Protocol)是TCP/IP体系中两个最主要的协议之一。
与IP协议配套使用的还有三个协议:
如果将网络互连并能够相互通信,会遇到许多问题需要解决如
使用一些中间设备进行互连
网络互连使用路由器
虚拟互联网络的意义
从网络层看IP数据报的传送
如果只从网络层考虑问题,那么IP数据报就可以想象是在网络层传送。
在TCP/IP体系中,IP地址是一个最基本的概念。没有IP地址,就无法和网上其他设备进行通信。
IP地址及其表示方法
点分十进制记法
机器中存放的IP地址是32位二进制代码,每8位为一组,将每8位的二进制数转换为十进制数,采用点分十进制记法则进一步提高可读性。
IP地址采用2级结构
分类IP地址
各类IP地址的网络号字段和主机号字段
一般不指派的特殊IP地址
分类的IP地址的优点和缺点
优点:
缺点:
无分类编址CIDP
CIDR(Classless Inter-Domain Routing)无分类域间路由选择。
CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,可以更加有效地分配IPv4的地址空间,但仍然无法解决IP地址枯竭的问题。
要点:
(1)网络前缀
(2)地址块
CIDR把网络前缀都相同的连续的IP地址组成“CIDR地址块”。
一个CIDR地址块包干的IP地址数目,取决于网络前缀的位数。
例:128.14.32.0/20表示的地址块共有212个地址(因为斜线后面的20是网络的前缀的位数,所以这个地址的主机号是12位)。
注意:地址表示的含义
128.14.35.7/20 是IP地址,同时指明了网络前缀为20位。该地址是128.14.32.0/20地址块中的一个地址。
128.14.32.0/20 是包含有多个IP地址的地址块,同时也是这个地址块中主机号为全0的IP地址。
128.14.35.7 是IP地址,但未指明网络前缀长度,不知道其网络地址。
128.14.32.0 不能知名一个网络地址,因为无法知道网络前缀是多少。
(3)地址掩码(address mask)
又称子网掩码(subnet mask),用于找出IP地址中的子网部分。
子网掩码长度=32位
目的:让机器从IP地址迅速算出网络地址。
由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。
例如:/20地址块的地址掩码:
11111111 11111111 11110000 00000000
点分十进制记法:255.255.240.0
默认地址掩码
常用的CIDR地址块
构成超网
前缀长度不超过23位的CIDR地址块都包含了多个C类地址。
这些C类地址合起来就构成了超网。
CIDR地址块中的地址数一定时2的整数次幂。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
CIDR的一个好处是:可以更加有效地分配IPv4的地址空间,可根据客户的需要分配适当大小的CIDR地址块。
三个特殊的CIDP地址块
路由聚合(route aggregation)
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
CIDR地址块划分举例
这个ISP共有64个C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换信息的每一个路由器的路由表中,就需要有64个项目。但采用地址聚合后,只需要用路由聚合后的1个项目206.0.64.0/18就能找到该ISP。
IP地址的特点
IP地址与硬件地址是不同的地址。
从层次的角度看
IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。
从协议栈的层次看数据的流动
从虚拟的IP层上看IP数据报的流动
在链路上看MAC帧的流动
在IP层抽象的互联网上只能看到IP数据报。图中的IP1—>IP2表示从源地址IP1到目的地址IP2。两个路由器的IP地址并不出现在IP数据报的首部中。路由器只根据目的站的IP地址的网络号进行路由选择。
在具体的物理网络的链路层只能看见MAC帧而看不见IP数据报
IP层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或主机和路由器之间的通信。
地址解析协议ARP的作用
ARP高速缓存
ARP高速缓存(ARP cache),存放在局域网内各主机和路由器的IP地址到硬件地址的映射表。<IP address; MAC address; TTL> TTL(Time To Live):地址映射有效时间。
地址解析协议ARP要点
应当注意的问题
ARP是解决同一个局域网</上的主机或路由器的IP地址和硬件地址的映射问题。
使用ARP的四种典型情况
为什么不直接使用硬件地址进行通信?
逆地址解析协议RAPR
一个IP数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
版本:占4位,指IP协议的版本。目前的IP协议版本号为4(即IPv4)。
首部长度:占4位,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。
区分服务:占8位,用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直未被使用过。1998年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般情况下都不使用这个字段。
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。
标识(identification):占16位,它是一个计数器,用来产生IP数据报的标识。
标志(flag):占3位,目前只有两位有意义。标志字段的最低位是MF(More Fragment)。MF=1表示后面还有“分片”。MF=0表示最后一个分片。标志字段中间的一位是DF(Don’t Fragment)。只有当DF=0时才允许分片。
片偏移:占13位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。
生存时间:占8位,记为TTL(Time To Live),指示数据报在网络中可通过的路由器数的最大值。
协议:占8位,指出此数据报携带的数据使用何种协议,以确定目的主机的IP层需要将数据部分上交给那个协议进程。
IP协议支持多种协议,IP数据报可以封装多种协议PDU
首部检验和:占16位,秩检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的求校验和计算方法。
【例4-1】IP数据报分片
一数据包的总长度为3820字节,其数据部分的长度为3800字节(使用固定首部),需要分片为长度不超过1420字节的数据报片。
练习
一个3200bit长的TCP报文传到IP层,加上160bit的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最大数据帧中的数据部分只有1200bit。因此数据包在路由器必须进行分片。试问需要分成几个片?第二个局域网向其上层要传送多少比特的数据?
答:
思考
在因特网中将IP数据报分片传送的数据报在最后的目的主机进行组装。还可以有另一种做法,即数据报片通过一个网络就进行一次组装。试比较两种方法的优劣。
IP数据报首部的可变部分
实例
怎么从IP2得到下一站的MAC地址?
最长前缀匹配举例
收到的分组的目的地址 D=206.0.71.130
路由表中的项目:
查找路由表中的第一个项目:
第一个项目206.0.68.0/22的掩码M为 M=11111111 111111111 11111100 00000000
因此只需要把D的第3个字节转换成二进制。
查找路由表中的第2个项目:
第2个项目206.0.71.128/25的掩码M=11111111 11111111 11111111 10000000
因此只需要把D的第四个字节转换成二进制
选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。
转发表中的2种特殊的路由
主机路由(host route)
默认路由(default route)
默认路由举例
路由器分组转发算法
用5个前缀构成的二叉线索
从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。一个IP地址存入二叉线索树的规则很简单。先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。以此类推,直到唯一前缀的最后一位。
ICMP报文的格式
ICMP差错报文的3种类型
ICMP差错报告报文的数据字段的内容
不应发送ICMP差错报告报文的几种情况
ICMP控制报文共有2种
原点抑制报文(不再使用)(类型为“4”)
改变路由(重定向)(Redirect)(类型为“5”)
举例:
ICMP询问报文
类型
回送请求和回答报文
时间戳请求和回答报文
信息请求与回答报文(不再使用)
掩码地址请求和回答报文(不再使用)
路由器询问和通告报文(不再使用)
PING(Packet Internet Groper)
Traceroute的应用举例
发现路径MTU(Max Transmission Unit)
IP是互联网的核心协议。互联网经过几十年的飞速发展,到2011年2月IPv4的32位地址已经耗尽。ISP已经不能再申请到新的IP地址块了。我国在2014—2015年也逐步停止了向新用户和应用分片IPv4地址。解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6。
IPv6数据报的一般形式
IPv6数据报由两大部分组成:
基本首部(base header)
有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。
IPv6数据报的基本首部
各字段含义
IPv6的扩展首部
六种扩展首部
在RFC 2460中定义了六种扩展首部:
每一个扩展首部都由若干个字段组成,他们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了该扩展首部后面的字段是什么。
IPv6数据报的目的地址可以是以下三种基本类型地址之一:
单播(unicast):传统的点对点通信。
多播(multicast):一点对多点的通信。
任播(anycast):这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
结点与接口
冒号十六进制记法
在IPv6中,每个地址占128位,地址空间大于3.4×1038。
为了使地址再稍微简洁些,IPv6使用冒号十六进制记法(colon hexadecimal notation,简写为colon hex)。
每各16位的值用十六进制值表示,各值之间用冒号分隔。例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六进制记法中,允许把数字前面的0省略。例如把0000中的前三个0省略,写成1个0。
零压缩
冒号十六进制记法可以允许零压缩(zero compression),即一连串连续的零可以为一对冒号所取代。
FF05:0:0:0:0:0:0:B3 可压缩为FF05::B3
注意:在任一地址中只能使用一次零压缩。
点分十进制记法的后缀
冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在IPv4向IPv6的转换阶段特别有用。
例如:0:0:0:0:0:0:0128.10.2.1 再使用零压缩即可得出 ::128.10.2.1
CIDR的斜线表示法仍然可用。
例如:60位的前缀12AB00000000CD3可记为:
12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60(零压缩)
或 12AB:0:0:CD30::/60(零压缩)
IPv6地址分类
未指明地址
环回地址
多播地址
本地链路单播地址(Link-Local Unicast Address)
全球单播地址
向IPv6过渡只能采用逐步演进的办法,同时,还必须使新安装的IPv6系统能够向后兼容:
IPv6系统必须能够接收和转发IPv4分组,并且能够为IPv4分组选择路由。
两种向IPv6过渡的策略:
双协议栈
隧道技术
ICMPv6报文的分类
ICMPv6是面向报文的协议,它利用报文来报告差错,获取信息,探测临站或管理多播通信。
ICMPv6还增加了几个定义报文的功能及含义的其他协议。
理想的路由算法
代价
最佳路由
从路由算法的自适应性考虑
分层次的路由选择协议
原因一:互联网的规模非常大
如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需要的带宽就会使互联网的通信链路饱和。
原因二:许多单位及要保密又要联网
不愿意外界了解本单位网络的布局细节和本部门所采用的路由选择协议,但同时还希望连接到互联网上。
结果:出现“自治系统”。
自治系统AS(Autonomous System)
互联网有两大类路由选择协议
一个大的ISP就是一个AS
自治系统和内部网关协议、外部网关协议
自治系统之间的路由选择也叫做域间路由选择(interdomain routing),在自治系统内部的路由选择叫做域内路由选择(intradomain routing)。
RIP工作原理
“距离”的定义
从一路由器到直接连接的网络的距离定义为1。
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
RIP协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加1。(也叫做跃点)
RIP认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
RIP允许一条路径最多只能包含15个路由器。
“距离”的最大值为16时即相当于不可达。
RIP只选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低延迟)但路由器较多的路由。
RIP构造路由表的三个要点
与谁交换
仅与相邻路由器交换信息。
交换什么
交换当前本路由器所知道的全部信息,即自己的路由表。
何时交换
路由器之间交换信息
路由表的建立
距离向量算法
某路由器收到相邻路由器(其地址为X)的一个RIP报文:
首先修改此RIP报文中的所有项目:将“下一跳”字段中的地址都改为X,并将所有的“距离”字段的值加1。
每个项目有三个关键数据:到目的的网络N、距离是d、下一跳路由器是X
对修改后的RIP报文中的每一个项目,重复以下步骤:
若本路由表中没有目的网络N,则将该项目加到路由表中。
否则
若本路由表中下一跳路由器地址也是X,则用收到的项目替换之
否则{即本路由表中的目的网络是N,但下一跳路由器不是X}
若收到的项目中的距离小于本路由表中的距离,则进行更新。
否则什么也不做。
若3分钟后还没有收到相邻路由器的更新路由表,则将此相邻路由器记为不可达的路由器,即将距离置为16。
返回。
RIP-2协议的报文格式
RIP协议的位置
RIP协议的优缺点
优点
缺点
限制网络规模:最大距离15(16为不可达)。
路由表很快变大:互相交换整个路由表。
更新收敛过程长,“坏”消息传播太慢。
OSPF协议的基本特点
OSPF交换路由的三个要点
链路状态数据库(link-state database)
OSPF的区域(area)
OSPF划分为两种不同的区域
划分区域
OSPF直接使用IP数据报传送
OSPF的其他特点
OSPF的数据报格式
OSPF的五种分组类型
OSPF的基本操作
OSPF的工作过程
OSPF支持三种网络的连接
指定的路由器
AS之间选择路由为什么不用RIP或OSPF协议
因此,外部网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
BGP“发言人”
BGP采用路径向量(path vector)协议
每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP”发言人
一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,但也可以不是BGP边界路由器。
BGP交换路由信息
BGP发言人交换路径向量
自治系统连通图
BGP发言人互相交换网络可达性的信息后,各BGP发言人就可找出到达各自治系统的比较好的路由。
BGP协议的特点
BGP-4共使用四种报文
BGP报文具有通用的首部
三种路由选择协议比较
IP多播实现一对多的通信。IP多播是需要在互联网上增加更多的智能设备才能提供的一种服务。
多播可明显地减少网络中资源的消耗
IP多播的几个重要概念
IP多播的理解要点
问题:D类IP地址如何转换为硬件地址?
从 01-00-5E-00-00-00
到 01-00-5E-7F-FF-FF
D类IP地址与以太网多播地址的映射关系
IP多播需要两种协议
IGMP(Internet Group Management Protocol)
为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP。
多播路由选择协议
练级金额在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
IGMP使多播路由器知道多播组成员信息
不同多播组地址映射成一个物理地址及软件如何过滤
IGMP的本地使用范围
多播路由器选择的复杂性
网际组管理协议IGMP
IGMP是网际协议IP的一个组成部分
IGMP的两个阶段
IGMP采用的一些具体措施
IGMP的报文格式
多播路由选择实际上就是要找出以源主机为根节点的多播树。
多播路由选择相当复杂
几种多播路由选择协议
洪泛与剪除
基于核心的发现技术
VPN——Virtual Private Network
NAT——Network Address Translation
两个概念
专用地址(private address)
[RFC 1918] 指明的专用地址有:
10.0.0.0 到 10.255.255.255(10.0.0.0/8,称为24位块)
172.16.0.0 到 172.31.255.255(172.16.0.0/12,称为20位块)
192.168.0.0 到 192.168.255.255(192.168.0.0/16,称为16位块)
专用地址只能用作本地地址而不能用作全球地址。
互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
用隧道技术实现虚拟专用网
内联网 intranet 和外联网 extranet(都是基于TCP/IP协议)
远程接入VPN(remote access VPN)
NAT路由器的工作原理
网络地址转换的过程
内部主机A用本地地址IPA和互联网上主机B通信所发送的数据报必须经过NAT路由器。
NAT路由器将数据报的源地址IPA转换成全球地址IPG,并把转换结果记录到NAT地址转换表中,目的地址IPB保持不变,然后发送到互联网。
NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是IPB而目的地址是IPG。
根据NAT转换表,NAT路由器将目的地址IPG转换为IPA,转发给最终的内部主机A。
可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:
NAT地址转换表举例
网络地址转换NAT
网络地址与端口号转换NAPT
NAPT地址转换表
NAPT把专用网内不同的源IP地址,都转换为同样的全球IP地址。但对源主机所采用的TCP端口号(不管相同或不同),则转换为不同的新的端口号。因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机。
MPLS特点
基本工作工程
IP分组的普通转发
MPLS协议的基本原理
在MPLS域 的入口处,给每一个IP数据报打上固定长度“标记”,然后对打上标记的IP数据报使用硬件进行转发。
采用硬件技术对打上标记的IP数据报进行转发就称为标记交换。
“交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(数据链路层)用硬件进行转发。
MPLS域(MPLS domain)是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标记交换路由器LSR(Label Switching Router)。
LSR同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR需要使用路由选择功能构造转发表。
MPLS的基本工作过程
MPLS域中的各LSR使用专门的标记分配协议LDP交换报文,并找出标记交换路径LSP。各LSP根据这些路径构造出分组转发表。
分组进入到MPLS域时,MPLS入口结点把分组打上标记,并按照转发表将分组转发给下一个LSR。给IP数据报打标记的过程叫做分类(classification)。
一个标记仅仅在两个标记交换路由器LSR之间采有意义。分组每经过一个LSR,LSR就要做两件事:一是转发,二是更新的标记,即把入标记更换成为出标记。这就叫做标记对换(label swapping)。
项目含义:从入口0收到一个入标记为3的IP数据报,转发时,应当把该IP数据报从接口1转发出去,同时把标记对换为1。
当分组离开MPLS域时,MPLS出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。
上述的这种“由入口LSR确定进入MPLS域以后的转发路径”称为显式路由选择”(explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。
转发等价类FEC
“按照同样方式对待”表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
FEC用于负载平衡
流量工程
软件定义网络SDN(Software Defined Network)
远程控制器:计算出最佳的路由,在每一个路由器中生成其正确的转发表。
路由器:查找转发表,转发分组。