计算机网络技术(五)——网络互联技术

摘要

  1. 网络互联概述
  2. 网际协议(IP)
  3. IP 地址
  4. IP 路由
  5. IP 中的其他协议
  6. IPv6 协议

一、网络互联概述

要让分布在世界各地,不同类型、不同协议的网络相互连接起来,并且能流畅、高效地实现信息共享,就必须依靠网络互联技术来实现。网络互联技术是指所有能在物理和逻辑上实现不同网络相互连接的技术的总称。 实现异构网络互联的基本策略是协议转换和构建虚拟互联网络。协议转换实现异构网络之间数据分组的转换和转发;构建虚拟互联网络实现在异构网络间转发统一的虚拟互联网络的数据分组。IP网络就是此类虚拟互联网。

二、网际协议(IP)

2.1 IP概述

网际协议(Internet Protocol,IP)是TCP/IP体系中最重要的两个协议之一。正是由于IP的出现,才使分布在世界各地的不同类型的网络互联在一起。IP属于OSI参考模型的网络层,与之相关的还有3个协议:

  • 地址解析协议(Address Resolution Protocol,ARP)
  • 网际控制报文协议(Internet Control Message Protocol,ICMP)
  • 网际组管理协议(Internet Group Management Protocol,IGMP)

IP中最核心的技术是IP地址和IP路由。 IP地址是标识IP网中的计算机、路由器和子网分配设备的地址。 IP路由是指收集、计算和维护到达不同网络的路径信息,并存在路由表里。

IP的特点:

  1. IP是面向无连接的、不可靠的分组传输协议
  2. IP屏蔽了数据链路层和物理层的差异,使得数据的传输和转发更加方便
  3. IP是点对点式网络通信协议
2.2 IPv4协议报文格式

IPv4是第4版IP,是当前Internet网络主要使用的IP,其数据报的格式如下图所示。

IPv4数据报结构

各字段说明:

1)版本号:表示IP的版本号。IPv4的版本号字段值为0100(十进制4)。 2)首部长度:IP分组首部长度,包括可变长度的选项字段,以4B为单位。 3)区分服务:用来指示期望获得哪种类型的服务。只在网络提供区分服务时,才使用该字段。 4)总长度:IP分组的总字节数,包括首部和数据部分。 5)标识:标识一个IP分组。主要用途是在IP分组分片和重组过程中,用于标识属于同一源的IP分组。 6)标志位:用于IP分组的分片。DF是禁止分片标志,MF是更多分片标志。结构如下:

保留位 DF MF

7)片偏移:表示一个IP分组分片封装源IP分组数据的相对偏移量,即封装的数据从哪个字节开始。 8)生存时间(TTL):表示IP分组在网络中可以通过的路由器数(或跳数)。TTL = 0 时,路由器丢弃该IP分组。 9)协议:该IP分组封装的是哪个协议的数据包,IP利用该字段实现复用/解复用功能。 10)首部校验和:对IP分组首部的差错检测。 11)源IP地址/目的IP地址:发出/接收IP分组的主机IP地址。 12)选项字段:可以携带安全、源选路径、时间戳和路由记录等内容。 13)填充:用于补齐整个首部,符合32位对齐。

三、IP 地址

IP要连接世界各地的网络和主机,实现数据自由传输,必须要为每一个主机分配一个全球唯一的标识,这个唯一的标识称为IP地址。目前普遍使用的是IPv4版本,由一个32位的二进制数表示。IPv4经历了3各历史阶段:

1. 分类的IP地址 IP地址由两个字段构成:网络号和主机号。表示方式为:

IP地址:: = {<网络号>,<主机号>}

分为5种类别:A、B、C、D和E。

  • A类地址:网络号占8位,主机号占24位,其中网络号最高位固定为1。
  • B类地址:网络号占16位,主机号占16位,其中网络号最高2位固定为10。
  • C类地址:网络号占24位,主机号占8位,其中网络号最高3位固定为110。
  • D类地址:最高4位为1110,用于IP多播。
  • E类地址:最高4位为1111,作为保留使用。

这5类IP地址分配示意图如下。

IP地址分类示意图

