理论教育 互联网协议:理解IPv4和全球网络通信

互联网协议:理解IPv4和全球网络通信

时间:2023-06-11 理论教育 版权反馈
【摘要】:互联网是由许多网络连接在一起,按照传输控制协议和互联网协议来进行通信的。IPv4为标准化互联网络的核心部分,也是使用最广泛的互联网协议版本。图4-5 采用点分十进制的形式表示IPv4地址全球互联网是一个单一、抽象的网络。一个网络号在整个互联网中是唯一的。

互联网协议:理解IPv4和全球网络通信

互联网是由许多网络连接在一起,按照传输控制协议和互联网协议(TCP/IP)来进行通信的。TCP/IP采用分组交换方式,基本传输单位是数据包。TCP/IP在数据传输过程中首先由TCP把数据分成若干数据包,给每个数据包写上序号,以便接收端把数据还原成原来的格式;IP给每个数据包写上发送主机和接收主机的地址,一旦写上源地址和目的地址,数据包就可以在物理网络上传送数据了。IP还具有利用路由算法进行路由选择的功能,这些数据包可以通过不同的传输途径(路由)进行传输,由于路径不同,加上其他的原因,可能出现顺序颠倒、数据丢失、数据失真,甚至重复的现象。这些问题都由TCP来处理,它具有检查和处理错误的功能,必要时还可以请求发送端重发。简言之,IP负责数据的传输,而TCP负责数据的可靠传输。

1.TCP

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP连接包括三个状态:连接创建、数据传送和连接终止。操作系统将TCP连接抽象为套接字的编程接口给程序使用,并且要经历一系列的状态改变。

TCP用三路握手(Three-Way Handshake)过程创建一个连接,如图4-3所示。在连接创建过程中,很多参数要被初始化,如序号被初始化以保证按序传输和连接的强壮性。

1)客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三路握手的一部分。客户端把这段连接的序号设定为随机数A。

2)服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK的确认码应为A+1,SYN/ACK包本身又有一个随机序号B。

3)客户端再发送一个ACK。当服务端收到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号A+1,而响应号则为B+1。

978-7-111-58167-3-Chapter04-3.jpg

图4-3 TCP连接过程

在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和来检测报文段的错误;使用确认和计时器来检测和纠正丢包或延时。

在TCP的连接创建状态,两个主机的TCP层间要交换初始序号(Initial Sequence Number,ISN)。这些序号用于标识字节流中的数据,并且还是对应用层的数据字节进行记数的整数。通常在每个TCP报文段中都有一对序号和确认号。TCP报文发送者以自己的字节编号为序号,以接收者的字节编号为确认号。TCP报文的接收者为了确保可靠性,在接收到一定数量的连续字节流后才发送确认。这是对TCP的一种扩展,通常称为选择确认(Selective Acknowledgement)。选择确认使得TCP接收者可以对乱序到达的数据块进行确认。每一个字节传输过后,ISN都会递增1。

通过使用序号和确认号,TCP层可以把收到的报文段中的字节按正确的顺序交付给应用层。序号是32位的无符号数。对于ISN的选择是TCP中较关键的一个操作,它可以确保强壮性和安全性。

TCP的16位的校验和的计算和检验过程如下:发送者将TCP报文段的头部和数据部分的和计算出来,再对其求反码(1的补数),就得到了校验和,然后将结果装入报文中传输。这里用反码和的原因是这种方法的循环进位使校验和可以在16位、32位、64位等情况下的计算结果在叠加后相同。接收者在收到报文后再按相同的算法计算一次校验和。这里使用的反码使得接收者不用再将校验和字段保存起来后清零,而是可以直接将报文段连同校验加总。如果计算结果全部为1,那么就表示了报文的完整性和正确性。

2.IPv4

互联网协议开发过程中的第四个修订版本IPv4,是此协议第一个被广泛部署的版本。IPv4为标准化互联网络的核心部分,也是使用最广泛的互联网协议版本。

IPv4规定的数据分组的首部如图4-4所示。

978-7-111-58167-3-Chapter04-4.jpg

图4-4 IPv4数据包分组图格式

在图4-4中,源地址和目标地址分别表示发送主机和接收主机的IP地址。IPv4使用32位(4B)地址,IPv4地址可被写作任何表示一个32位整数值的形式,但为了方便人类阅读和分析,它通常被写作点分十进制的形式,即四个字节被分开用十进制写出,中间用点分隔,如图4-5所示。

978-7-111-58167-3-Chapter04-5.jpg

图4-5 采用点分十进制的形式表示IPv4地址

