图说明了IP协议标头基础知识
通过 Himanshu Arora
上 2012年3月26日
IP协议是TCP / IP堆栈中的主要协议之一。
所有TCP,UDP,ICMP和IGMP数据都以IP数据报的形式在网络上传输。
IP是连接少且不可靠的协议。从意义上说,连接较少,即在源或目标端均未维护与IP数据报相关的状态,并且在不能保证IP数据报将被传递至目标或不传递的意义上,这种连接是不可靠的。
如果IP数据报在目标或某个中间主机(从源到目标的传输)中遇到某些错误,则通常会丢弃IP数据报,并将ICMP错误消息发送回源。
TCP / IP套件中的IP层

从上图可以看出,IP协议位于TCP / IP协议套件的第2层,即Internet层。此处需要注意的另一点是如何在TCP / IP套件中打包数据。如果我们分析上面的图,我们会看到:
- 应用层将数据(要传输到远程目标)发送到传输层。
- 传输层将其标头放在开头,然后将完整的数据包(TCP标头+应用程序数据)发送到IP层。
- 在同一行上,IP层将其标头放在从TCP接收的数据的前面(请注意,从TCP接收的数据= TCP-header + app-data)。
- 因此,现在IP数据报的结构变为IP头+ TCP头+应用数据。
- 这个IP数据报被传递到以太网层,在同一行上,它在IP数据报上添加自己的报头,然后整个数据包通过网络传输。
在目标主机上,将执行相反的过程。这意味着每一层都在数据包中读取其自己的标头,然后剥离标头,以便最终应用程序接收到应用程序数据。
IP头

- 协议版本(4位) :这是协议标头中的第一个字段。该字段占4位。这表示当前使用的IP协议版本。使用的IP协议最常见的版本是版本4,而版本6已不在市场上并迅速流行。
- 标头长度(4位) : 该字段提供IP标头的长度。标头的长度以32位字表示。该长度还包括IP选项(如果有)。由于此字段为4位,因此允许的最大标头长度为60个字节。通常,当不存在任何选项时,此字段的值为5。此处5表示五个32位字,即5 * 4 = 20字节。
- 服务类型(8位) :此字段的前三位称为优先级位,从今天开始被忽略。接下来的4位代表服务类型,最后一位未使用。代表TOS的4位是:最小化延迟,最大通过量,最大可靠性和最小化金钱成本。
- 总长度(16位):表示IP数据报的总长度,以字节为单位。由于标题长度(如上所述)给出了标题的长度,而该字段给出了总长度,因此可以使用这两个字段轻松计算数据的长度及其起点。由于这是一个16位字段,它表示IP数据报的长度,因此IP数据报的最大大小可以为65535字节。当IP分段通过网络发生时,该字段的值也会更改。在某些情况下,IP数据报的长度非常小,但是某些数据链路(如以太网)会将这些小帧填充为最小长度,即46个字节。因此,要知道在以太网填充的情况下IP标头的确切长度,此字段非常有用。
- 识别(16位):此字段用于唯一标识IP数据报。每当IP数据报从源发送到目标时,此值都会增加。该字段在重组碎片IP数据报文时非常有用。
- 标志(3位):该字段由三位组成。尽管到目前为止保留了第一位,但后两位具有其重要性。第二位代表‘Don’t Fragment’一点。设置此位后,IP数据报将永远不会被分段,如果出现分段需求,则将其丢弃。第三位代表‘More Fragment’一点。如果该位置1,则表示分段的IP数据报,此数据报之后具有更多的片段。如果是IP数据报的最后一个片段,则不会设置此位,表示这是特定IP数据报的最后一个片段。
- 片段偏移(13位):如果IP数据报碎片,则该字段包含距IP数据报开头的偏移量(以8字节为单位)。同样,此字段用于重组分段的IP数据报。
- 生存时间(8位) :此值表示IP数据报在丢弃之前将经历的跳数。此字段的值在开始时设置为32或64(让我们说),但是在网络上的每一跳上,此字段都会减一。当该字段变为零时,数据报被丢弃。因此,我们看到该字段从字面上意味着网络上数据报的有效寿命。
- 协议(8位) :此字段表示将数据移交给IP层的传输层协议。当在目的地对数据进行多路分解时,此字段会派上用场,因为在这种情况下,IP将需要知道将数据切换到哪个协议。
- Â 标头校验和(16位) :此字段表示一个值,该值是使用覆盖标头中所有字段的算法计算得出的(假定此字段为零)。当IP数据报从源发送到目标时,将计算此值并将其存储在标头中,并且在目标端,将再次计算此校验和并针对标头中存在的校验和进行验证。如果值相同,则数据报未损坏,否则假定接收到数据报已损坏。因此,此字段用于检查IP数据报的完整性。
- 源IP和目的IP(各32位) :这些字段分别存储源地址和目标地址。由于这些字段的大小均为32位,因此可以使用IP地址的最大长度为32位。因此,我们看到这限制了可以使用的IP地址的数量。为了解决这个问题,引入了IP V6,它增加了该容量。
- 选项(可变长度) :此字段表示对特定IP数据报有效的选项列表。这是一个可选字段,可能存在也可能不存在。如果标题中存在任何选项,则第一个字节表示如下:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
复制标志 |
期权类别 |
选项编号 |
- 在上面的描述中,‘copy flag’意味着在此IP数据报被分段的情况下,将此选项复制到所有分段。的‘option 类’代表以下值:0-> control, 1-> reserved, 2 ->调试和测量,以及3->保留。下面列出了一些选项:
类 |
数 |
长度 |
描述 |
0 |
0 |
– |
选项列表末尾 |
0 |
1 |
– |
无操作 |
0 |
2 |
11 |
安全 |
0 |
3 |
变种 |
松散的源路由 |
0 |
9 |
变种 |
严格的源路由 |
0 |
7 |
变种 |
记录路线 |
0 |
8 |
4 |
流ID |
2 |
4 |
变种 |
互联网时间戳 |
- 数据:此字段包含来自协议层的数据,该数据已移交给IP层。通常,此数据字段包含传输层协议的标头和数据。请注意,在源主机的情况下,每个TCP / IP层协议在从其他层接收的数据的开头都附加有自己的标头,在源主机的情况下,每个协议都剥离自己的标头,并将其余数据发送到下一层。
如果您喜欢这篇文章,您可能还会喜欢..
重要的是IP是由IETF在RFC 2460(http://tools.ietf.org/html/rfc2460)