网际协议IP

简介

网际协议IP是TCP/IP体系中两个最主要的协议之一[STEV94][COME06][FORO10],也是最重要的因特网标准协议之一。

IP是无连接服务。

与IP协议配套使用的还有三个协议:

  • 地址解析协议ARP (Address Resolution Protocol)
  • 网际控制报文协议ICMP (Internet Control MessageProtocol)
  • 网际组管理协议IGMP (Internet Group ManagementProtocol)

解决的问题

为不同的网络之间互联,提供统一的通信协议。

  • 不同的寻址方案;
  • 不同的最大分组长度;
  • 不同的网络接入机制;
  • 不同的超时控制;
  • 不同的差错恢复方法;
  • 不同的状态报告方法;
  • 不同的路由选择技术;
  • 不同的用户接入控制;
  • 不同的服务(面向连接服务和无连接服务);
  • 不同的管理与控制方式;等等。

IP协议报文格式

首部 数据部分

在TCP/IP的标准中,各种数据格式常常以32位(即4字节)为单位来描述。

下图中的标尺,4表示长度占4位

4 4 4 4 4 4 4 4
版本 首部长度 区分服务 总长度
标识 标志 片偏移
生存时间 协议 首部校验和
源地址
目标地址
可选字段(长度可变) 填充
  • 版本

    占4位,IP协议版本,目前广泛使用的版本是4,即IPv4

  • 首部长度

    占4位,十进制最大数为15,单位为4字节。所以最大长度为:15 * 4 = 20字节。 当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

  • 区分服务

    占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务 DS (Differentiated Services)。只有在使用区分服务时,这个字段才起作用。

  • 总长度

    占16位,总长度指首部和数据之和的长度,单位为字节。数据报的最大长度为216 - 1 = 65 535字节。

    在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个IP数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层所规定的MTU值。例如,最常用的以太网就规定其MTU值是1 500字节。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。

  • 标识

    占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

  • 标志

    占3位,但目前只有两位有意义。

    • 标志字段中的最低位记为MF (More Fragment)。MF =1即表示后面“还有分片”的数据报。MF = 0表示这已是若干数据报片中的最后一个。
    • 标志字段中间的一位记为DF (Don't Fragment),意思是“不能分片”。只有当DF = 0时才允许分片。
  • 片偏移

    占13位,较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

  • 生存时间

    占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。 最初的设计是以秒作为TTL值的单位。后来就把TTL字段的功能改为“跳数限制”(但名称不变)。

  • 协议

    占8位,协议字段指出此数据报携带的数据是使用何种协议。

    • ICMP: 1
    • IGMP: 2
    • IP: 4
    • TCP: 6
    • EGP: 8
    • IGP: 9
    • UDP: 17
    • IPV6: 41
    • ESP: 50
    • OSPF: 89
  • 首部校验和

    占16位。这个字段只检验数据报的首部,但不包括数据部分。

  • 源地址

    占32位

  • 目标地址

    占32位