第四章 网络层
4.1.1 网络层的几个重要概念
1).网络层的位置及功能
网络层是OSI参考模型中的第三层,TCP/IP的第二层
网络层使用数据链路层的服务,向运输层的“端一端”传输连接提供分组的“点-点”的传送服务

2).网络层的任务
- 网络层的任务是将源计算机发出的信息经过适当的路径送到目的计算机
- 在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务
- 网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
- 数据透明传送:网络层屏蔽各种不同类型网络之间的差异,实现互连
4.1.2 网络层提供的两种服务
1).虚电路服务(Virtual circuit)
- 面向连接的、可靠的数据传输服务。与电路链接类似,
占用此条虚电路上的所有资源。 - 虚电路——在两个终端设备的逻辑或物理端口之间,通过分组交换网建立的
双向、透明传输信道(端点间的逻辑链路) - 建立虚电路,以保证双方通信所需的一切网络资源。如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。
2).数据报服务(Datagram)
无连接的、不可靠的数据传输服务
数据报(packet,或称包、分组)——通过网络传输的数据的基本单元,包含一个报头和数据本身,其中报头描述了数据的目的地以及和其它数据之间的关系
每个数据报自身携带有足够的信息,它的传送是被单独处
理的,网络节点为每个数据报作路由选择。
3).因特网采用的设计思路 *
- 网络层向上只提供简单灵活的、
无连接的、尽最大努力交付(best effort deliver)的数据报服务。- 无连接:网络在发送分组时
不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。 - 尽最大努力交付:
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。因此,也称“不可靠的交付”(unreliable delivery)
- 无连接:网络在发送分组时
4).数据报方式关键技术 *
- 寻址:网络地址将采用统一的编址方法,它可以实现跨互联网络的寻址能力
- 路由:端系统和路由器维护路由表:
<目的网络,下一个路由器> - 分组生命期:防止分组占用带宽(站点计数 、时间戳)
- 差错控制和流量控制:允许路由器和接收端限制它们接收数据的速率。
- 分段和重组:
- 透明分段法:某个数据报分出的若干个数据报经过一个路由器重组,分段对于后面的网络完全透明。
- 不透明分段法:中间路由器不重组数据报分段,由接收端主机负责重组该数据报。
4.1.3 网络层的两个层面

1).数据层面
- 路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。
- 独立工作;采用硬件进行转发,快。
2).控制层面
- 根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。
- 许多路由器协同动作;采用软件计算,慢。
4.2 网际协议IP
1).网际协议IP
- 网际协议 IP (Internet Protocol)是一种包含寻址信息、控制信息,为网络中的包获取选择路径的网络层协议。
- ]IP是 TCP/IP 体系中两个最主要的协议之一。
- 当前 IP 协议有两种版本:IPv4(RFC791)和IPv6(RFC2460)
- IP 协议同样都适用于 LAN 和 WAN 通信。

2).IP 协议的两个基本任务
寻址:
- 提供无连接的和最有效的数据包传送
- IP可以根据数据包包头中包括的目的地址将数据报传送到目的地址,在此过程中IP负责选择传送的道路,这种选择道路称为路由功能
管理分割数据片:
- 提供数据包的分割及重组以支持不同最大传输单元(MTU)大小的数据连接。
3).IP协议的特点
- IP协议是一种
不可靠、无连接的数据报传送服务协议 - IP协议是
点-点的网络层通信协议 - IP协议向运输层屏蔽了物理网络的差异
4.3 虚拟互连网络/ 互联网
1).网络互连
所谓虛拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。目的:将两个或者两个以上具有独立自治能力的计算机网络通过一个网络互连部件连接起来,实现数据流通,扩大资源共享的范围,或者容纳更多的用户。
互连所需的中间设备
- 中间设备又称为中间系统或中继(relay)系统
- 物理层中继系统:中继器或转发器(repeater)、集线器
(hub) 。 - 数据链路层中继系统:网桥 (bridge)、交换机(switch) 。
- 网络层中继系统:路由器(router)。
- 网络层以上的中继系统:网关(gateway)。
网络互连使用路由器
- 物理层中继系统:中继器或转发器(repeater)、集线器
使用转发器、网桥或交换机不称为网络互连,仅把一个网络扩大了,仍然是一个网络。
- 路由器的功能
- 路由器的主要任务是把通信引导到目的网络,然后到达特定的节点。
- 中间节点路由器在网络中传输时,提供
报文的存储和转发。同时根据当前的路由表所保持的路由信息情况,选择“最好的路径”传送报文。
- 中间设备又称为中间系统或中继(relay)系统
分组在互联网中的传送

