IP v4协议报头格式
0 4 8 16 19 24 32
版本 Version |
IP头长度 IHL |
服务类型(TOS) Type of Service |
总长度 Total Length |
||
标识符号 Identification |
标记 Flags |
分段偏移量 Fragment Offset |
|||
存活时间 Time to Live |
协议 Protocol |
包头校验和 Header Checksum |
|||
源IP地址 Source Address |
|||||
目的IP地址 Destination Address |
|||||
IP选项(若有的话) Options |
填充 Padding |
说明:
Version : 4 bits
显示当前正在运行的IP版本信息。当前为4
IHL : 4 bits
标明了以32比特为单位的消息中数据报报头的长度,这是所有报头的总长度。
注意:它的最小值为5
Type of Service : 8 bits
标明了一个特定的上层协议所分配的重要等级。
TOS字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。每TOS值最多只能有一个为1.
如下所示:
协议 TOS 值
TELNET/RLOGIN (1) 1000 (minimize delay)
FTP
Control 1000 (minimize delay)
Data (2) 0100 (maximize throughput)
TFTP 1000 (minimize delay)
SMTP (3)
Command phase 1000 (minimize delay)
DATA phase 0100 (maximize throughput)
Domain Name Service
UDP Query 1000 (minimize delay)
TCP Query 0000
Zone Transfer 0100 (maximize throughput)
NNTP 0001 (minimize monetary cost)
ICMP
Errors 0000
Requests 0000 (4)
Responses <same as request> (4)
Any IGP 0010 (maximize reliability)
EGP 0000
SNMP 0010 (maximize reliability)
BOOTP 0000
Total Length: 16 bits
标明整个分组的长度,以字节为单位。总长度减去IHL就是数据有效载荷的长度。
理论上最大长度可以为65535,但报文经过数据链路层时很可能被分片。
Identification: 16 bits
包含一个整数,用来标识当前的数据报。这是一个序列号。
Flag: 3 bits
实现不同的控制功能:
Bit 0 : 保留,必须置零。
Bit 1: (DF)
为0 表示可以对分组进行分片
为1 表示不可以对分组进行分片
Bit 2: (MF) 为0 表示该数据段是本分组中最后的一个数据分段
为1 表示后面还有数据分段
Fragment Offset: 13 bits
指示分段在数据包中的位置,用于重组数据分段。这个字段允许标记字段终止在16 Bit的边界
TTL : 8 bits
指示分组在网络传输中的允许保持的时间,以秒为单位。当该计时器为0时,数据报将被丢弃。
Protocol : 8 bits
指明了在IP处理过程结束后,哪一个上层协议将接收这些数据。
Header Checksum : 16 bits
用于确保IP头的完整性。
Source Address : 32 bits
指明了发送节点的IP地址。
Destination Address : 32 bits
指明了接收节点的IP地址。
Options :
长度可变的字段,让IP支持不同的功能特性。比如安全性。
该字段可能是零,或者更多的选项。该字段有2中使用情形:
1:用单一的一个字节表示选项类型
2:一个选项类型字节,一个选项长度字节,一个数据长度字节
Padding:这个字段以额外的0来填充IP报头,以确保其长度为32 bit的倍数。
其后就是数据字段。
来源URL:http://blog.csdn.net/cbuttonst/article/details/7616501