全球互联网是一个单一、抽象的网络。IP地址给互联网上的每一台主机(或路由器)分配一个在全球范围内唯一的32位的标识符。IP地址的结构使得在互联网上可以很方便地进行寻址,找到注册的任意一台主机。IP地址由互联网号码分配局(IANA)和五个区域互联网注册管理机构(RIR)——AFRINIC、ARIN、APNIC、LACNIC、RIPE NCC进行管理,每个区域互联网注册管理机构均维护着一个公共的WHOIS数据库,提供IP地址分配的详情。

一个IP地址被分成两部分:网络识别码在地址的高位字节中,主机识别码在剩下的部分中。IP地址的编址方法经过了三个历史阶段:分类的IP地址、子网的划分、无分类编址(CIDR)。

(1)分类的IP地址

在分类的IP地址中,IP地址被划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,它标志主机所连接到的网络。一个网络号在整个互联网中是唯一的。第二个字段是主机号,它标志着特定的主机。主机号在所在网络中是唯一的。这种两级地址可以标记为:

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

在分类的IP地址中定义了五个类别:A、B、C、D和E,如图4-6所示。

978-7-111-58167-3-Chapter04-6.jpg

图4-6 各类IP地址中的网络号和主机号的划分

由图4-6可见,A、B和C类地址的网络号字段分别为1B,2B和3B长,在网络号字段的最前面有类别位,分别为0、10、110。D类地址为多播地址。E类地址为保留地址。

A类地址的主机号占3B,每个A类网络中的最大主机数为224-2,即16777214。这里减2的原因是全0的主机号字段表示该网络的地址,全1的主机号字段表示该网络里的所有主机,被用作广播地址。B类地址的主机号占2B,每个B类网络中的最大主机数为216-2,即65534。C1类地址的主机号占2B,每个C类网络中的最大主机数为28-2,即254。

(2)无分类编址

使用分类编址,一个组织只能申请A类、B类、C类地址,很不灵活,造成了IP地址的浪费,而且路由表中的项目数急剧增加,降低了互联网的效率。为了解决这些问题,在1993年左右,无类别域间路由(CIDR)正式地替换了分类网络。CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间。CIDR使用各种长度的“网络前缀”(Network-Prefix)来代替分类地址中的网络号和子网号。无分类的两级编址的记法为

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

CIDR还使用“斜线记法”,又称为CIDR记法,即在IP地址前面加上一个斜线“/”,然后写上网络前缀所占的位数。CIDR把网络前缀都相同的连续的IP地址组成“CIDR地址块”。通过CIDR地址块的任何一个地址,可以知道这个地址块的起始地址和具有的地址数。如已知一个地址128.14.35.3/20,现在把它用二进制表示,其中前20位是网络前缀(用下划线标出),后12位是主机号:

128.14.35.3/20 10000000000011100010001100000011

这个地址块的最小地址和最大地址分别为:

最小地址:128.14.32.0 10000000000011100010000000000000

最大地址:128.14.47.255 10000000000011100010111111111111(www.daowen.com)

对于同一个CIDR地址块中的地址,路由表中可以利用CIDR地址块来查找网络。这种地址的聚合被称为路由聚合。使用路由聚合,路由表中的一个项目可以表示原来传统分类地址里的很多个路由,从而减小路由表,减少路由器之间的路由选择信息的交换,提高互联网的性能。

3.IPv6

互联网协议是互联网构造的基石,IPv4在互联网中得到了广泛应用。但IPv4产生于20世纪70时代,具有时代的局限性。其最大的问题是网络地址资源的不足。因为IPv4使用32位地址,因此地址空间中只有4294967296(232)个地址。在20世纪70时代,只有几百台大型计算机需要接入互联网,43亿是一个当时无法想象会被超过的IP地址空间。随着互联网的发展,这样的地址空间已经远远不能满足实际需求。事实上,2011年2月,ICANN宣布最后一批IPv4地址分配完毕。作为有10多亿人口的大国,我国因为加入互联网比较晚,仅获得3.4亿个IPv4地址。截至2016年底,全球上网人数已经超过34亿,我国上网人数达到6.4亿,因此IP地址空间问题已成为制约互联网发展的一个重要因素。

为了解决互联网的IP地址空间问题,互联网工程任务组IETF于1996年提出了IP的第六个版本IPv6,试图彻底解决这个问题。

IPv6中使用128位地址空间,理论上可以有2128或3.4×1038个独立IP地址,是IPv4地址的296或7.9×1028倍,应该能为地球上现在和未来的所有智能物体提供唯一的IP地址,满足人类目前能想象的所有IP地址的需求。

因为IPv6的地址长度为128位,是IPv4地址长度的四倍,IPv4点分十进制格式不再适用。为了方便地表示IPv6地址,采用冒分十六进制表示法。

格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示,例如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

