一、网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务:“面向连接”还是“无连接” ?这一问题曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
1. 虚电路服务(可靠交付,面向连接)
- 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。

2. 数据报服务(不可靠交付,无连接)
- 不需要建立连接、独立选经、无编号、无质量承诺。

- 因特网的设计思路:
网络层向上只提供简单灵活的、无连接的、尽最大努力的服务,即数据报服务;- 简单灵活是指每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号);
- 无连接是指网络在发送分组时不需要先建立连接;
- 尽最大努力交付是指网络层不提供服务质量的承诺,即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
- 尽最大努力交付的好处
- 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
- 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。
- 网络的造价大大降低,运行方式灵活,能够适应多种应用。
3. 两种服务对比

二、网际协议 IP
- 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有三个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)

1. 虚拟互连网络
- 网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继(relay)系统。
- 物理层中继系统:转发器(repeater)。
- 数据链路层中继系统:网桥或桥接器(bridge)。
- 网络层中继系统:路由器(router)。
- 网桥和路由器的混合物:桥路器(brouter)。
- 网络层以上的中继系统:网关(gateway)。
- 互连网络 和 虚拟互连网络

- 分组在互联网中的传送

2. 分类的 IP 地址
- IP 地址及其表示方法
- 分类的IP地址:这是最基本的编址方法,在1981年就通过相应的标准协议。(两级的IP地址可以记为:
IP 地址 ::= { <网络号>, <主机号>}) - 子网的划分:这是对最基本的编址方法的改进,其标准[RFC950]在1985 年通过。
- 构成超网:这是比较新的无分类编址方法。1993年提出后很快就得到推广应用。
- 分类的IP地址:这是最基本的编址方法,在1981年就通过相应的标准协议。(两级的IP地址可以记为:
- IP 地址中的网络号字段和主机号字段

- 点分十进制记法

- IP 地址的指派范围

- IP 地址的一些重要特点
- IP 地址是一种分等级的地址结构。每一个 IP 地址都由网络号和主机号两部分组成。
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id。在网络层,一个网络是指具有相同网络号net-id的主机集合
- 所有分配到网络号net-id的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
- 分两个等级的好处
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
- 注意:
- 在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。
- 路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址。
- 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。

3. IP 地址与硬件地址
- IP 地址与硬件地址的区别

4. 地址解析协议 ARP 和逆地址解析协议 RARP
- 地址解析协议 ARP
- 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
- ARP协议完成IP地址到Mac地址(物理地址)的映射,它位于网络层。
- 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

5. IP 数据报的格式
- IP 数据报的格式
- 版本——占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
- 区分服务——占 8 位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 。
- 总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
- 标识(identification)——占 16 位,它是一个计数器,用来产生数据报的标识。
- 标志(flag)——占 3 位,目前只有前两位有意义。
- 标志字段的最低位是 MF(More Fragment)。MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。
- 标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF = 0 时才允许分片。
- 片偏移——占13 位,较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
- 生存时间——占8 位,记为 TTL (Time To Live),数据报在网络中可通过的路由器数的最大值。
- 协议——占8 位,字段指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给哪个处理过程。
- 首部检验和——占16 位,字段只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
- 源地址——占32位(4字节)。
- 目的地址——占32位(4字节)。

- IP 数据报首部可变部分
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
- 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。
- 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
6. IP 转发分组的流程
- 基于路由表的分组转发原理
- 根据目的网络地址就能确定下一跳路由器。
- 通过在路由器上的一次或多次间接交付和一次直接交付,实现源主机到目的主机的跨网络的通信。

- IP 分组转发算法
- (1) 从数据报的首部提取目的主机的IP地址D, 得出目的网络地址为N。
- (2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D,转发成功,转(7);否则是间接交付,执行(3)。
- (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
- (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
- (5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
- (6) 报告转发分组出错。
- (7) 结束 。
三、划分子网和构造超网
1. 划分子网
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干位。
IP地址 ::= {<网络号>, <子网号>, <主机号>} - 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号subnet-id 找到目的子网。
- 后就将 IP 数据报直接交付目的主机。

子网掩码
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。

网络地址 = ( IP 地址)AND (子网地址)(“与”运算)
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
A类、B类、C类 IP地址的默认子网掩码

2. 使用子网时分组的转发
- 在不划分子网的两级IP地址下,从 IP 地址得出网络地址是个很简单的事。
- 在划分子网的情况下,从 IP 地址中却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 在划分子网的情况下路由器转发分组的算法
- (1) 从收到的分组的首部提取目的 IP 地址 D。
- (2) 判断是否为直接交付:
对路由器直接相连的网络逐个进行检查:先用各网络(与路由器直接相连的网络)的子网掩码和 D 逐位相“与”,判断其结果是否与相应的网络地址匹配?- 若匹配,则将分组直接交付,结束;
- 否 则,就是间接交付,执行(3);
- (3) 判断是否为主机路由:
若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明下一跳路由器;否则,执行(4); - (4) 判断是否有目的网络:
对路由表中的每一行(目的网络地址,子网掩码,下一条地址),用其中的子网掩码和 D 逐位相“与”,判断其结果与该行的目的网络地址匹配?- 若匹配,则将分组传送给该行指明的下一跳路由器;
- 否 则,执行(5);
- (5) 判断是否为默认路由:
若路由表中有一个默认路由:则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。 - (6) 报告转发分组出错。
3. 无分类编址 CIDR(构造超网)
- 无分类的两级编址的结构是:
IP地址 ::= {<网络前缀>, <主机号>} - CIDR 使用“斜线记法”,它又称为CIDR记法。


- 注意的问题
- 网络前缀的比特数不一定是8的整数倍;
- 主机地址不能用全“0”或“1”这两个组合;
- 要正确区分CIDR的单地址与CIDR的地址块;
- CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”;
- 一个CIDR的地址块是由地址块的起始地址(地址块中地址数值最小的那个)和地址块中所包含的地址总数来确定的;
- CIDR的地址块

- 路由聚合
- 一个 CIDR 地址块可以表示很多地址,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由,这种地址的聚合常称为路由聚合。
- 路由聚合也称为构成超网(supernetting)。
- CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
- 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
- CIDR的两个主要特点
- 它消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号,因而可以更加有效地分配 IPv4 的地址空间。并且CIDR地址从三级编址(使用子网掩码)又回到了两级编址。延缓了IPv4地址耗尽时间。
- 相对传统的分类IP编址,它具有构成超网的表示能力,即一个地址块能够表示原分类地址中多个B类或C类地址,这可以有效地减少路由表的容量,提高互联网的转发性能。
- 最长前缀匹配
- 使用二叉线索树查找路由表
四、网际控制报文协议 ICMP
- ICMP 报文的格式

1. ICMP 报文的种类
- ICMP 差错报告报文有五种:
- 终点不可达——主机或路由器无法交付数据报时就向源站点发送终点不可到达报文;
- 源点抑制——当主机或路由器由于拥塞而丢弃数据报时,向源点发送源点抑制报文,以便源点放慢发送速度;
- 时间超过——路由器收到生存时间为零的数据报时,就丢弃该数据报并向源点发送时间超过报文;终点在预先规定的时间内不能收到一个数据报的全部数据片时,则将以收到的数据报片都丢弃,并向源点发送时间超过报文;
- 参数问题——当路由器或目的主机收到数据报的首部中有字段的值不正确时,则丢弃该数据报,并向源点发送参数问题报文;
- 改变路由(重定向)——路由器把改变路由报文发送给主机,以便让主机知道下次应将数据报发生给另外的路由器
- ICMP 询问报文有两种 :
- 回送请求和回答报文
- 时间戳请求和回答报文
2. ICMP 的应用举例(PING)
- PING 用来测试两个主机之间的连通性。
- PING 使用了 ICMP 回送请求与回送回答报文。
- PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
五、因特网的路由选择协议
1. 有关路由选择协议的基本概念
- 因特网采用分层次的路由选择协议的原因:
- 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间;
- 主机与网络的动态变化不可能及时反映到全部的路由器中,各路由器中的路由表就会在一段时间内丧失一致性;
- 而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和;
- 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。
- 自治系统(Autonomous System , AS):
- 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量,以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

- 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量,以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 内部网关协议 IGP (Interior Gateway Protocol) 即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
- 外部网关协议 EGP (External Gateway Protocol) 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
2. 内部网关协议 RIP
- 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。
- 工作原理
- RIP 是一种分布式的基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
- RIP 协议的三个要点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。
- 距离向量算法
- RIP2 协议的报文格式

- RIP 协议的优缺点
- 实现简单,开销较小。
- 好消息传播的快,坏消息传播的慢。
- 适合小规模的网络,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
3. 内部网关协议 OSPF
- 它是为了克服RIP协议的缺点,1989年专家们开发的一种内部网关路由协议;
- OSPF 协议最主要的特征是使用分布式的链路状态协议;
- 工作原理
所有的路由器均需执行路由信息交换、链路状态数据库同步和路由计算等三个任务,共同完成自治域内路由表的生成。 - OSPF 的区域(area)
- 分布式OSPF是将自治系统进行了区域划分,形成具有层次结构的自治系统。
- 区域划分的动机是为了使 OSPF协议 能够用于规模很大的网络。
- 区域划分的方法是分层次的区域划分。
- 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
- OSPF协议语法

- OSPF 的五种分组类型
- 类型1,问候(Hello)分组。
- 类型2,数据库描述(Database Description)分组。
- 类型3,链路状态请求(Link State Request)分组。
- 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
- 类型5,链路状态确认(Link State Acknowledgment) 分组。
4. 外部网关协议 BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。
- 为什么要引入外部网关协议?
- 因特网的规模太大,使得自治系统之间路由选择非常困难。
- 自治系统之间的路由选择必须考虑有关策略。
- 边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
- BGP 采用路径向量(path vector)路径选择协议
5. 路由器的构成
路由器的结构
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
- 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。

“转发”和“路由选择”的区别
- “转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
六、IP 多播
七、虚拟专用网 VPN 和网络地址转换 NAT
版权声明:本文为pary__for原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。