《网络实用技术基础》第三章 3.1 网间互联协议
3.1 网间互联协议
因特网协议体系TCP/IP是由若干协议组成的互联网络协议标准,为异构计算机网络的互连和数据通信提供了统一的准则。IP协议是TCP/IP的核心。如图3-1所示,网际层的常用协议主要包括IP协议、地址解析协议ARP、逆地址解析协议RARP、因特网控制报文协议ICMP和因特网组管理协议IGMP等。
图3-1构成网际层的协议
ICMP和IGMP协议在网际层的最上面,ICMP用于通告IP层分组传输状态,IGMP用于实现网络中的组管理与多播应用。ARP和RARP协议位于网际层的最下面,ARP用于把节点的IP地址解析为物理地址,RARP用于把节点的物理地址解析为IP地址。
一、IP协议
IP协议是网际层的核心协议,它定义了网际层所使用的分组格式。
IP协议提供“尽力交付”的网络服务,不保证传输的可靠性,由上层的协议或应用程序提供传输可靠性的保证。不同网络的技术差别主要体现在数据链路层和物理层,如不同的局域网技术和广域网技术。而IP协议能够将不同的网络技术在TCP/IP的网际层统一,以一致的IP分组支持异构网络互联。IP协议实际上是一套由软件程序组成的协议软件,把各种不同“帧”统一转换成“IP数据报”格式,使各种计算机都能在因特网上实现互联互通。
1.IP数据报
IP数据报又称IP分组,其具体格式如图3-2所示。一个IP分组由首部和数据两部分组成,首部的固定部分为20个字节,首部的可变部分最长为40个字节,若长度不够4个字节的整数倍,则需要利用最后一个字段进行填充,以方便定界与识别。
IP分组的固定首部包含12个字段,具体包括:
1)版本:占4bit,指的是IP协议的版本。目前常用的IP数据报的版本是IPv4。
图3-2 IP协议数据报的格式
2)首部长度:占4bit,允许的最大值为15。在IP数据报中,4个字节为一个单元,可得出首部长度最大值为60(15×4)字节。如果IP分组的首部长度不是4字节的整数倍时,需要在填充字段加以填充,使得整个首部长度为4个字节的整数倍。
3)服务类型:占8bit,保证提供的QoS级别。
4)总长:占16bit,单位为1个字节。总长指首部和数据部分的总长度,因此,数据报的最大长度为65535(216-1)字节,即64KB。
5)标识:占16bit,它是一个计数器,用来产生数据报的标识。由于在网络中有时需要传送大容量数据,而链路都有最大的传送单元长度限制,所以要进行数据报的拆分。当同一个数据报进行拆分后,报头标识字段的值均相同。当到达目的地时,具有相同标识字段的各个数据片就能够正确地重装为原来的数据包。
6)标志:占3bit。它具有如下含义:当标识字段的最低位为1时,表示后面还有分片,当最低位为0时,表示这已经是若干数据片的最后一个;当标识字段的中间一位为1时,表示不能分片,为0时,则表示可以分片。
7)段位移:段偏移的单位为8个字节,表示的是当数据报在分片后,某个分片在原数据报的相对位置。
8)生存时间:占8bit,数据报在网络传输时,为避免数据报长期滞留在网络中,为其设置了生存时间(TTL,Time ToLive),它的最大值是255。在网络中,当数据包每经过一台路由器时,生存时间TTL值就减1,当TTL减至为0时,若该数据包仍没有到达目的地,则丢弃该数据包。
9)类型:占8bit,指明在IP数据报中封装的是何种协议,如ICMP、IGMP、TCP和UDP等,以便目的主机能够将数据包交付给上层应用程序。
10)头部校验和:这个字段只校验报头在传输过程中是否发生差错。数据包在整个网络传输过程中,每经过一个节点都会对数据报进行拆封,报头的TTL字段的值会变化,引起报头信息变化,如果数据部分也进行校验,则计算的工作量就很大。
11)源IP地址:占4个字节,IP数据报来源的IP地址。
12)目的IP地址:占4个字节,IP数据报将要发往的IP地址。
2.IP地址
IPv4协议约定,网络中的每台主机都需要通过一个Internet接口,该接口用32位全局唯一的IP地址来标识。TCP/IP的网际层通过IP数据报中的源IP地址和目的IP地址来标识网络中的主机,又称逻辑地址。
与逻辑地址对应的,数据链路层的MAC地址称为硬件地址,又可称为物理地址,它被固化在网卡的硬件结构中,只要主机和设备的网卡不变,则其MAC地址就不变。物理地址的特点是:无论具有该地址的网络设备从一个网络移动到另一个网络,或从地球的一端移动到另一端,该网络设备的物理地址均保持不变。而逻辑地址会随着设备所处的网络位置不同而发生变化,即IP地址会随着设备从一个网络移动到另一个网络而相应地发生改变。
逻辑地址和物理地址的关系就如用户的手机号码与手机间的关系一样,用户购买了一台手机,这台手机的物理标识从出厂就一直不变,而手机号码及SIM卡则可更换。对于网络设备,其IP地址类似于手机号码,均为统一的格式,而屏蔽网络设备的类型。
●为方便快速地寻址找到目的地,一个IP地址划分为两部分:
1)网络号(net-id):标识设备位于网络中的哪个网段。
2)主机号(host-id):标识该网段的某个设备。
网络号和主机号组成了网络IP地址,寻址时,首先应在整个网络中寻找目标网络号,再在目标网络中寻找目标主机号。为了更简单迅速地寻址,将网络号划分为[A类地址]、[B类地址]、[C类地址]、[D类地址]和[E类地址],其中每一类地址都具有自己的网络号和主机号。
IPv4地址采用32位二进制数表示,为便于记忆,将其分为4段,每段为一个字节且字节之间用小数点隔开,再将这4段二进制数分别转化为十进制表示。比如一个IP地址,用二进制表示为:11111111111111110000000000000000,分解为4个8位位组后为:11111111.11111111.00000000.00000000,转化为十进制的结果为255.255.0.0,这种地址格式通常称为点分十进制。
●A类、B类、C类地址所占地址空间:
1)[A类地址空间];
2)[B类地址空间];
3)[C类地址空间]。
A类地址空间:以IP地址二进制表示的数为基准,第一位为0的地址规定为A类IP地址,A类IP地址空间共有231个地址,而整个IP地址空间为232,所以A类IP地址的数量占整个IP地址总数的1/2。其中,A类IP地址中存在两个特殊的IP地址,0.0.0.0表示网络中的所有主机;127.0.0.1表示环回地址,该地址主要用来测试主机的协议栈TCP/IP是否正确安装,所以A类IP地址最大的网络数为27-2=126个。
B类地址空间:B类IP地址的网络号占2个字节,第1个字节的前2位确定为1和0,则B类IP地址的网络数为214个。B类IP地址的主机号同样占2个字节,共16位,由于主机号不允许全为0或者全为1,所以每个网络上最多的主机数为216-2=65534台,整个B类IP地址约占整个地址空间的1/4。
C类地址空间:C类IP地址的网络号占3个字节,第1字节的前3位为1、1和0,C类IP地址的网络数为221个。C类IP地址的主机号占1个字节,每个具有C类IP地址的网络中包含的最多主机数为28-2=254,C类IP地址占整个地址空间的1/8。
●IP地址的使用范围如图3-3所示。
图3-3 IP地址的使用范围
二、ARP协议
地址解析协议ARP是网际层协议之一,它的作用是把IP地址映射到MAC地址。
ARP协议的作用是将接收到的IP地址解析为数据链路层的MAC地址。
数据在网际层进行传输采用的是IP寻址,而在MAC层则使用MAC寻址。对于利用以太网通信的两台设备,数据链路层则使用MAC地址区分网段上的机器,在彼此通信时,需要知道彼此的MAC地址。ARP地址解析分为同一网段和不同网段两类情形,不同网段的情形还需要考虑路由器的ARP请求与应答。
如图3-4所示,假设在同一网段上有3台PC机,它们的IP地址均属于192.168.1.0网段。现有PC2需要向PC3发送数据,PC2仅知道PC3的IP地址,但是数据是通过MAC地址进行传送的,PC2为了获知PC3的MAC地址,则需要采用ARP协议将IP地址映射到MAC地址。
图3-4同一网段的ARP实例
首先,PC2生成一个ARP请求,其中的源IP地址是192.168.1.2,目的地址是192.168.1.3。数据报被封装在一个以太网帧中,帧的源MAC地址是0000.AAAA.2222,帧的目的地址是广播地址FF:FF:FF:FF:FF:FF。同一网段的PC1和PC3都会收到此数据帧,PC1和PC3识别出该数据报是一个ARP的请求帧,对其进行解封装,并将带有ARP请求的IP数据报向上传送到网际层。PC1在ARP请求帧中看到的目的地址并不是自己的IP地址,将采取忽略并丢弃此帧策略,而PC3在发现ARP请求帧是自己的IP地址192.168.1.3时,向PC2发送ARP的应答帧,并附上自己的MAC地址。
通过上述过程,PC1和PC3都将PC2的MAC地址加入到本机的ARP缓存表中,若需要向PC2发送数据,则可以直接在ARP缓存表中找到PC2的MAC地址并发送数据。但是,ARP缓存表存在一个更新周期,经过一定时间就会进行刷新,这个时间周期取决于所使用的操作系统。
三、RARP协议
逆地址解析协议RARP是网际层的协议之一,RARP与ARP工作方式互逆。发送方首先向RARP服务器发送RARP请求帧,以解析从物理地址得到对应的IP地址。
如图3-5所示,PC是一个无盘工作站,配置了MAC地址,期望获得IP地址。
首先,PC发送一个本地RARP广播,帧的源MAC地址和目的MAC地址均被设置为0000.CCCC.1111,并在广播中请求RARP的服务器分配一个IP地址。RARP服务器收到此请求后,检查RARP列表是否存在该MAC地址到IP地址192.168.1.2的映射。若存在该映射,则RARP服务器向PC发送一个响应帧,并将地址192.168.1.2提供给对方使用;若不存在,则RARP服务器对此不做任何的响应。在PC收到从RARP服务器的响应信息后,则利用得到的IP地址进行通信;如果一直没有得到RARP服务器的响应信息,则表示初始化失败。
图3-5 RARP实例
四、ICMP协议
Internet控制报文协议ICMP是网际层协议之一,该协议主要用于控制IP数据报的传输,在网络设备之间传输错误提醒和控制信息,是检测网络连通性和工作状态的重要协议之一。
ICMP协议报文类型主要分为差错报告报文和询问报文。
差错报告报文分为目的站不可达、源站抑制、时间超时、参数问题和改变路由;
询问报文分为回送请求或应答、时间戳请求或应答、地址掩码请求或回答和路由询问或通告。
Ping是ICMP最常用的应用。
Ping是通过发送回送、回送请求和目的不可达信息来测试目的主机是否可达的。如图3-6所示,若测试PC1与PC2之间的连通性,则PC1生成一个ICMP回送分组。若此回送分组可以到达PC2,则PC2会生成一个回送应答分组,以通知PC1其与PC2之间的链路是相通的;若中间的路由器不知道如何转发PC1发送的回送分组,则路由器将以一个目的不可达信息作为回应;若路由器知道如何转发PC1发送的回送分组,但是目的主机没有收到回送分组,则PC1将收到一条请求超时信息。
图3-6 PC1和PC2连通性测试
五、IGMP协议
Internet组管理协议IGMP是网际层协议之一,也是一个组播协议,它运行于主机和与主机直接相连的组播路由器之间。
GMP协议包含成员关系查询和成员关系应答两种数据报文。
成员关系查询报文是由网段中的组播路由器周期性地向该共享网段发送,主机在收到查询消息后,生成IGMP成员关系应答报文,然后组播路由器依据收到的响应来刷新组成员的存在信息。
如图3-7所示,PC1和PC2属于组播地址为224.10.1.1的多播组,PC3不属于224.10.1.1多播组。组播路由器会周期性地发送成员关系查询报文,此报文的目的地址是224.0.0.1。网络上的PC1、PC2和PC3都会收到这个查询报文,同属一组的PC1和PC2会发送组员关系应答报文,但是它们的发送时间是错开的。
若PC1先发送应答报文,报文的目的地址是224.10.1.1,组播标识为224.10.1.1。组播路由器在收到此应答报文后,知道网络上存在224.10.1.1这个组,则会继续保存在组播表中。PC2同样也会收到PC1发送的应答报文,此时PC2会延迟发送组播应答报文,因为组播路由器已经知道224.10.1.1组的存在。假如PC3想加入组播224.10.1.1组,则其会主动地发送组播关系请求报文,其目的地址是224.10.1.1,组播标识是0.0.0.0。
图3-7多播组的应用实例