首页 理论教育网络层协议和IP地址解析

网络层协议和IP地址解析

【摘要】:需要注意的是,目前IP协议有两个版本,IPv4和IPv6。由此可知,子网掩码都是与具体的IP地址配合使用才有实际意义。

1.网络层协议及功能

IP协议是互联网的重要协议之一,在网络层使用。尽管底层网络采用了不同的硬件设备和协议,只要在网络层都使用IP协议,那么在网络层中,所有的主机就都好像连接在同一个网络中一样。每一个主机都可以根据唯一分配的IP地址进行识别区分,彼此间也可以通过IP包交换信息。分组从源端主机发出,经过若干个路由器的转发,最终到达目的主机。需要注意的是,目前IP协议有两个版本,IPv4和IPv6。后面的介绍如无特殊说明,都是以较早出现并且目前大规模使用的IPv4版本为例。

此外,在网络层中还有其他协议配合IP协议使用,如用于进行简单差错控制的互联网控制报文协议(ICMP),还有用于支持组播通信的互联网组管理协议(IGMP)等。

2.IP地址及其表示方法

把整个互联网看成一个单一、抽象的网络。所谓IP地址,就是给每个连接在互联网上的主机分配一个在全世界范围内唯一的32 bit地址。IP地址的结构使我们可以在Internet上很方便地进行寻址,这就是:先按IP地址的网络号Net-id把网络找到,再按主机号Host-id把主机找到。所以IP地址不仅表示一个计算机的地址,而且指出了连接到某个网络上的某个计算机。

IP地址分为5类,即A 类到E类。我们日常的点到点通信一般使用A、B 和C 类地址。这三类地址的结构由两部分组成,前面若干位是网络号字段,用以给不同的网络编号;后面剩余的若干位是主机号字段,具体分配给对应网络内的某个主机。A、B和C类地址已经分别规定好网络号和主机号各自占用的比特数,如图6.3所示。需要注意的是,IP地址的最前端是地址类别标识,用以区分到底是哪一类地址。这就保证了给出任意一个IP地址,都可以很容易地区分出它到底是哪一类地址,并随之确定它的网络号和主机号分别是多少。

图6.3 IP地址的5种类型

为了便于人们日常记录,常将32 bit地址中每8 bit用其等效十进制数字表示,并且在这些数字之间加上一个点,这就是点分十进制记法。例如,有IP地址如下:

10000000 00001011 00000011 00011111

这是一个B类IP地址,若记为128.11.3.31,显然就方便得多。

3.子网的划分

现在看来,IPv4中IP地址的设计确实有不够合理的地方。例如,IP地址在使用时有很大的浪费,若某个单位申请到了一个B类地址,该单位只有1万台主机,于是其余五万五千多个主机号就白白地浪费了,因为其他单位的主机无法使用这些号。因此在IP地址中又增加了一个“子网号字段”,实际上是取紧邻网络号字段的若干位高位的主机号,用于划分子网,相当于将原来的能容纳较大量主机数的网络,划分成若干个子网,每个子网的主机数量减少了,但是子网之间可以彼此独立管理,各自分配其中的主机地址。子网号字段究竟选多长,根据实际情况确定。

在引入子网的概念之后,为了指明实际的网络号(即原网络号加上现在划分的子网号)到底是多少,提出了子网掩码的概念。子网掩码由一连串的“1”和一连串的“0”组成,也是32 bit,其中“1”对应于网络号和子网络号字段,“0”对应于主机号字段,如图6.4所示。由此可知,子网掩码都是与具体的IP地址配合使用才有实际意义。

图6.4 子网掩码的意义

若一个单位不进行子网划分,则其子网掩码即为默认值,此时子网掩码“1”的长度就是网络号的长度。因此A、B、C类IP地址,其对应的子网掩码默认值分别为255.0.0.0、255.255.0.0、255.255.255.0。

4.IP地址与物理地址

图6.5表示IP地址与物理地址(也可称为硬件地址)的区别,可以看出,IP地址放在IP数据报的首部,而硬件地址则放在MAC 帧的首部。在网络层及以上使用的是IP地址,而链路层及以下使用的是硬件地址。在IP层抽象的互联网上,看到的只是IP数据报,而在具体的物理网络的链路层,看到的只是MAC帧。

