首页 > 代码库 > IP首部详解
IP首部详解
4位版本 | 4位首部长度 | 8位服务类型(TOS) | 16位总长度 | |
16位标识符 | 3位标志 | 13位片偏移 | ||
8位生存时间 | 8位协议 | 16位首部检验和 | ||
32位源IP地址 | ||||
32位目的IP地址 | ||||
32位选项(若有) | ||||
数据 |
首都长度:IP首部的长度,一般为20B.版本:IP地址的版本,目前我们使用的都是第4版,所以这种IP也经常称为IPV4.
服务类型:服务类型包括一个3bit的优先权字段(现已被忽略),4bitTOS字段和1位未用位但必须置为0。4位的TOS分别代表最小延迟、最大吞吐量、最高可靠性和最小费用。对于TOS值,不同应用有不同的最佳值。具体值可参考RFC1394文档:http://www.rfc-editor.org/pdfrfc/rfc1349.txt.pdf
总长度:数据包的总长度。该字段是IP首部的必要内容,因为链路层需要填充一些数据以达到最小长度。(PS:以太网的最小帧长为46B).
标识符:唯一标识主机发送的每一份数据报。
标志:分为3个字段,依次为保留位、不分片位和更多片位。
保留位:一般被置为0;
不分片位:表示该数据报是否被分片,如果被置为1,则不能对数据报进行分片,如果要对其进行分片处理,就应将其置为0。
更多片位:除了最后一个分片,其他每个组成数据报的片都要讲该位置为1.
片偏移:该分片相对于原始数据报开始处位置的偏移量。
生存时间:设置数据报可以经过的最多路由器数,它指定了数据报的生存时间。生存时间由源主机指定,在数据报传输过程中,每经过一个路由器,该值就减1,当该字段的值为0时,数据报就会被丢弃,并发送ICMP报文通知源主机。
协议:向IP层传输数据的协议类型,常见协议类型的值:表示
1. ICMP协议表示
2. IGMP协议
6. 表示TCP协议
7. 表示UDP协议
首部许校验和:校验接收到的IP数据报是否有差错。
源IP地址:源主机的IP地址。
目的IP地址:目的主机的IP地址。
选项:该字段是数据报中的可选字段。这也是前面所说的IP首部长度一般为20B的原因。目前这个选项有如下定义:
安全和处理限制(用于军事领域)
记录路径
时间戳
宽松的源站选路
严格的源站选路
PS:这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
下面看一个使用WireShark抓取到的一条信息的IP首部:
从上面的数据包中我们可以看出IP首部中的每一个字段信息,通过了解这些字段的含义,我们就可以对数据包进行准确的分析,从而解决遇到的网络问题。
参考资料:TCP/IP详解(卷1)
IP首部详解