查看: 134446|回复: 59

[原创]IP协议报头学习笔记

[复制链接]
发表于 2008-1-29 16:19:27 | 显示全部楼层 |阅读模式
IP,全称Internet Protocol,中文名为因特网协议。

IP协议有两个基本任务:提供无连接的和最有效的数据包传送;提供数据包的分割及重组以支持不同最大传输单元大小的数据连接,其报头结构和解码如下图所示:
     
(图1 IP协议结构)

(图2 科来网络分析系统之IP协议解码)

版本
目前常见的版本号是4,因此有时也叫IPV4。

首部长度
用来标识以32bit字长的IP头的长度,也包括可选项,这是一个4bit的字段,因此首部最长为60个字节。没有选项的IP头的值为20字节,长度为5。

区分服务字段
当数据报由路由器从源主机发到目的主机时,服务类型可以影响数据报的路径。服务类型允许高层应用和进程指出它们需要从路由器获得的质量和服务类型。因为很少使有,一般值都为0,这是一个期望值。

总长度
以字节为单位定义了整个IP数据报的长度,该值包括IP头和数据报中所携带的数据。

标识
在数据报发送之前,发送主机给每个数据报一个ID值,此ID唯一的标识了数据报或数据报的流,而目的主机也利用此ID对收到的数数报进行重组。当然如果收到的数据对传输的介质而言太大时,则会对数据进行分段,对于分段的数据包则分配相同的ID,我们在后面会有详细的描述。

分段标识
第0比特= 预留位,必须置0;                 
第1比特= 可以取下列两个值之一:
 0= 可能分段;
 1= 没有分段;
用于发送主机或网关进行分段,如果支持(此位置0)就在传输前将数据流分成较小的块,如果不支持(此位置1)主机或网关就不能对数据进行分段;当然还有一种情况,那就是你网络的MTU值决定是否对数据进行分段。以太网帧最大为1518字节。
第2比特= 可以取下列两个值之一:
 0= 最后一段;
 1= 更多分段;
该值用来表示此数据报是数据流中的最后一个或者后面还有更多的段。当然,只有一个段,则此比特值为0,表示这是第一个,也是最后一个。目的主机收到数据报时,观察此ID并检查此位的值,以确定这是最后一个数据报或者后面还有更多的数据报。如果还有后续数据报,则主机将数据报保存在内存中直到所有具有相同ID的其它数据报的到来,然后重组报文将其传送到高层相应的协议处理。
通过对ID值的匹配和参考最后一个或几个比特是0或1,主机就可以知道何时停止等待下一报文,何时开始重组报文。

分段偏移量

分段偏移量用来标识数据报在发送数据流中的位置,也就是用同一个IP标识发送多个数据报时的顺序号。发送主机总是给第一个数据报的偏移赋值0。而分配给以后的数据偏移值则跟MTU有关,接收主机通过此偏移值将数据重组或检查数据是否丢失。我们以一个例子来学习分段偏移量:
我们执行ping 192.168.0.1 –l 3000 (192.168.0.1为网关),进行抓包,然后来查看偏移量的值,如下图:

从上图可知中,共捕获到了三个数据包,第一个协议是ICMP,后面两个是IP Fragment,前面两个数据包的大小是1518字节,第三个是86字节。第一个数据包的IP偏移量是0,第二个是185,第三个是370。
那这个偏移量是怎样算来的呢?首先我们来看这三个数据包传输的数据大小:

上表中,第1个数据包中,多了一个ICMP报头,所以在计算传输的数据时,多减了8个字节的ICMP报头,而后面的两个数据包由于不存在ICMP的报头开销,所以不需要减去8字节的ICMP报头。将传输的数据加起来,1472+1480+48=3000,与执行的命令参数完全吻合。
注意:如果有更多的分段,按照此规则依次累加即可,同时所有分段数据包的IP标识都是相同的。
现在回到对偏移量的介绍:我们知道,段以8字节为单位,而第一个数据包传输的数据为1472,也就是有184个段(1472/8),所以第二个数据报的偏移则为184+1=185,依次类推,第三个数据包应是184+185(1480/8)+1=370。

生存时间
生存时间(time to live)用来设置数据报可以经过的最多路由数和数据报的生存时间,并保证不能被传送的数据报被丢弃,通常情况下,生存时间由源主机设置,但最大值不能超过255。数据报每经过一个网关时,生存时间的值都为减去1,当值减为0时,此数据由会被生存时间减为0的设备发送ICMP报文给源主机。

上层协议
此字段来标识哪一个高层协议处理此信息,这里简列举几个:
6(TCP) 17(UDP) 1(ICMP)

校验和
因为IP是一个无连接的协议,因此它并未实现任何类型的错误纠正机制,IP只是将数据报发送出去,给其编址并希望能达到目的主机。所以IP采用了简单的校验和机制来验证IP头的完整性,从而保证源主机和目的主机在传输过程中没有任何变化。

源IP地址
发送主机的逻辑地址。

目标IP地址
目标主机的逻辑地址。

可选项
主机或网关可以实现可选参数,当使用可选参数时,主机或和网关都必须支持才能实现,当然可选项不是必须的。选项字段一直以32bit作为界限,在必要时以0填充,这样确保IP首部始终都是32bit的整数倍。