随着网络规模的发展,这种分类方式会造成巨大的地址浪费,此外,两级IP地址也不够灵活,因此出现了三级IP地址结构,即子网划分。

2. 子网划分 子网划分的方法: 1)在原有两级IP地址结构基础上,从IP地址的主机号部分借用若干位作为子网号,则IP地址的结构变为了:网络号、子网号和主机号3部分。表示方式为:

IP地址 :: = {<网络号>,<子网号>,<主机号>}

2)一个拥有多个物理网络的单位,可以利用子网号,将物理网络划分为若干个子网。 3)从其他网络发送给某单位的某个主机的IP数据报,先根据其目的IP地址中的网络号找到单位网络相连接的路由器;该路由器再根据目的IP地址中的子网号找到相应的子网,最终将IP数据报发送给目的主机。

例如,某网络地址为215.195.45.0,将主机号中的3位作为子网号使用,剩下5位作为主机号,则最多可以划分出8个子网,分别是 215.195.45.0(子网号为000)、215.195.45.32(子网号为001)、215.195.45.64(子网号为010)、215.195.45.96(子网号为011)、215.195.45.128(子网号为100)、215.195.45.160(子网号为101)、215.195.45.192(子网号为110)、215.195.45.244(子网号为111), 每个子网的最大主机数为2^5 - 2 = 30个。

查找子网的方法是 ”子网掩码“ 。 子网掩码是一个32位二进制数,1对应IP地址中的网络号和子网号,0对应主机号。将IP地址与子网掩码按位进行逻辑与(AND)运算,可得子网的网络地址。

例如,IP地址为202.194.20.138,其子网掩码为 11111111 11111111 11111111 11100000,两者按位逻辑与运算为:

IP地址与子网掩码逻辑与运算

故该IP所在子网的网络地址为202.194.20.128。

3. 无分类编址CIDR 为了提高IP地址资源利用率,又出现了无分类编址方法,称为 无分类域间路由选择(Classless Inter-Domain Routing,CIDR) 。其基本思想为:

1)CIDR不再按A、B、C类进行IP区分,也不再使用子网号,它把32位的IP地址划分为两部分,前部分称为网络前缀,用来指明网络,后面部分用来指明主机。一种无分类的二级编址方式,表示方式如下:

IP地址 :: = {<网络前缀>,<主机号>}

在IP地址后面加上斜线 ”/“ 加网络前缀位数的方式来表示一个完整的IP地址,如: 202.194.20.138/27 2)网络前缀都相同的连续IP地址称为一个CIDR地址块,其中一个地址被确定,则整个地址块的最小地址和最大地址,以及地址块中的地址个数都可被确定。如IP地址为202.194.20.138/27,其前27位为网络前缀,后5位为主机号,则二进制表示为: 11001010 11000010 00010100 100 01010 (加粗的是前缀) 则该IP地址所在CIDR地址块中的最小地址为: 11001010 11000010 00010100 100 00000 (加粗的是前缀),即 202.194.20.128 最大地址为: 11001010 11000010 00010100 100 11111 (加粗的是前缀),即 202.194.20.159 该地址块中总共有2^5 = 32个地址。

CIDR优点: 路由聚合 : 可以用来简化路由器中的路由表,将众多的IP地址聚合在一个CIDR地址块中,从而减少路由表中的项目和路由器之间的信息交换; 灵活分配: 即从主机号中借用若干位来扩展网络前缀位数,从而灵活分配CIDR的地址块。

如210.32.16.0/20地址块,可以分为4个相等IP地址数的地址块,也可以分为不同IP地址数的地址块。

分为4个相同数量的IP地址数:

原始地址块 210.32.16.0/20 11010010 00100000 00010000 00000000
地址块1 210.32.16.0/22 11010010 00100000 00010000 00000000
地址块2 210.32.20.0/22 11010010 00100000 00010100 00000000
地址块3 210.32.24.0/22 11010010 00100000 00011000 00000000
地址块4 210.32.28.0/22 11010010 00100000 00011100 00000000

分为4个不同数量的IP地址数:

