本文共 3278 字,大约阅读时间需要 10 分钟。
1、版本号(Version):长度 4 bit 。标识目前采用的 IP 协议的版本号。一般的值为 0100(IPv4),0110(IPv6)
版本号 | 版本 |
---|---|
0 | 保留 |
1~3 | 未分配 |
4 | Internet 协议版本 4(IPv4) |
5 | ST 数据报(Datagram) |
6 | 简单 Internet 协议(SIP) |
6 | IPv6 |
7 | TP / IX |
8 | P Internet 协议(PIP) |
9 | 使用更大地址的 TCP 和 UDP(TUBA) |
10~14 | 未分配 |
15 | 保留 |
2、IP 报头长度(Header Length):长度 4 bit 。这个字段的作用是为了描述 IP 报头的长度,因为在 IP 报头中有变长的可选部分。该部分占 4 个 bit,长度单位为 4 个字节,即本区域值 = IP 头部长度(单位为字节)/ 长度单位(4 个字节)。因此,一个 IP 报头的长度最长为 “ 1111 ”,即 15 x 4 个字节 = 60 个字节。IP 报头最小长度为 20 字节。
Header Length | Header Length 所代表的实际的 IP 报头长度 |
---|---|
0101 | 20 字节 |
0110 | 24 字节 |
0111 | 28 字节 |
… | … |
1101 | 52 字节 |
1110 | 56 字节 |
1111 | 60 字节 |
3、服务类型(Type of Service):长度 8 bit 。8 位按位被如下定义:PPP DTRC0
**TOS只表示用户的请求,不具有强制性,实际应用中很少用,路由器通常忽略TOS字段。**
- 000 普通(Routine)- 001 优先的(Priority)- 010 立即的发送(Immediate)- 011 闪电式的(Flash)- 100 比闪电还闪电式的(Flash Override)- 101 CRI / TIC / ECP(找不到这个词的翻译)- 110 网间控制(Internetwork Control)- 111 网络控制(Network Control)
- D (Delay更低的时延)时延:0:普通,1:延迟尽量小- T (Throughput 更高的吞吐量)吞吐量:0:普通,1:流量尽量大- R(Reliability更高的可靠性) 可靠性:0:普通,1:可靠性尽量大- C (Cost 更低费用的路由)传输成本:0:普通,1:成本尽量小- 0 最后一位被保留,恒定为 0
4、IP 包总长度(Total Length):长度 16 bit 。以字节为单位计算的 IP 包的长度(包括头部和数据),所以 IP 包最大长度 65 535 字节。所以,数据包有效载荷的大小 = IP 包总长度(Total Length)- IP 报头长度(Header Length)。
5、标识符(Identifier):长度 16 bit 。该字段和 Flags 和 Fragment Offest 字段联合使用,对较大的上层数据包进行分段(fragment)操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。
6、标记(Flags):长度 3 bit 。
7、片偏移(Fragment Offset):长度 13 bit,以 8 个八位组为单位。表示该 IP 包在该组分片包中位置,接收端靠此来组装还原 IP 包。
8、生存时间(TTL):长度 8 bit,设计之初是以秒(s)为单位的,但实际以跳数为单位,建议的缺省值为 64 。当 IP 包进行传送时,先会对该字段赋予某个特定的值。当 IP 包经过每一个沿途的路由器的时候,每个沿途的路由器会将 IP 包的 TTL 值减少 1 。如果 TTL 减少为 0,则该 IP 包会被丢弃。这个字段可以防止由于路由环路而导致 IP 包在网络中不停被转发。
9、协议(Protocol):长度 8 bit 。标识了上层所使用的协议。以下是比较常用的协议号:1 ICMP;2 IGMP;6 TCP;17 UDP;88 IGRP;89 OSPF 。
10、头部校验(Header Checksum):长度 16 bit 。用来做 IP 头部的正确性检测,但不包含数据部分。 因为每个路由器要改变 TTL 的值,所以路由器会为每个通过的数据包重新计算这个值。
11、起源和目标地址(Source and Destination Addresses):这两个地址都是 32 bit 。标识了这个 IP 包的起源和目标地址。要注意除非使用 NAT,否则整个传输的过程中,这两个地址不会改变。
12、可选项(Options):这是一个可变长的字段。该字段属于可选项,主要用于测试,由起源设备根据需要改写。可选项目包含以下内容:
字段 | 长度 | 含义 |
---|---|---|
版本 | 4比特 | IP协议的版本号,分为IPv4和IPv6协议。 |
首部长度 | 4比特 | IPv4的首部长度。 |
区分服务 | 8比特 | 用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。 |
总长度 | 16比特 | 指首部和数据之和的长度。 |
标识 | 16比特 | IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。 |
标志 | 3比特 | 目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。 |
片位移 | 13比特 | 指出较长的分组在分片后,该片在原分组中的相对位置。 |
生存时间TTL(Time To Live) | 8比特 | 表示数据报在网络中的寿命,功能是“跳数限制”。 |
协议 | 8比特 | 指出此数据报携带的数据是使用何种协议。 |
首部检验和 | 16比特 | 数据报每经过一个设备,设备都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。 |
源地址 | 32比特 | 报文发送方的IPv4地址。 |
目的地址 | 32比特 | 报文接收方的IPv4地址。 |
选项字段 | 0~40字节(长度可变) | 用来支持排错、测量以及安全等措施。在必要的时候插入值为0的填充字节。 |
数据部分 | 可变 | 用来填充报文。 |
转载于:https://blog.51cto.com/13854765/2163343