- 如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。
IP 网的意义
- 使用IP协议的虚拟互连网络可简称为IP网。
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
4.4 IP 地址
1).IP 地址及其表示方法
- IP地址(Internet Protocol Address)是一种在因特网上给主机(或路由器)编址的方式,也称为网际协议地址。
- IP 地址的编码:32位的二进制标识符(IPV4)。
在 Internet网络中,IP地址唯一地标识了一台计算机或路由器(的接口)- IP地址现在由因特网名字与号码指派公司 ICANN(Internet Corporation for Assigned Names andNumbers)进行分配,总部设在美国,由美国政府通过委托合同授权的形式来管理。
2).IP 地址表示方法
点分十进制记法

3).IP 地址的分级结构
每一类地址都由两个固定长度的字段组成,其中一个字段是
网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。两级的 IP 地址可以记为:
IP 地址 ::= { <网络号>, <主机号>},其中“ ::= ” 代表“定义为”
IP地址在整个互联网范围内是唯一的。IP 地址指明了连接到某个网络上的一个主机。IP地址是一种分等级的地址结构。分两个等级的好处是:
- IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了IP地址的管理;
- 路由器
仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
4).IP 地址的分类结构
- 址类型的判断:求出第一个字段的二进制数,看其最高一位(0)、最高两位(10) 、最高三位(110)或四位(1110、1111)


