现在的位置: 首页 > 综合 > 正文

ip报文头

2014年02月11日 ⁄ 综合 ⁄ 共 1718字 ⁄ 字号 评论关闭
我理解的IP报文头
2008-09-24 01:26

在我们的网络中,IP的使用大家应该都不会陌生,但是对IP数据包的内容,也许有很多人并不了解。
IP数据包也叫IP报文分组,传输在ISO网络7层结构中的网络层,它由IP报文头和IP报文用户数据组成,IP报文头的长度一般在20到60个字节之间,而一个IP分组的最大长度则不能超过65535个字节。
下图为IP分组的报文头格式,报文头的前20个字节是固定的,后面的可变。


版本:占4位(bit),指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。
首部长度:占4位(bit),指IP报文头的长度。最大的长度(即4个bit都为1时)为15个长度单位,每个长度单位为4字节(TCP/IP标准,DoubleWord),所以IP协议报文头的最大长度为60个字节,最短为上图所示的20个字节。
服务类型:占8位(bit),用来获得更好的服务。其中的前3位表示报文的优先级,后面的几位分别表示要求更低时延、更高的吞吐量、更高的可靠性、更低的路由代价等。对应位为1即有相应要求,为0则不要求。
总长度:16位(bit),指报文的总长度。注意这里的单位为字节,而不是4字节,所以一个IP报文的的最大长度为65535个字节。
标识(identification):该字段标记当前分片为第几个分片,在数据报重组时很有用。
标志(flag):该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片),后面是否还有分片(是否是最后一个分片)。
片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。
生存时间:TTL(Time to Live)。该字段表明当前报文还能生存多久。每经过1ms或者一个网关,TTL的值自动减1,当生存时间为0时,报文将被认为目的主机不可到达而丢弃。使用过Ping命令的用户应该有印象,在windows中输入ping命令,在返回的结果中即有TTL的数值。
协议:该字段指出在上层(网络7层结构或TCP/IP的传输层)使用的协议,可能的协议有UDP、TCP、ICMP、IGMP、IGP等。
首部校验和:用于检验IP报文头部在传播的过程中是否出错,主要校验报文头中是否有某一个或几个bit被污染或修改了。
源IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。
目的IP地址:32位(bit),4个字节,每一个字节为0~255之间的整数,及我们日常见到的IP地址格式。

与IP层(网络层)相关的网络层次介绍:
物理层:平时所见的电缆、光纤、网线、接口等各种连接设备,是计算机网络的基础。
数据链路层:在计算机网络通信中,所有数据都是二进制的数据,数据链路层就是解决二进制的传播、校验、寻址(物理地址、网卡地址)等功能的。数据链路层使各种物理设备连接的网络使用相同的信号机制进行通信。数据链路层传输的单位是帧。
网络层:我们常说的IP层,将各种数据格式的链路统一起来,使用标准的IP协议进行通信。这个有点类似java的JDBC,不过你是哪种类型的数据库,不管你怎么实现增删改查,到了我这里就得按我的规定走。这里,IP协议也不管你下面用的是以太网、无线网、令牌网,你下面的通信协议如何,数据格式如何,要求到了网络层,就必须形成我规定的数据格式(如报文头应该如何如何)。数据链路层的数据到了网络层,可能要分片,封装成IP报文,形成分组(数据包)。当然也有一些网络层协议不同于IP协议,但是应用的很少,比如ATM协议。
传输层:传输层主要用于控制报文从网络的一端到达另外一端,提够可靠的端到端的服务。它会根据网络的现状,以可靠与经济的方式,在两个主机之间,建立可靠的链接。对IP层传送上来的分组进行重新组装,同时也会把从上层传过来的报文分组打包,传给IP层。
应用层:略。

 

转载于:http://hi.baidu.com/lanruijin/blog/item/b54638466e980c0f6a63e578.html

【上篇】
【下篇】

抱歉!评论已关闭.