为了简化IPv6地址的表示,做出了三个不引起歧义的规定:

1)每个X的前导0是可以省略的,例如:

2001:0DB8:0000:0023:0008:0800:200C:417A→2001:DB8:0:23:8:800:200C:417A

2)在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中“::”只能出现一次,例如:

FF01:0:0:0:0:0:0:1101→FF01::1101

0:0:0:0:0:0:0:1→::1

3)为了实现IPv4与IPv6互通,便于人们从IPv4过渡到IPv6,IPv6地址的最后32位会采用IPv4的地址表示方法:

X:X:X:X:X:X:d.d.d.d

前96位采用冒分十六进制表示,而最后32位地址则使用IPv4的点分十进制表示。例如:

::192.168.0.1,::FFFF:192.168.0.1。

IPv6协议主要定义了三种地址类型:单播地址、组播地址和任播地址。与原来的IPv4地址相比,新增了任播地址类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。

(1)单播地址

用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。单播地址又可以分为以下五种类型。

1)全局单播地址:等同于IPv4中的公网地址,可以在IPv6Internet上进行全局路由和访问。这种地址类型允许路由前缀的聚合,从而限制了全球路由表项的数量。

2)链路本地地址:仅用于单个链路(这里的“链路”相当于IPv4中的子网),不能在不同的子网中路由。结点使用链路本地地址与同一个链路上的相邻结点进行通信。

3)站点本地地址:相当于IPv4中的局域网专用地址,仅可在本地局域网中使用。

4)兼容性地址:在IPv6的转换机制中还包括了一种通过IPv4路由接口以隧道方式动态传递IPv6包的技术。这样的IPv6结点会被分配一个在低32位中带有全球IPv4单播地址的IPv6全局单播地址。另有一种嵌入IPv4的IPv6地址,用于局域网内部,这类地址用于把IPv4结点当作IPv6结点。此外,还有一种称为“6to4”的IPv6地址,用于在两个通过Internet同时运行IPv4和IPv6的结点之间进行通信。

5)特殊地址:包括未指定地址和环回地址。未指定地址(0:0:0:0:0:0:0:0或::)仅用于表示某个地址不存在。它等价于IPv4未指定地址0.0.0.0。未指定地址通常被用作尝试验证暂定地址唯一性数据包的源地址,并且永远不会指派给某个接口或被用作目标地址。环回地址(0:0:0:0:0:0:0:1或::1)用于标识环回接口,允许结点将数据包发送给自己。它等价于IPv4环回地址127.0.0.1。发送到环回地址的数据包永远不会发送给某个链接,也永远不会通过IPv6路由器转发。

(2)组播地址

用来标识一组接口(通常这组接口属于不同的结点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。

(3)任播地址

用来标识一组接口(通常这组接口属于不同的结点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源结点最近(根据使用的路由协议进行度量)的一个接口。

跟IPv4一样,IPv6支持无连接的接送。IPv6将协议数据单元PDU称为分组,分组头称为首部。IPv6数据分组的结构如图4-7所示。

978-7-111-58167-3-Chapter04-7.jpg

图4-7 IPv6数据分组的结构

IPv6数据分组中的基本首部是必选首部,长度固定为40B,包含该数据分组的基本信息;扩展首部是可选首部,可能存在0个、1个或多个,IPv6协议通过扩展首部实现各种丰富的功能;再后面是传送的数据。所有扩展首部和数据合起来叫作数据分组的有效载荷。图4-8显示了IPv6基本首部的结构。

978-7-111-58167-3-Chapter04-8.jpg

图4-8 IPv6基本首部的结构

IPv6支持资源预分配,允许路由器把每一个数据分组与一个给定的资源分配相联系。IPv6提出流的概念,将从特定源点到特定终点的一系列数据分组定义为一个流,所有属于同一个流的数据具有同样的“流标号”。在这个“流”经过的路径上的路由器都保证指明的服务质量。实时音频/视频数据的传送质量可以通过“流”得到保证。

2012年6月6日,国际互联网协会举行了世界IPv6启动纪念日,这一天,全球IPv6网络正式启动。多家知名网站,如Google、Facebook和Yahoo等,于当天全球标准时间0点(北京时间8点整)开始永久性支持IPv6访问。目前主要的计算机操作系统和绝大多数的网络设备都支持IPv6。2011年年底,国务院常务会议明确了我国发展下一代互联网的主要目标和路线图:2013年年底前,开展IPv6网络小规模商用试点,形成成熟的商业模式和技术演进路线;2014~2015年,开展大规模部署和商用,实现IPv4与IPv6主流业务互通。在近年内,IPv6将在中国和全球全面取代IPv4,推动人类迈入工业互联网时代。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