A类地址:
- A类网络总数:27=128
- 全部地址范围: 0.0.0.0 ~127.255.255.255
- 第一个可用网络号:1;网络地址:1.0.0.0
- 最后一个可用网络号:126 ;网络地址:126.0.0.0
- 每个网络中全部IP地址范围:*.0.0.0 ~*.255.255.255
- 每个网络中全部IP地址总数:224=16777216
- 每个网络中可用IP地址范围:*.0.0.1 ~*.255.255.254
- 每个网络中可用IP地址总数: 224-2=16777214
A类地址网络号字段第一个必须为0,若后续的网络号字段全部为0(即00000000)的IP地址是个保留地址,意思是“
本网络”;若后续网络号为全1(即01111111)的IP地址是个保留地址作为本地软件环回测试本主机的进程之间的通信之用。B类地址:
- B类网络总数:214=16384
- 全部地址范围: 128.0.0.0 ~191.255.255.255
- 第一个可用网络号:128.0 ;网络地址:128.1.0.0
- 最后一个可用网络号:191.255 ;网络地址:191.255.0.0
- 每个网络中全部IP地址范围:*..0.0 ~.*.255.255
- 每个网络中全部IP地址总数:216=65536
- 每个网络中可用IP地址范围:*..0.1 ~.*.255.254
- 每个网络中可用IP地址总数: 216-2=65534
B类网络地址128.0.0.0是不可指派的,故可以指派的B类网络数为214-1个;
C类地址:
- C类网络总数:221=2097152
- 全部地址范围: 192.0.0.0 ~223.255.255.255
- 第一个可用网络号:192.0.0 ;网络地址:192.0.1.0
- 最后一个可用网络号:223.255.255 ;网络地址:223.255.255.0
- 每个网络中全部IP地址范围:*...0 ~..*.255
- 每个网络中全部IP地址总数:28=256
- 每个网络中可用IP地址范围:*...1 ~..*.254
- 每个网络中可用IP地址总数: 28-2=254
C类网络地址192.0.0.0是不可指派的,故可以指派的B类网络数为221-1个;
5).IP 地址的一些重要特点
- 实际,上IP地址是标志一个主机(或路由器)和一条链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必.须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为
多归属主机(multihomed host)。 - 由于一个路由器至少应当连接到两个网络(这样它才能将IP数据报从一个网络转发到另一个网络) ,因此
一个路由器至少应当有两个不同的IP地址。 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id。- 所有分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是
平等的。
- 当一个主机同时连接到两个网络上时,该主机就必.须同时具有两个相应的IP地址,其网络号net-id必须是不同的。这种主机称为
6).互联网中的IP地址
为什么要使用IP地址
- 主机要在物理网络上通信,最终必须依靠物理地址。
- 统一物理地址的表示方法不现实
- IP地址屏蔽各种物理网络的地址差异,即互联网对各种物理网络地址的“统一”通过IP地址在IP层完成。
- IP地址从字面看,它具有定位的作用(
网络定位),,定位原则取决于它的分配原则,IP地址查询就是基于此。 - 在网络层使用统一的、 抽象的IP地址, 研究主机-主机、主机-路由器、路由器路由器之间的通信。
IP地址与MAC地址
- 尽管互连在一起的网络的MAC地址体系各不相同,但IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
- 只要我们在网络层.上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。
- 实现IP通信时使用了两个地址:
- IP地址(网络层地址)
- MAC地址(数据链层地址)
7).地址解析协议ARP
ARP的要点
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
ARP协议就是根据IP地址获取物理地址的一个TCP/ IP协议。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。每一个主机都设有一个
ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。< IP address; MAC address; TTL >
TTL (Time To Live):地址映射有效时间,超过TTL的地址映射会被删除,(一般为20分钟)。
ARP高速缓存的作用
以主机A向主机B发送报文时的地址解析为例- 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP 地址到硬件地址的映射写入ARP请求分组。
- 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。当主机B以后向A发送数据报时就方便了。
- 在整个ARP工作期间,不但计算机A得到了计算机B的IP地址与MAC地址的映像关系,而且计算机B和收到此ARP请求分组的其他及其也都得到了计算机A的IP地址与MAC地址的映像关系。
ARP协议的工作过程
以源主机A与目的主机B在同一网络中为例(1)主机A检查自己高速Cache中的ARP表中是否存有主机B的IP地址与MAC地址的映像关系,如果找到,则完成ARP地址解析;如果没有找到,则转下一步;
(2)主机A广播含有自身IP地址与MAC地址映像关系的请求信息包(目的MAC地址是FF-FF-FF-FF-FF-FF),请求解析主机B的IP地址与MAC地址映像关系;
(3)包括B在内的所有主机接收到A的请求信息,然后将A的IP地址与MAC地址的映像关系存入各自的ARP表中;
(4)B发送ARP响应报文,通知自己的IP地址与MAC地址的对应关系;
(5)A收到B的响应信息,并将B的IP地址与MAC地址的映像关系存入自己的ARP表中,从而完成B的ARP地址解析。

