一、基本概念
IP数据包也称为IP报文分组,是网络层的一个协议,由IP报文头和IP报文用户数据组成,IP报文头部长度一半在20-60个字节之间。一个IP分组最大长度不能超过65535个字节。IP是一个不可靠和无连接的协议,因为它提供的的是最大努力传输;没有推自身传输的消息进行检错和跟踪的方法,因此IP具有内在协议层的不可靠性,如果对数据的可靠性质有要求可以选择IP+TCP,如果对数据的可靠性无要求可以使用IP+UDP。
二、数据格式
版本号[4bit] : 用于指定IP协议的版本号,目前主要版本为IPv4, 即第4版本号,通信双方的IP协议版本号必须一致,否则无法直接进行通信。
首部长度[4bit]:指IP报文头部长度,每个长度单位为4个字节, 最小长度(0101)为5个单位长度, 所以IP协议报文头部长度最小20(5 * 4)个字节;最大长度(四个bit全为1),为15个单位长度, 所以最大为60(15 * 4)个字节。
服务类型[8bit]: 用来表示更好的服务。
RFC791[互联网标准]:
其中前3个bit 表示报文优先级取值为 0: 普通级别(缺省标记值)、1:优先(数据业务)、2: 快速(数据业务)、3:闪速(语音控制)、4: 疾速(视频会议、视频流)、5:关键(语音数据)、6:网间控制(网络控制数据)、7:网络控制(网络控制数据), 后几位分别表示低延时、高吞吐、高可靠、低路由,字段为1表示启用,为0表示不启用。
总长度[16bit]: 包括首部和数据之和,单位为字节,报文总长度最大可表示65545个字节
标识[16bit]: 唯一标识主机发送的数据报,当IP报文长度超过网络的MTU(最大传输单元)时,进行分片,该标示字段不变。 通常每发送一个报文,该字段值+1
标志[3bit]:传输控制标志, 分别表示R、DF、MF三位, DF位为分片标志位值为0分片,MF位中断标志位值为1表示最后分片字段
片偏移[13bit]:在原先数据报文中相对首位的偏移位。(需要再乘以8)
生存时间(TTL)[8bit]:IP报文所允许通过的路由器的最大数量。每经过一个路由器,TTL减1,当为0时,路由器将该数据报丢弃。TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64。发送 ICMP 回显应答时经常把 TTL 设为最大值 255。
协议号[8bit]:IP报文携带的数据使用的是那种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程
首部校验和[8bit]:计算IP头部的校验和,用于检测首部在传输过程中是否出现差错
源IP地址[32bit]:发送端设备IP地址
目标IP地址[32bit]:目标IP地址
选项信息:IP选项是IP固定首部之后的选项部分,由于IP首部长度是用4bit来计数,以4个字节为表示的,所以首部长度最多为60个字节,IP选项最多为40个字节。IP选项字段可能包含0~多个单独选项。选项包含两类:单字节与多字节。
单字节:单个标明类型的选项, 单字节IP选项只有俩个
选项表的结尾:在可变长度的选项的结尾必须使用操作结束符(有时成为选项列表结束符),因此,只能有一个选项结束符。选项结束符在所有选项的结尾。并且只有在选项的结尾无法按照IP数据报的题头长度字段中规定与选项题头的结尾保持一致时,才会使用结束符。
无操作:是一个填充字符,没有任何功能,只作为填充符放在选项的开始或现象之间,一边在32位边界对其下一个选项,无操作字节没有长度字段。用于规定数据报控制选项,并支付只到第一个段中
多字节: 多字节IP选项共有七个,由一个字节的复用字段,一个字节的长度字段和一个可变长度的数据字段组成。
记录路由:记录有为记录IP数据在从源设备传输到目的设备时采用的路径提供了一种方法。
时间戳:用于记录路由器有路由处理数据报所用的时间,时间以毫秒为单位,时间戳只能给出数据包从一个路由器传输到下一个路由器所使用的时间的预估值。
严格源路由:严格路由为设备提供了数据报到达目的地必须通过的跳(路由器接口)的列表,这些跳是数据报可以使用的唯一路由器。 在这个列表中两个连续地址之间的路径之间不能有多个物理网络否则将产生一个错误信息。如果数据不能沿着严格源路由指定的路径传送。这个数据将会丢弃。
宽松源路由:宽松源路由允许主机或路由器使用具有任何数量的中间路由器的路由到达该路由中的下一个必经的接口。如果路由器利用记录的路由器代替愿路由,这个选项成为宽松源和记录路由选项
数据包:上层协议数据