IP协议
IP协议位于网络层,它提供了不可靠的、无连接的数据报传输机制。TCP/IP是为了适应物理网络的多样性而设计的,而这种适应性主要是通过IP层来体现的。由于物理网络的多样性,各种物理网络的数据帧格式、地址格式之间的差异很大。为了将这些底层的细节屏蔽起来,使得采用不同物理网络的网络之间进行通讯, TCP/IP分别采用了IP数据报和IP地址作为物理数据帧与物理地址的统一描述形式。这样IP向上层提供统一的IP数据报和统一的IP地址,使得各种物理帧及物理地址的差异性对上层协议不复存在。
1、 IP数据报头
一个IP数据报由一个头部和数据部分构成。头部包括一个20字节的固定长度部分和一个可选任意长度部分。头部格式如图1所示。
版本:4位长。记录了数据报对应的协议版本号。当前的IP协议有两个版本:IPV4 和IPV6。
HL:4位长。代表头部的总长度,以32位字节为一个单位。
服务类型:8位长。使主机可以告诉子网它想要什么样的服务。服务类型域又分为了5个部分。优先权字段是标志优先级的;三个标志位分别代表延迟、吞吐量、可靠性。
总长:16位。指头部和数据的总长。最大长度是65535个字节。
标识:16位。通过它使目的主机判断新来的分段属于哪个分组,所有属于同一分组的分段包含同样的标识值。
DF:代表不要分段。它命令路由器不要将数据报分段,可能因为目的端不能重组分段。
MF:代表还有进一步的分段,用它来标志是否所有的分组都已到达。除了最后一个分段的所有分段都设置了这一位。
分段偏移:13位。标明分段在当前数据报的什么位置。
生命期:8位。用来限制分组生命周期的计数器。它在每个节点中都递减,而且当在一个路由器中排队时可以倍数递减。
协议:8位。说明将分组发送给那个传输进程,如TCR、VDP等。
头校验和:16位。仅用来校验头部。
源地址: 32位。产生IP数据报的源主机IP地址。
目的地址:32位。IP数据报的目的主机的IP地址。
可选项:是变长的。每个可选项用一个字节标明内容。有些可选项还跟有一字节的可选项长度字段,其后是一个或多个数据字节。现在已定义了安全性、严格的源路由选择、松的源路由选择、记录路由和时间标记五个可选项。但不是所有的路由器都支持全部5个可选项。
安全性选项说明了信息的安全程度。
严格的源路由选择选项以一系列的IP地址方式,给出了从源到目的地的完整路径。数据报必须严格地从这条路径传送。当路由选择表崩溃,系统管理员发送紧急分组时,或作时间测量时,此字段很有用。
松的源路由选择选项要求分组遍及所列的路由器,但它可以在其间穿过其它的路由器。
记录路由选项让沿途的路由器都将其IP地址加到可选字段之后,这使系统管理者可以跟踪路由选择算法的错误。
时间标记选项像记录路由选项一样,除了记录32位的IP地址外,每个路由器还要记录一个32位的时间标记。同样地,这一选择可用来为路由选择算法查错。
2、 IP数据报的分段与重组
IP数据报是通过封装为物理帧来传输的。由于因特网是通过各种不同物理网络技术互连起来的,在因特网的不同部分,物理帧的大小(最大传输单元MTU)可能各不相同。为了最大程度的利用物理网络的能力,IP模块以所在的物理网络的MTU作为依据,来确定IP数据报的大小。当IP数据报在两个不同MTU的网络之间传输时,就可能出现IP数据报的分段与重组操作。
在IP头中控制分段和重组的IP头域有三个:标识域、标志域、分段偏移域。标识是源主机赋予IP数据报的标识符。目的主机根据标识域来判断收到的IP数据报分段属于哪一个数据报,以进行IP数据报重组。标志域中的DF位标识该IP数据报是否允许分段。当需要对IP数据报进行分段时,如果DF位置1,网关将会抛弃该IP数据报,并向源主机发送出错信息。标志域中的MF位标识该IP数据报分段是否是最后一个分段。分段偏移域记录了该IP数据报分段在原IP数据报中的偏移量。偏移量是8字节的整数倍。分段偏移域被用来确定该IP数据报分段在IP数据报重组时的顺序。
IP数据报在被传输过程中,一旦被分段,各段就作为独立的IP数据报进行传输,在到达目的主机之前有可能会被再次或多次分段。但是IP数据报分段的重组都只在目的主机进行。
3、 IP对输入数据报的处理
IP对输入数据报的处理分为两种,一种是主机对数据报的处理,一种是网关对数据报的处理。
当IP数据报到达主机时,如果IP数据报的目的地址与主机地址匹配,IP接收该数据报并将它传给高级协议软件处理;否则抛弃该IP数据报。
网关则不同,当IP数据报到达网关IP层后,网关首先判断本机是否是数据报到达的目的主机。如果是,网关将接收到的IP数据报上传给高级协议软件处理。如果不是,网关将对接收到的IP数据报进行寻径,并随后将其转发出去。
4、 IP对输出数据报的处理
IP对输出数据报的处理也分为两种,一种是主机对数据报的处理,一种是网关对数据报的处理。
对于网关来说,IP接收到IP数据报后,经过寻径,找到该IP数据报的传输路径。该路径实际上是全路径中的下一个网关的IP地址。然后,该网关将该IP数据报和到的下一个网关的地址交给网络接口软件。网络接口软件收到IP数据报和下一个网关地址后,首先调用ARP完成下一个网关IP地址到物理地址的映射,然后将IP数据报封装成帧,最后由子网完成数据报的物理传输。