使用ARP的典型情况
(1)源主机与目的主机在同一网络中
发送方是主机,要把IP数据报发送到本网络上的另一个主机。(以A→ B通信为例)
- 这时源主机(A)用ARP找到目的主机(B)的硬件地址。
- 源主机(A)向目的主机(B)发送IP数据报,A→B通信结束
(2) 源主机与目的主机不在同一网络中
发送方是主机,要把IP数据报发送到另一个网络上的主机。(以A→B通 信为例)第一阶段:
- 源主机(A)用ARP找到本网络.上的一个路由器的硬件地址。
- 源主机(A)将报文发给此路由器(R1)剩下的工作由这个路由器(R1)来完成。
第二阶段:
路由器的地址解析过程,有两种情况:
情况①:直接交付一发送方是路由器R1,要把IP数据报转发到本网络上的一个目的主机(B)。
- 这时路由器R1用ARP找到目的主机(B)的硬件地址,然后按此硬件地址向目的主机(B)转发报文。
- A→B通信结束。
情况②:间接交付一发送方是路由器R1,要把IP数据报转发到另一个网络上的一个目的主机(B)。这时路由器R1用ARP找到本网络上的另一个路由器R2的硬件地址,然后按此硬件地址向R2转发报文。
- 剩下的工作由路由器R2来完成。
- 如此继续,直至报文转发到目的主机(B),A→B通信
结束。
4.5 IP 数据报的格式
1).简单格式
- 一个IP数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。- 在首部的固定部分的后面是一-些可选字段,其长度是可变的。
2).详细格式

第1字段:版本(4位)——指出 IP 协议的版本,目前的 IP协议版本号为 4 (即 IPv4)。
第2字段:首部长度(4位)——指明IP数据报首部长度是多少个单位,一个单位代表4个字节。
- 即:
IP数据报首部实际长度=首部长度字段的值×4个字节。例如,某IP报文首部字段中的数据是“1100”,则该IP报文首部实际长度是“12×4=48”个字节,其中,“固定部分”20个字节,“可选+填充”部分28个字节 - 也即:
首部长度字段的值=IP数据报首部实际长度的字节数/4。例如,某IP报文首部实际长度是24个字节,则首部长度应填入数据“0110”。 - 该字段可表示的
最大数值是1111,因此IP首部最多长“15×4=60” 个字节。其中,“固定部分”20个字节,“可变部分“40个字节。这个字段的最小值是0101,即只有“固定部分的5×4=20 个字节”
- 即:
第3字段:区分服务(8位,第2个字节)——用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。
目前,几乎所有路由器都忽略服务类型域。第4字段:总长度(16 位,第3-4字节)——指出数据报总长度,即
首部长度+数据部分长度,单位为字节。因此数据报的最大长度为216-1= 65535 个字节。总长度必须不超过最大传送单元 MTU。例如
- (1)某数据报首部长20B,数据长60B,则总长度字段应填入80的二进制数0000000001010000
- (2)某数据报首部长度字段值是6,总长度字段值是80,则数据部分长度为80-4×6=56(字节)
第5字段:标识(占16 位,第32—47位,即第5-6字节)——是一个计数器,用来产生数据报的标识。数据报分片时使用,标识分片是属于哪个数据报的 。
第6字段:标志(3 位)——
目前只有后两位有意义。- 标志字段的最低位是 MF (More Fragment)。
MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。 - 标志字段中间的一位是 DF (Don’t Fragment) 。
只有当DF=0 时才允许分片。
- 标志字段的最低位是 MF (More Fragment)。
**第7字段:片偏移(13 位)**——指出较长的分组在分片后,某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。即,某片在原分组中的起始位置(字节数)=8×片偏移字段的值,也即,
片偏移字段的值=某片在原分组中的起始位置(字节数)/8例如,一个IP数据片的片偏移字段的值是50,则该IP数据片的数据部分的第一个字节是原IP数据报的第50×8 =400个字节;
反之,如果某数据片第一个字节是原IP数据报的第640个字节,则片偏移字段的值应为640/8=80(对应的二进制数)
最大片偏移=213 ×8 B=64KB

**第8字段:生存时间(8 位,第9字节)**——记为TTL(Time ToLive)
指出数据报在网络中可通过的路由器数的最大值,每经过一个路由器TTL值就减1。- 生存时间字段的最大值=28-1=255。
第9字段:协议(8 位,第10字节)——指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
**第10字段:首部检验和(16 位,第11-12字节)**——
只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的反码运算。