[ 本帖最后由 徐徐渐进 于 2008-1-29 16:37 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×

评分

2

查看全部评分

回复

使用道具 举报

发表于 2008-1-30 00:05:02 | 显示全部楼层
分段偏移量的讲解很好。校验和只是头部的,不含数据吧?
回复

使用道具 举报

 楼主| 发表于 2008-1-30 09:08:46 | 显示全部楼层
原帖由 oldjiang 于 2008-1-30 00:05 发表
分段偏移量的讲解很好。校验和只是头部的,不含数据吧?

是的,IP校验和又被叫做首部校验和。
这里要与TCP、UDP、ICMP、IGMP协议区别,它们会对首部和数据都进行校验。

回复

使用道具 举报

发表于 2008-1-31 20:12:01 | 显示全部楼层
菜鸟进来学习!LZ辛苦啦!
回复

使用道具 举报

发表于 2008-2-11 10:22:11 | 显示全部楼层
恩有点复杂            
回复

使用道具 举报

发表于 2008-2-19 15:06:44 | 显示全部楼层
首部长度
用来标识以32bit字长的IP头的长度,也包括可选项,这是一个4bit的字段,因此首部最长为60个字节。没有选项的IP头的值为20字节,长度为5。

想问一下,上面说的4 BIT的长度怎么算出为60个字节的,4位二进制数不是最多表示为十进制的15吗。。
回复

使用道具 举报

发表于 2008-4-28 13:04:27 | 显示全部楼层
原帖由 lcdy 于 2008-2-19 15:06 发表
首部长度
用来标识以32bit字长的IP头的长度,也包括可选项,这是一个4bit的字段,因此首部最长为60个字节。没有选项的IP头的值为20字节,长度为5。

想问一下,上面说的4 BIT的长度怎么算出为60个字节的,4位二进 ...



4×15   以4字节为单位  所以可以得出最大表示60字节

评分

1

查看全部评分

回复

使用道具 举报

发表于 2008-6-16 21:32:12 | 显示全部楼层
顶了再看
回复

使用道具 举报

发表于 2008-6-19 10:03:11 | 显示全部楼层
有没有结构图?
回复

使用道具 举报

 楼主| 发表于 2008-6-19 13:28:34 | 显示全部楼层
原帖由 joyfly 于 2008-6-19 10:03 发表
有没有结构图?

什么结构图?
回复

使用道具 举报

发表于 2008-7-8 23:16:35 | 显示全部楼层
这一篇,实在是写的太好了。我们就需要这样的学习内容。。。感激楼主!!!
回复

使用道具 举报

发表于 2008-7-9 09:09:15 | 显示全部楼层
楼主原创的  很不错哦
回复

使用道具 举报

发表于 2008-7-15 17:37:00 | 显示全部楼层
谢谢LZ滴分享了,下载了先~~
顶起~
回复

使用道具 举报

发表于 2008-10-17 11:57:15 | 显示全部楼层
今天正好碰到了和LZ一样的攻击,但我的攻击流量不是特别大,路由器的性能不是很好,PING就会丢包。
回复

使用道具 举报

发表于 2009-3-29 00:11:26 | 显示全部楼层
LZ辛苦了,谢谢分享
回复

使用道具 举报

发表于 2009-7-10 11:46:06 | 显示全部楼层
谢谢楼主的分享,写的很详细。
回复

使用道具 举报

发表于 2009-7-23 15:11:49 | 显示全部楼层
原帖由 aps236 于 2008-4-28 13:04 发表



4×15   以4字节为单位  所以可以得出最大表示60字节


报文头部长度以32bit为单位。
回复

使用道具 举报

头像被屏蔽
发表于 2009-8-9 15:15:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-8-14 10:45:17 | 显示全部楼层

学好语文真的很重要

协议本身并不难理解,难在如何表达清楚....
回复

使用道具 举报

发表于 2009-8-24 11:43:48 | 显示全部楼层
原帖由 oldjiang 于 2008-1-30 00:05 发表
分段偏移量的讲解很好。校验和只是头部的,不含数据吧?

分段偏移量讲得真的非常好。
回复

使用道具 举报

发表于 2009-11-4 09:26:54 | 显示全部楼层
dddddddddddddddddddddddddddddddddddddddddddd
回复

使用道具 举报

发表于 2009-11-4 11:12:42 | 显示全部楼层
講解不錯...多謝分享....
的帖子长度不符合要求。 当前长度: 23 字节 系统限制: 30 到 11000 字节
回复

使用道具 举报

发表于 2009-12-8 13:35:33 | 显示全部楼层
学习了!````````````````````````````````
回复

使用道具 举报

发表于 2009-12-12 12:13:39 | 显示全部楼层
学习了,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
回复

使用道具 举报

发表于 2010-1-15 09:46:33 | 显示全部楼层
不错,原创好东西,下载收藏了!!!
回复

使用道具 举报

发表于 2010-3-9 20:52:22 | 显示全部楼层
楼主写得很好 。谢谢了。。。。。。。
回复

使用道具 举报

发表于 2010-3-9 23:13:10 | 显示全部楼层
好东西!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

发表于 2010-3-9 23:53:35 | 显示全部楼层
楼主讲的很好,不过1518-14-20-8-4
我是菜鸟,20,8知道,14和4是啥
回复

使用道具 举报

发表于 2010-4-2 14:30:33 | 显示全部楼层
怎么还要花钱那!!!!
回复

使用道具 举报

发表于 2010-4-4 12:00:38 | 显示全部楼层
谢谢楼主分享。。。。。。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表