图6.5 IP地址与物理地址的区别

5.地址转换

上面讲的IP地址是不能直接用来进行通信的,原因如下。

①IP地址只是主机在网络层中的地址,若要将网络层中传送的数据报交给目的主机,还要传到链路层转变成MAC帧后才能发送到网络,而MAC 帧使用的是源主机和目的主机的硬件地址,因此必须在IP地址和主机的硬件地址之间进行转换。

②用户平时不愿意使用难以记忆的主机号,而愿意使用易于记忆的主机名字,因此也需在主机名字和IP地址之间进行转换。

由IP地址到物理地址的转换由地址解析协议(ARP)完成,而由物理地址转换到IP地址使用RARP协议。由主机名字到IP地址的转换用域名系统(DNS)。

互联网迅速发展暴露出目前使用的IP协议(IPv4)不适用了。主要的问题是32 bit IP地址不够用,另一个原因是它还不适于传递语音和视频等实时性的业务,所以现在已提出下一代的IPv6。主要变化是,IPv6使用了128 bit的地址空间,并使用了全新的数据报格式,简化了协议,加快了分组的转发,允许对网络资源的预分配和允许协议继续演变,并增加了新的功能等。

6.IP包首部

采用了IP协议的互联网是无连接的分组交换网络,IP 包携带各个用户的数据在网络中转发,并没有提前设计好从发送端到接收端主机的路径,也并不承诺传输的可靠性和有效性,即提供所谓“尽力而为”(Best Effort)服务。因此,为了实现IP包的顺利转发,要在用户数据前面加上IP包首部,并在其中设置一些字段,以便路由器转发IP包的时候进行控制。

IP包首部的格式如图6.6所示。

图6.6 IP包首部

下面介绍IP包首部各主要字段的含义,便于理解IP协议的功能和IP包的转发过程。

①版本(4 bits):指明所使用的IP协议版本是IPv4还是IPv6。

②首部长度(4 bits):指明该IP包的首部实际长度是4字节的多少倍。IP包固定长度的首部是20字节,即填写的0101,对应的十进制数字是5。此外,在固定长度的各字节之后还可以增加可选字节以补充其他控制信息。可以得知,首部长度最大值填写是1111,即IP包首部最长是60字节。

③服务类型(8 bits):在基于IP网络的服务质量模型中使用,用于区分不同类型的IP包。

④总长度(16 bits):指明该IP包的实际总长度,包括了首部和用户数据两部分,单位是字节。由此可知,IP包的理论最大值是65 535字节,不过在实际中极少出现这么长的IP包。

⑤标识符(16 bits)、标志(3 bits)和分片偏移量(13 bits):这三个字段是用于IP包分片和重组使用的。

各种物理网络技术都限制了一个数据链路层的帧大小不能超过一定的限制,即最大传输单元(MTU),不同的网络MTU 并不相同,是由其物理技术决定的,通常保持不变。而IP包是需要封装到数据链路层的帧中进行传输的。如果IP包太长导致其在传输过程中封装的帧超过了该网络的MTU,此时IP包就需要进行分片。

源端产生IP包时分配一个唯一的标识符,用来区分该源端发送的不同分组。在分片时,所有由分片形成的新的IP包,都具有相同的标识符字段,便于将来重组。此外,各个分片根据所携带数据部分的起始位置是原IP包数据部分的哪个字节,对应填写分片偏移量字段。前面的若干个分片在分片标志位填写1,表明后面还有分片;最后一个分片在该标志位填写0。根据这三个字段的内容,分片后的IP包就可以在适当的时候进行重组,恢复原IP 包所携带的信息。

⑥生存时间(8 bits):为了防止无法交付的IP包在网络中无限制地转发而浪费资源,每经过一个路由器转发时,就将该IP包的生存时间字段的数值减1。若该字段减小到零,就丢弃该IP包,不再转发。

⑦协议(8 bits):指明该IP 包携带的数据部分是使用上层的哪种协议,如是传输层的UDP或者TCP协议等,便于接收到IP包后交付对应的上层协议处理。

⑧首部校验和(16 bits):对该IP包首部进行校验,是差错控制的一种方法。

⑨源IP地址(32 bits):填写源端IP地址。

⑩目的IP地址(32 bits):填写目的端IP地址。