原始地址块 210.32.16.0/20 11010010 00100000 00010000 00000000
地址块1 210.32.16.0/21 11010010 00100000 00010000 00000000
地址块2 210.32.24.0/22 11010010 00100000 00011000 00000000
地址块3 210.32.28.0/23 11010010 00100000 00011100 00000000
地址块4 210.32.30.0/23 11010010 00100000 00011110 00000000

当路由表中包含同一个地址块内的多个子网地址,在使用CIDR路由查找时,应选择具有最长网络前缀的路由,称为 最长前缀匹配 。因为前缀越长,子网就越小,路由就越具体。

除了上面三种编址方式外,还有一些特殊的IP地址,它们称为私有地址或专用地址。这些地址只能在内部网络中使用。如下表:

私有地址类别 范围
A类 10.0.0.0 ~ 10.255.255.255(或10.0.0.0/8)
B类 172.16.0.0 ~ 172.31.255.255(或172.16.0.0/12)
C类 192.168.0.0 ~ 192.168.255.255(或192.168.0.0/16)

如果使用私有地址的主机与网络外的主机通信,必须进行地址转换,转换方法称为网络地址转换协议(Network Address Translation,NAT)。

四、IP路由

为IP数据报寻找合适的通信路径并且将其转发出去的过程称为IP路由,是由路由器实现的。

4.1 路由器的结构及功能

路由器结构分为输入/输出端口、交换结构和路由处理器。

1)路由处理器: 负责执行路由器指令,包括路由协议、路由运算、路由表更新维护。 2)输入端口: 根据接收到的IP数据报的目的IP地址检索路由表,指定数据报交换到哪个输出端口,然后交给交换结构处理。 3)交换结构: 将输入端口的IP数据报交换到指定的输出端口。主要包括内存交换、总线交换和高级交叉 “网络” 交换3种交换结构。 4)输出端口: 重新封装IP数据报到数据链路层的数据帧中,并通过物理层发送出去。

4.2 路由表与路由转发

“路由” 与 “转发” 是路由器最重要的两项功能。通过静态(人工方式)或动态(路由协议)获取路由信息并保存在路由表中,供数据转发时使用。

路由表基本结构: 1)目的网络与子网掩码: 准确描述一个目的网络。 2)下一跳: 表示到达该目的网络的路径的下一个邻居结点的接口IP地址。 3)接口: 应从哪个接口发送IP分组到目的网络。

最长前缀匹配原则: 路由器对于接收到的IP数据报,将其目的IP地址与路由表中各路由项的掩码按位进行逻辑与运算,将结果与路由表里的目的网络比较,如果出现多个与目的网络一致的情况,则选择其中网络前缀最长的一项作为路由转发的依据。

4.3 路由算法

1. 静态路由与动态路由 静态路由是人工把路由信息配置到路由表中;动态路由根据路由协议动态收集网络状况信息,然后按照某种路由算法计算最佳路由并更新路由表。

2. 距离-向量路由算法 是一种仅需要网络 “局部” 信息、异步的、迭代的、分散式的路由算法。每个路由器周期性地向邻居通告形如 <目的网络,距离> 的距离向量,每个路由器当收到邻居的距离向量或检测到本地链路的费用变化时,根据Bellman-Ford计算经过哪个邻居可以到达每个目的网络的最小距离,更新字节的距离向量与路由表,并把更新的距离向量交换给其所有的邻居路由器。经过多次迭代,确定到达每个目的网络的最佳路由。 为了避免出现无穷计数问题,解决方法有:毒性逆转(Poisoned Reverse)、定义最大有效距离、水平分割和阻碍时钟等。

3. 链路状态路由算法 将网络抽象为一个图,然后利用Dijkstra算法求最短路径。每个路由器检测并收集直接相连链路的费用及直接相连路由器的IP地址信息,构造链路状态分组,广播扩散给网络中其他所有路由器。每个路由器维护一个链路状态数据库,根据库中链路状态信息构建网络拓扑图,利用Dijkstra算法求最短路径,确定最佳路由。

4. 层次路由 当网络规模很大时,抽象的网络拓扑图不再适用,最有效的解决方案是层次划分路由。将大规模互联网按组织边界、管理边界、网络技术边界或功能边界划分为多个自治系统(AS),自治系统之间通过网关路由器相关连接。层次路由将大规模互联网路由划分为两层:自治系统内路由和自治系统间路由。

