本文已参与「新人创作礼」活动,一起开启掘金创作之路。
4.1 网络层提供的两种服务
(1)虚电路服务:使用面向连接的通信方式
①虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
②请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
(2)数据报服务:网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。不提供服务质量的承诺。
①由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
②如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
(3)两者的对比
4.2 网际协议IP
与 IP 协议配套使用的还有三个协议:
(1)地址解析协议 ARP (Address Resolution Protocol)
(2)网际控制报文协议 ICMP (Internet Control Message Protocol)
(3)网际组管理协议 IGMP (Internet Group Management Protocol)
4.2.1 虚拟互连网络
(1)中间设备 ①物理层中继系统:转发器 (repeater)。 ②数据链路层中继系统:网桥 或 桥接器 (bridge)。 ③网络层中继系统:路由器 (router)。 ④网络层以上的中继系统:网关 (gateway)。
(2)网络互连使用路由器 网络互连都是指用路由器进行网络互连和路由选择。
(3)互连网络与虚拟互连网络
利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。
4.2.2 分类的IP地址
(1)IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。由互联网名字和数字分配机构ICANN进行分配。
(2)分类IP地址
(3)各类 IP 地址的网络号字段和主机号字段
(3)常用的三种类别的 IP 地址
(4)一般不使用的特殊的 IP 地址
(5)IP 地址的一些重要特点
①IP 地址是一种分等级的地址结构。
②实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
③用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
④所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
(6)互联网中的IP地址
①在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。图中的网络号就是 IP 地址中的 net-id。
②路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址。
③两个路由器直接相连的接口处,可指明也可不指明IP地址。如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明IP地址。
4.2.3 IP地址与硬件地址
(1)IP 地址与硬件地址是不同的地址。硬件地址(或物理地址) 是数据链路层和物理层使用的地址。IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。
(2)从协议栈的层次上看数据的流动
4.2.4 地址解析协议ARP
(1)ARP 作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
(2)地址解析协议 ARP 要点
①每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
②当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
(3)ARP 高速缓存的作用
存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
(4)ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
(5)使用 ARP 的四种典型情况
①发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 (→)
②发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 (→)
③发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。 (→)
④发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。 (→)
4.2.5 IP数据报的格式
一个 IP 数据报由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
(1)固定部分
①版本:占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。
②首部长度:占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。
③区分服务:占 8 位,用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 。
④总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元MTU。
⑤标识:占 16 位,它是一个计数器,用来产生 IP 数据报的标识。
⑥标志:占 3 位,目前只有前两位有意义。标志字段的最低位是 MF。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。标志字段中间的一位是 DF。只有当 DF=0 时才允许分片。
⑦片偏移:占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
IP 数据报分片:
题目:一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
解答:因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。
⑧生存时间:占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
⑨协议:占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程。
IP 协议支持多种协议,IP 数据报可以封装多种协议 PDU:
⑩首部检验和:占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
IP 数据报首部检验和的计算采用 16 位二进制反码求和算法:
⑪源地址和目的地址都各占 4 字节。
(2)可变部分 IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。 选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被使用。
4.2.6 IP层转发分组的流程
(1)在路由表中,对每一条路由,最主要的是:目的网络地址,下一跳地址
(2)根据目的网络地址就能确定下一跳路由器,这样做的结果是:IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。
(3)特定主机路由 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
(4)默认路由
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
只要目的网络不是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。
(4)IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
(5)路由器分组转发算法 ①从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。 ②若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 ③。 ③若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行④。 ④若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 ⑤。 ⑤若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 ⑥。 ⑥报告转发分组出错。
(6)路由表 ①路由表没有给分组指明到某个网络的完整路径。 ②路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。 ③在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。 ④这样一步一步地查找下去,直到最后到达目的网络。
4.3 划分子网和构造超网
4.3.1 划分子网
(1)划分子网的原因——IP地址设计不合理:
①IP 地址空间的利用率有时很低。
②给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
③ 两级的 IP 地址不够灵活。
(2)划分子网的基本思路
①凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
②然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
③最后就将 IP 数据报直接交付目的主机。
(3)子网掩码
(IP 地址) AND (子网掩码) =网络地址
(4)默认子网掩码
4.3.2 使用子网时分组的转发
(1)在划分子网情况下路由器转发分组的算法 ①从收到的分组的首部提取目的 IP 地址 D。 ②先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行③。 ③若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 ④。 ④对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行⑤。 ⑤若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行⑥。 ⑥报告转发分组出错。
4.3.3 无分类编址CIDR(构造超网)
(1)CIDR 最主要的特点 ①CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。 ②CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。 ③IP 地址从三级编址(使用子网掩码)又回到了两级编址。
(2)无分类的两级编址
(3)路由聚合
①一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
②路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
③路由聚合也称为构成超网
(4)最长前缀匹配 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配
(5)使用二叉线索查找路由表 为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索。
4.4 网际控制报文协议ICMP
ICMP 是互联网的标准协议。ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。但 ICMP 不是高层协议,而是 IP 层的协议。
4.4.1 ICMP报文的种类
(1)ICMP 差错报告报文
①终点不可达
②时间超过
③参数问题
④改变路由(重定向)
(2)不应发送 ICMP 差错报告报文的几种情况
①对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
②对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
③对具有多播地址的数据报都不发送 ICMP 差错报告报文。
④对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
(3)ICMP 询问报文 ①回送请求和回答报文 ②时间戳请求和回答报文
4.4.2 ICMP的应用举例
(1)PING 用来测试两个主机之间的连通性。PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。 (2)tracert用来跟踪一个分组从源点到终点的路径。它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。
4.5 互联网的路由选择协议
4.5.1 有关路由选择协议的几个基本概念
(1)理想的路由算法 ①算法必须是正确的和完整的。 ②算法在计算上应简单。 ③算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。 ④算法应具有稳定性。 ⑤算法应是公平的。 ⑥算法应是最佳的。 (2)自治系统 AS 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。 (3)内部网关协议 IGP 在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
(4)外部网关协议 EGP 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
4.5.2 内部网关协议RIP
(1)工作原理 路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。RIP 是一种分布式的、基于距离向量的路由选择协议。RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
(2)算法策略 ①RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 ②RIP 允许一条路径最多只能包含 15 个路由器。 ③ “距离” 的最大值为 16 时即相当于不可达 。可见 RIP 只适用于小型互联网。 ④RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
(3)协议特点 ①仅和相邻路由器交换信息。 ②交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 ③按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
(4)距离向量算法 Bellman-Ford 算法: ①设X是结点 A 到 B 的最短路径上的一个结点。 ②若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X ③和结点 X 到 B 的最短路径。
(5)RIP2 协议的报文格式
4.5.3 内部网关协议OSPF
(1)协议要点 ①向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。 ②发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 ③只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
(2)链路状态数据库 :由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。 ①这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的。 ②OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。 ③OSPF 的更新过程收敛得快是其重要优点。
(3)OSPF 的区域:为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
(4)OSPF 分组
4.5.4 外部网关协议BGP
BGP 是不同自治系统的路由器之间交换路由信息的协议。
4.5.5 路由器的构成
(1)路由器的结构
(2)交换结构
①通过存储器
②通过总线
③通过纵横交换结构
4.6 IPV6
4.6.1 IPv6的基本首部
(1)IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。 主要变化: ①更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。 ②扩展的地址层次结构。 ③灵活的首部格式。 IPv6 定义了许多可选的扩展首部。 ④改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。 ⑤允许协议继续扩充。 ⑥支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。 ⑦支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。 ⑧IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。
(2)一般形式
基本首部 (base header)和有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
(3)基本首部
4.6.2 IPv6的地址
(1)基本类型地址 单播 (unicast):传统的点对点通信。 多播 (multicast):一点对多点的通信。 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
(2)冒号十六进制记法 在 IPv6 中,每个地址占 128 位,地址空间大于 。为了使地址再稍简洁些,IPv6 使用冒号十六进制记法。
(3)零压缩 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。在任一地址中只能使用一次零压缩。
(4)IPv6 地址分类
4.6.3 从IPv4向IPv6过渡
(1)双协议栈
双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。
(2)隧道技术
在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。
4.6.4 ICMPv6
IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6。
后面好像不是重点,也没有怎么提到,VPN和NAT我们生活也用在用可能有点了解,后面的MPLS就真的没听说过了。以后回来复习再补。
4.7 IP多播
4.7.1 IP多播的基本概念
4.7.2 在局域网上进行硬件多播
4.7.3 网际组管理协议IGMP和多播路由选择协议
4.8 虚拟专用网VPN和网络地址转换NAT
4.8.1 虚拟专用网VPN
4.8.2 网络地址转换NAT
4.9 多协议标记交换MPLS
4.9.1 MPLS的工作原理
4.9.2 MPLS首部的位置与格式
小结
学习了网络层的一些基础的协议,相比之前几层的内容,明显增多。真的好多啊,断断续续看了整整一个月,后面还有好几节不是很重要就跳过了,太难了。