首页 > 代码库 > TCP/IP (2)IP网际协议

TCP/IP (2)IP网际协议

IP是TCP /IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输

IP提供不可靠,无连接的数据传送服务

  不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
  无连接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

 

IP首部

  普通的IP首部长为20个字节,除非含有选项字段。

 

  版本(一般)号是4,因此IP有时也称作IPv4

  首部长度指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为6 0个字节(15×4)。

  总长度字段是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P数据报中数据内容的起始位置和长度。所以IP数据报最长可达65535字节。当数据报被分片时,该字段的值也随着变化。

  标识字段唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。在分片和重组时很重要。同样,在讨论分片时再来分析标志字段和片偏移字段。

  TTL(time - to - live)生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。

  首部检验和字段是根据IP首部计算的检验和码。它不对首部后面的数据进行计算。ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。

  最后一个字段是任选项,是数据报中的一个可变长的可选信息。目前,这些任选项定义如下:
    ? 安全和处理限制(用于军事领域,详细内容参见RFC 1108[Kent 1991])
    ? 记录路径(让每个路由器都记下它的IP地址)
    ? 时间戳(让每个路由器都记下它的IP地址和时间)  
    ? 宽松的源站选路(为数据报指定一系列必须经过的IP地址)
    ? 严格的源站选路(与宽松的源站选路类似,但是要求只能经过指定的这些地址,不能经过其他的地址)。
  这些选项很少被使用,并非所有的主机和路由器都支持这些选项。选项字段一直都是以32 bit作为界限,在必要的时候插入值为0的填充字节。这样就保证IP首部始终是32 bit的整数倍(这是首部长度字段所要求的)。