IP是TCP/IP协议族中的核心协议。所有TCP、UDP、ICMP和IGMP数据都是通过IP数据报传输。IP提供了一种尽力而为、无连接的数据报交付服务。
“尽力而为”的含义是不保证IP数据报能成功到达目的地。虽然IP不是简单丢弃所有不必要流量,当它也不对自己尝试交付的数据报提供保证。当某些错误发生时,例如一台路由器临时用尽缓冲区,IP提供一个简单的错误处理方法:丢弃一些数据(通常是最后到达的数据报)。任何可靠性必须由上层(例如TCP)提供。IPv4和IPv6都使用这种尽力而为的基本交付模式。
“无连接”意味着IP不维护网络单元(即路由器)中数据报相关的任何链接转态信息。每个数据报独立于其他数据报来处理。这也意味着IP数据报可不按顺序交付。如果一个源主机向同一目的地发送两个连续的数据报(第一个为A,第二个为B),每个数据报可以独立路由,通过不同路径,并且B可能在A之前到达。IP数据报也可能发生其他问题:它们可能在传输过程中被复制,可能改变内容从而导致错误。此外,IP之上的一些协议(通常是TCP)需要处理这些潜在问题,以便为应用提供无差错的交付。
IPv4头部和IPv6头部
正常的IPv4头部大小为20字节,除非存在选项(这种情况很少见)。IPv6头部长度是IPv4的两倍,但没有任何选项,它可以有扩展头部,可提供类似的功能。
以一个32位值的4字节为例,按以下顺序传输:首先是0-7位(高位),然后是8-15位,接着是16-23位,最后是24-31位(低位)。这就是所谓的高位优先字节序,它是TCP/IP头部中所有二进制整数在网络中传输时所需的字节顺序,也称为网络字节序(大端)。计算机的CPU使用其他格式存储二进制整数,例如大多数PC使用低位优先字节序,也称为主机字节序(小端)。在传输时必须将头部值转换为网络字节序,并在接收时再转换回来。
IP头部字段
第一个字段(只有4位或半个字节)是版本字段,它包含IP数据报的版本号:IPv4为4,IPv6为6。IPv4和IPv6头部除版本字段位置相同外再无其他是一样的。
Internet头部长度(IHL)字段保存IPv4头部中3