1.IP 的主要功能
Internet 网络层的协议有很多,最重要的是IP(Internet Protocol)。IP 即网际协议,也就是为计算机网络相互连接进行通信而设计的协议。在Internet 中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在Internet 上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP 协议就可以与因特网互连互通。它和TCP传输控制协议是整个TCP/IP 协议簇中最重要的部分。IP 的基本任务是屏蔽下层各种物理网络的差异,向上层提供统一的IP 数据报,由IP 控制传输的协议单元称为IP 数据报,各个IP数据报之间是相互独立的。
IP 的基本功能是对数据包进行相应的寻址和路由,并从一个网络转发到另一个网络。它屏蔽了形形色色物理网络的差异,向上一层提供了无连接的IP 数据报服务。IP 在每个发送的数据包前加入一个控制信息,其中包含了源主机的IP 地址和其他一些信息。IP 的另一项工作是分割和重编在传输层被分割的数据包。由于数据包要从一个网络转发到另一个网络,当两个网络所支持传输的数据包的大小不相同时,IP 就要在发送端将数据包分割,然后在分割的每一段前再加入控制信息进行传输。当接收端接收到数据包后,IP 将所有的片段重新组合形成原始的数据。
2.IP 的特性
IP 是一个无连接的协议。无连接是指主机之间不建立用于可靠通信的端到端的连接,源主机只是简单地将IP 数据包发送出去,而IP 数据包可能会丢失、重复、延迟时间长或者顺序混乱。因此,要实现数据包的可靠性传输,就必须依靠高层的协议或应用程序,如传输层的TCP。
IP 的重要特性是非连接性和不可靠性,非连接性是指经IP 处理过的数据包相互独立,可按不同的路径传输到目的地,到达顺序可不一致。不可靠性是指没有提供对数据流在传输时的可靠性控制,是“尽力传送”的数据报协议。它没有重传机制,对底层子网也没有提供任何纠错功能,用户数据报可能发生丢失、重复甚至失序到达。IP 无法保证数据报传输的结果,IP 服务本身不关心这些结果,也不将结果通知收发双方。“尽力”的数据报传送服务是指IP 数据报的传输利用了物理网络的传输能力,网络接口模块负责将IP 数据报封装到具体网络的帧(LAN)或者分组(X.25 网络)中的信息字段。事实上,IP 只是单纯地将数据报分割成包(分组)发送出去,利用ICMP 所提供的错误信息或错误状况,再配合上层的TCP 和UDP,则可以提供对数据的可靠性控制。对于一些不重要或非实时的数据传输,如电子邮件,则可利用不可靠的UDP 传输方式,而对于重要和实时数据必须利用可靠的TCP 传输方式。
3.IP 数据报格式
IP 数据报封装到以太网的MAC 数据帧,与一般网络层分组格式相似,IP 数据报也分为两部分:首部和数据。首部又分成两部分:固定部分和可选部分。固定部分为20 字节,可变部分的长度可变。规定首部的总长度是60 字节。数据报的格式以4 个字节(32 bit)为单位,这是TCP/IP 统一格式的描述。
这样,首部固定为5 个单位,首部总长度最大为15 个单位。在首部后,也是以4 个字节为单位的数据部分,如图5-2所示。
图5-2 IP 数据报格式
(1)版本:版本字段占4 bit,指 IP 协议的版本号,通信双方使用的IP 协议的版本必须一致,目前一般使用版本4(IPv4)。下一代IP 协议版本是IPv6,正在普及中。
(2)首部长度:首部长度字段占4 bit,可表示的最大数值为15 个单位,共60 个字节,典型的头部长为20 字节,即只有首部的固定部分,没有可选部分。若IP 数据报首部长度不是4 字节的整数倍时,必须利用首部的最后一个填充字段加以填充。
(3)区分服务:区分服务字段共8 bit,主要指IP 包的传输时延、优先级和可靠性。早期这个字段叫作服务类型字段,1998年IETF 将这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用,在一般情况下都不使用这个字段。
(4)总长度:总长度是指数据报首部和数据之和的长度,单位为字节。总长度字段为16 bit,因此,数据报最大长度为65 535 字节。而实际中极少会达到这样的长度。
(5)标识:标识字段占16 bit。用于分片数据报重组时使用。长的数据段在传送时会被分割成多个包来传送,接收端会将来源和识别符号值相同的包收集起来重新组合成原来的数据。它是数据报的唯一标识,用于数据报的分段和重组。(www.xing528.com)
在IP 层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,即最大传送单元MTU(Maximum Transfer Unit)。当一个IP 数据报封装成链路层的帧时,此数据报的总长度(首部加数据部分)一定不能超过下面的数据链路层所规定的MTU 值。例如,以太网就规定其MTU 值为1500 字节。如果所传送的数据报长度超过数据链路层的MTU 值,就必须把过长的数据报进行分片处理。
IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段,但这个标识不是序号。这个标识字段的值被复制于报文分片后每个数据报分片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装为一个原来的数据报。
(6)标志:标志字段占用3 bit,但目前只使用前两位,其格式如下所示。标志字段也用于控制数据报分段用。MF (More Fragment)位表示后面是否还有分片的数据报片。MF=1表示后面还有分片的数据报;MF=0 表示这是若干数据报分片中的最后一个。DF(Don’t Fragment)表示是否允许数据报分段。只有当DF=0 时才允许分片。
(7)片偏移:占13 bit。表示分片后,本片在原来数据报中的位置,以8 字节为1 个单位。
(8)生存时间(Time To Live,TTL):占8 bit,以秒(s)为单位,用来设置本数据报的最大生存时间。在包开始传送时设置为255,TTL 字段的作用体现了 IP 协议对数据报在传输过程中的延迟控制作用。路由器总是从TTL 中减去数据报消耗的时间,每当包经过一个路由器时,该字段自动减1,直到0 为止。当TTL 字段值已减少为0 时,便将该数据报从网络中删除。
然而,随着技术的进步,路由器处理数据报所需的时间不断缩短,一般都远远小于1 s,后来就把TTL 字段的功能改为“跳数限制”(英文名称不变,还是TTL)。路由器在转发数据报之前将TTL 值减1。若TTL 值减小到零,就丢弃该数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL 的意义用于指明数据报在因特网中最多可经过多少个路由器。
(9)协议:占8 bit,数值为0~255,指数据报数据区数据的高级协议的类型,如TCP、 UDP、ICMP 等。即该字段表示哪一个上层协议准备接收IP 包中的数据,如协议字段值为6时,表示上层的TCP 协议准备接收IP 包中的数据。常用的一些协议和相应的协议字段值如下:
(10)首部校验和:用于校验数据报首部,不包括数据部分,确保IP 数据报首部的完整性和正确性。
(11)源IP 地址:指送出IP 包的主机地址,占4 字节。
(12)目的IP 地址:占4 字节,指接收IP 包的主机地址。
(13)可选项字段:大小不确定,用来提供多种选择性的服务。
(14)填充字段:IP 数据报首部的大小一定是32 bit 的整数倍,当选项字段不是整数倍时,就用该字段填充字段来补充,通常用0 来填补。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。