4.4 路由协议

1. 自治系统(Autonomous system,AS) 自治系统是在统一技术管理下的一组路由器,这些路由器使用相同的AS内部路由选择协议。

2. 域内/域间路由 域内路由协议即AS内部使用的协议,称为内部网关协议(Interior Gateway Protocol,IGP),如RIP和OSPF协议。 域间路由协议称为外部路由网关协议(External Gateway Protocol,EGP),实现不同自治系统间交换路由信息,如BGP4协议。

3. RIP 路由协议 RIP是一种分布式的基于距离向量的IGP;RIP要求AS内每一个路由器都维护从它自己到其他每一个目的网络的距离向量。

4. OSPF 路由协议 OSPF(Open Shortest Path First,开放式最短路径优先),采用Dijkstra算法,收集与本路由器相邻的所有路由器的链路状态,并向本自治系统内的所有路由器广播发送链路状态信息,称为 “洪泛” 。 为了使OSPF能在大规模网络使用,可以将一个自治系统进一步划分若干各区域。这样就减少洪泛交换链路状态信息的通信量。

5. BGP 协议 BGP是不同自治系统间交换路由信息的协议。它是力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。 BGP在TCP上建立BGP会话来交换路由信息,会话交换包括4种类型的报文。 1)打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。 2)更新(UPDATE)报文,用来发送某一路由信息。 3)保活(KEEPALIVE)报文,用来确认打开报文和周期性证实邻站关系。 4)通知(NOTIFICATION)报文,用来发送检测到的差错。

五、IP中的其他协议

5.1 地址解析协议(ARP)

使用IP地址通信时,发送数据的主机和转发数据的路由器都必须要知道IP地址所对应的硬件地址才能将通信具体实现。地址解析协议(ARP)就是解决这一问题的机制。

ARP基本思想是在每一台主机中设置专用内存区域,称为ARP高速缓存,里面有该主机所在局域网中各个主机和路由器的IP地址和硬件地址的映射表,这个表会经常更新。

ARP查找硬件地址的过程: 假设局域网中主机A向主机B发送IP数据报 1)主机A首先在局域网中广播发送一个ARP请求分组,内容形象的描述为:“我的IP地址是A,硬件地址是a,我想知道IP地址为B的硬件地址” 。本局域网中的所有运行ARP的主机都会收到该ARP请求。 2)主机B收到该请求后,发现请求分组中的IP地址与自己IP一致,则将主机A的硬件地址写入自己的ARP高速缓存中,方便今后向A发送数据;其他主机发现与自己IP不符就丢弃。主机B收到ARP请求后,创建一个响应分组,并将自己硬件地址写入响应分组,然后直接发送给A。 3)主机A收到主机B的ARP响应分组后,将分组中主机B的硬件地址写入自己ARP高速缓存里。

为防止局域网中主机地址变更,ARP高速缓存中每一个地址映射都有一个生存时间(几十分钟),超时就被删除,然后再重新运行ARP查找主机硬件地址。

5.2 动态主机配置协议(DHCP)

一台新进算计要接入Internet,需要对其配置IP地址、子网掩码、域名等,在较大规模局域网内如果人工为每台配置则相对繁琐,动态主机配置协议就是用来解决这种问题的机制。

基本思想是:在一个网络内部设置一台DHCP服务器,其中保管着该网络所管辖的IP地址及其他配置信息;当有一台计算机新接入该网络时,它在开启后向该网络广播发送一个DHCP发现报文,目的IP地址全为1,源IP地址全为0。DHCP服务器收到此报文后,从自己保存的IP地址中取出一个,与配置信息一起,通过DHCP提供报文发送给这台计算机,从而为这台计算机分配一个新的IP地址及配置信息。

5.3 网际控制报文协议(ICMP)

在数据传送过程中经常会遇到延迟、丢失等异常情况,为了使通信双方能够知道异常情况,并及时调整和控制,网际控制报文协议应运而生。 它通过让主机或路由器发送ICMP报文,将网络传输过程中的差错和异常情况报告给参与数据通信的相关主机。ICMP报文作为IP数据报的数据部分,封装在IP数据报中,其报文格式为:

ICMP报文格式