第11、12字段:源地址和目的IP地址(各占 4 字节,第13-16字节、第17-20字节)——指出发送节点(源)的IP地址和接收节点(目的)的IP地址。
IP 数据报首部的可变部分是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。但实际上这些选项很少被使用
4.6.1 CIDR 地址
- CIDR地址:它的正式名字是
无分类域间路由选择 CIDR(Classless Inter-Domain Routing)。(无分类编址) - CIDR 消除了传统的 A 类、B 类和 C 类地址及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间
- CIDR使用各种长度的“
网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
1).无分类的两级编址
IP地址 ::= {<网络前缀>, <主机号>}
分类IP地址的网络号部分此时改称为
网络前缀,仍旧用来标识连入Internet的一个网络的网络编号
2).CIDR记法:
CIDR 使用“斜线记法” ,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数
如:128.14.32.0/20
- /20表示该地址的前20个比特是网络号,所以128.14.32.0/20的网络号(网络前缀)是“10000000 00001110 0010”
3).CIDR地址块
网络前缀都相同的、连续的IP地址就组成了一个“CIDR地址块”
说明:
每个CIDR地址块中的
地址数一定是2的整数次幂。每个CIDR地址块的
起始网络地址一定是2的整数次幂或2的整数次幂的倍数,与地址块个数有关例如,某单位需要4个C类网络地址,则CIDR地址块的起始地址可以是:*..0.0、..4.0、..8.0、..12.0、..16.0、.*.20.0 等等
全 0 和全 1 的主机号地址一般不使用
全“0”的主机号代表网络地址- 全“1”的主机号代表网络内广播地址
4).路由聚合
路由聚合的方法:把一组路由汇聚为一个单个的路由,即用一个IP地址代表一组IP地址,
例:计算能同时覆盖 198.1.12.0/24,198.1.13.0/24,198.1.14.0/24,198.1.15.0/24 这四条路由的聚合地址
解:- 198.1.12.0/24:11000110.00000001.00001100.00000000
- 198.1.13.0/24:11000110.00000001.00001101.00000000
- 198.1.14.0/24:11000110.00000001.00001110.00000000
- 198.1.15.0/24:11000110.00000001.00001111.00000000
- 聚合地址: 11000110.00000001.00001100.00000000/22
即:198.1.12.0/22
路由聚合的目的:一个 CIDR 地址块可以表示多个网络地址,路由聚合就是让路由选择协议能够用一个地址通告这多个网络地址,从而使得路由表中的一个项目可以表示多个原来传统分类地址的路由,从而
缩小了路由表的规模,增加了网络的可扩展性。
6).超网
前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址,这些 C 类地址合起来就构成了一个
超级网络(超网)。这个超网对外通告一个聚合路由。例如:
- 前缀长度为23位,包含了2(24-23)=2个C类网络(即C类地址块),构成了一个含有256×2=512个IP地址的超级网络(超网),聚合路由为*.*.*0.0/23
4.7.1 划分子网
1).划分子网的原因
- 在 ARPANET 的早期,IP 地址的设计确实不够合理。
- IP 地址空间的利用率有时很低。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
- 从1985年起在 IP地址中又增加了一个“子网号字段”,这种做法叫作
划分子网(subnetting)。 - 划分子网已成为因特网的正式标准协议。
2).划分子网的基本思路
划分子网
纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。从“主机号字段”借用若干位作为“
子网号 subnet-id”,而主机号 host-id 也就相应减少了若干个位。
3).子网掩码
从一个IP数据报的首部并
无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用
子网掩码(subnet mask)可以找出IP地址中的子网部分。规则:
- 子网掩码长度=32位
- 某位=1::IP地址中的对应位为网络号和子网号
- 某位=0::IP地址中的对应位为主机号
(IP地址) AND (子网掩码) = 网络地址

子网掩码是一个网络或一个子网的重要属性。- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
- 若一个路由器连接在两个子网.上就拥有两个网络地址和两个子网掩码。
4).定长子网的划分
5).变长子网的划分
4.7.2 划分子网后的分组转发
判断子网掩码是否一致
判断网络地址是否一样


