1. IP数据首部长度:
4位版本号 :
4 位,用于标明 IP 版本号,0100 表示 IPv4,0110 表示 IPv6。目前常见的是 IPv4。
4位首部长度:
首部长度是占4位,可表示的最大十进制值是15. 这个字段的单位是32位字(一个32位字长4个字节)。所以当 IP 首部长度为 1111 (就是十进制15),首部长度就达到最大值 60 字节,这个不常用,为减小开销,常用20字节(首部长度为 0101, 5*4=20) 。
服务类型(TOS) :
分别有:最小时延、最大吞吐量、最高可靠性、最小花费 4 种服务,如下图所示。4 个标识位只能有一个被置为 1 :
TOS包括共8位,包括3 bit的优先权字段(取值可以从000-111所有值),4 bit的TOS子字段和1 bit未用位但必须置0。
3bit的8个优先级的定义如下:
111--Network Control(网络控制);
110--Internetwork Control(网间控制);
101--Critic(关键);
100--Flash Override(疾速);
011--Flash(闪速);
010--Immediate(快速);
001--Priority(优先);
000--Routine(普通)。
优先级6和7一般保留给网络控制数据使用,如路由。
优先级5推荐给语音数据使用。
优先级4由视频会议和视频流使用。
优先级3给语音控制数据使用。
优先级1和2给数据业务使用。
优先级0为默认标记值。
在标记数据时,既可以使用数值,也可以使用名称(英文名称)。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
Telnet、Rlogin这两个交互应用要求最小的传输时延,FTP文件传输要求最大吞吐量,最高可靠性是指网络管理(SNMP)和路由选择协议。用户网络新闻要求最小费用
总长度 :
16 位,报头长度加上数据部分长度,便是数据报的总长度。IP 数据报最长可达 65535 字节。
标识 :
16 位,接收方根据分片中的标识字段相不相同来判断这些分片是不是同一个数据报的分片,从而进行分片的重组。通常每发送一份报文它的值就会加 1。
标志 :
3 位,用于标识数据报是否分片。其中的第 2 位是不分段(DF)位。当 DF 位被设置为 1 时,则不对数据包进行分段处理;第 3 位是分段(MF)位,除了最后一个分段的 MF 位被设置为 0 外,其他的分段的 MF 位均设置为 1。
偏移 :
13 位,在接收方进行数据报重组时用来标识分片的顺序。
生存时间(TTL) :
8 位,用于设置数据报可以经过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每经过一个处理它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被丢弃。
协议 :
8 位,用来标识是哪个协议向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。
首部校验和 :
根据 IP 首部计算的校验和码。
源 IP 和目的 IP :
数据报头还会包含该数据报的发送方 IP 和接收方 IP。
选项 :
是数据报中的一个可变长、可选的信息,不常用,多用于安全、军事等领域。
____________________________________________________________________________________________________________________
wireshark 是一个非常好的网络抓包分析工具。
Riverbed Technology是一中先进的广域网技术,可以大幅度提高传输速度。
ip包实例分析:
要分析IP包,首先要知道 IP包的包头格式,各种计算机网络的书籍都有介绍,必须了解该协议分析包才有意义,IPv4首部一般是20字节长,该协议如下:
下面使用Ethereal抓取一个特定的IP包,然后根据该协议分析该IP包。
使用Ethereal抓取的IP包如下: 我用不同的框框划分出来了,便于分析。
首先,开始的 6字节+ 6字节 + 2字节不属于IP包包头本身。
(1)“ 00 e0 4c 5f 97 1b ” 目的主机的MAC地址
(2)“ 00 1a 4d 28 62 ff ” 源主机的MAC地址:
(3)“08 00 ” 包类型: 08 00 为 IP包 后面的开始为真正的IP包包头,可以根据上面的协议进行分析了。
(4)“45”,其中“4”是IP协议的版本(Version),说明是IP4 “5”指本IP包的包头长度为 5X4 = 20 字节
(5)“00”服务类型(Type of Service)
(6)“00 40”是IP数据报文总长,包含头部以及数据,这里表示4X16 = 64字节(注:00 40为16进制表示)
(7) " 62 06 "、" 40 00 " 表示认证、标志、段偏移:主要用于数据报的分段
(8) " 40" 表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值,很多文章就说通过TTL位来判别主机类型。因为一般主机都有默认的TTL值,不同系统的默认值不一样.
(9)" 06 " 很重要,表示传输层的协议类型(Protocol),06表示TCP协议
(10)"8b e5" 为校验和
(11)"c0 a8 0c 34" 源地址的IP : 即192.128.12.52
(12)"79 c2 06 2e"目的地址的IP:即121.194.6.46 后面接着的就是IP的数据内容了,IP包包头分析就到此为止,其实分析包头并不难,UDP、ARP包的分析可以按照本文的思路,按照协议一一分析即可。