ICMP报文有两种类型:差错报告报文和询问报文。

ICMP 差错报告报文有5种情况: 1)终点不可达。当路由器或主机不能交付数据报时,向源点发送终点不可达报文。 2)源点抑制。当路由器或主机由于拥塞而丢弃数据报时,向源点发送抑制报文。 3)时间超时。当收到生存时间(TTL)值为0的数据报时,丢弃并向源点发送超时报文。 4)参数问题。当数据报中有字段不正确时,丢弃并向源点发送参数问题报文。 5)改变路由。当路由器的路由表发生变化时,向主机发送改变路由报文。

ICMP 询问报文有2种情况: 1)回送请求和回答。由主机向一个特定目的主机发出的询问。收到此报文的主机必须给源主机发送回送回答报文,用于测试目的站是否可以到达。典型应用是ping命令。 2)时间戳请求和回答。用于网络中的主机请其他主机回答当前日期和时间,用于同步时钟和测量时间。

5.4 网际组管理协议(IGMP)

用于管理IP多播。IP多播是由一个源点向多个终点发送数据业务。

IP多播过程如下图所示。

IP多播示意图

假设3个不同局域网的主机A、主机B和主机C均属于一个多播组,其多播地址为224.30.152.62。当服务器要向这个多播组发送IP多播时,只需将IP分组发送到多播路由器R中,R根据多播路由协议,将IP分组复制并转发到多播组成员主机A、主机B和主机C所在局域网的多播路由器中,即R1、R2和R3,从而发送到主机A、主机B和主机C。

IGMP的作用是管理某个多播分组下的主机(加入或退出分组)。

IGMP的工作过程分2个阶段: 1)当某个主机加入一个新的多播组时,该主机向多播组的多播地址发送一个IGMP报文。本地多播路由器收到该报文后,根据多播路由协议将多播组成员信息告知其他多播路由器。 2)多播路由器周期性探寻本地局域网上的主机,确定是否还属于多播组成员。如果几次探寻后没有一个主机回应,则认为本地局域网内主机都已离开了此分组,不再将组成员信息发给其他多播路由器。

六、IPv6 协议

因IPv4 协议面临者IP地址资源严重不足的问题,IETF于1995年提出了IPv6协议。

IPv6 采用了新的首部格式,基本首部固定40B长度,如下图所示。

IPv6基本首部格式

首部字段说明:

  • 版本号: 指明IP版本,在IPv6中该值为0110(十进制6).
  • 通信业务类型: 用于区分不同的IPv6数据报的类别或优先级。
  • 流标号: IPv6提出了数据业务流的概念,将某特定源点到终点的一系列实时数据报(如音频、视频等)定义为流,属于同一个流的数据报,其流标号相同。
  • 有效载荷长度: 指明IPv6数据报除基本首部外的字节数,最大值为64KB。
  • 下一个首部: 当没有扩展首部时,下一个首部指明基本首部后面的数据所属于的上层协议;当有扩展首部时,用于表示后面第一个扩展首部的类型。
  • 跳数限制: 用来防止数据报在网络中无限制地被转发。数据报被源点发出后,每经过一个路由器,该值就减1,当为0时,数据报被丢弃。
  • 源地址和目的地址: 表示数据报的源点和终点。

IPv6 的表示方法: IPv6 的地址占128位,最多可提供3.4 x 10^{38} 个IP地址。表达方式通常是采用冒号分隔的十六进制,把每16位的值用十六进制数表示,各个数之间用冒号隔开,例如一个用冒号十六进制表示的IPv6地址:45EE:0000:78AC:FFFF:2A9B:0000:FFFF:62F4。

总结

  • 介绍了网络互联是什么

  • IP的特点有哪些以及IPv4 协议报文格式

  • IPv4 地址3个阶段的编址方式:分类编址、子网划分、无分类编址CIDR

  • 路由器的结构及功能是啥,如何根据路由表转发数据,以及常用的路由算法和协议

  • IP中其他重要协议:ARP、DHCP、ICMP和IGMP 的功能和工作原理

  • IPv6 的报文结构及表示方法

luck

猜你喜欢

转载自juejin.im/post/5eae4cafe51d454d9c3f7e0d