IP包格式
TCP/IP协议定义了通过互联网传输的数据包,称为IP数据报(IP数据报)。 这是一个独立于硬件的虚拟数据包,由头部和数据两部分组成。 标头的第一部分固定长度为20个字节,所有IP数据报都必须具有。 标头的固定部分后面是选项字段,其长度是可变的。
IP数据报开头的固定部分的各个字段
版本:占4位,指的是IP协议的版本。 通信双方使用的IP协议版本必须一致。 前几天广泛使用的IP协议的版本号是4 (即IPv4 )。 IPv6还处于初期阶段。
首部长度:占4位,可以表达的最大十进制值为15。 请注意,此字段中表示的数字单位为32位字。 因此,如果IP的起始长度为1111,则起始长度为60字节。 必须用最后的填充场填充。 因此,数据部分总是以4字节的整数倍开始,所以在实现IP协议方面很方便。 在某些情况下,将报头长度限制为60个字节是不够的。 这样做是因为希望尽可能减少用户的开销。 最常见的报头长度为20字节。 也就是说,头长是0101。 在这种情况下,使用任何选项。
服务:占8位以获得更好的服务。 在以前的标准中,此字段被称为服务类型,但实际上并未使用。 1998年IETF将此字段改名为区分服务区分服务(ds )。 只有在使用差异化服务时才使用此字段
总长度:的全长表示首都和数据的总长度,单位为字节。 由于全长字段为16位,因此数据报的最大长度为216-1=65 535字节。 IP层下各数据链路层具有包含帧格式内的数据字段的最大长度的独特的帧格式,在将一个数据报封装为链路层的帧的情况下,其数据报的全长、即报头和数据部分必须是任意的
标识 (Identification):占16位。 IP软件在内存中维护计数器,每次生成数据报时,它都会对计数器加1,并将该值分配给标识字段。 但是,这个“识别”不是序列号。 由于IP是未连接的服务器,因此数据报可以按顺序接收。 因为数据报的长度超过了网络的MTU,所以一定要
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报.占了3位,但现在只有2位有意义。 标志字段的底部是“模式格式”(MF ),MF=1是表示后面有分片的数据报。 MF=0表示这已经是一些数据报的结尾。 标志字段中央的1位是df ) ) )。
标志 (Flag):为13比特。 在长分组与片之后,对于一个片在原始组中的相对位置,即用户数据字段的起点,该片从哪里开始? 片的偏移以8字节为偏移单位,也就是说,每个片的长度必定是8字节(64位)的整数倍。
片偏移:是8位,生存时间字段的常用英文缩写是TTL(timetolive ),它指示数据报在网络中的寿命。 此字段由发布数据报的源点设置。 这样做的目的是防止无法发布的数据报无限制地围绕互联网运行。 因此,会白白消耗网络资源。 最初的设计以秒为TTL单位。 每次通过路由器时,从TTL中减去数据报在路由器上消耗的时间。 如果数据报在路由器上消耗的时间不足1秒,则将TTL的值减1。 如果TTL的值为0,则丢弃该数据报。
生存时间:位。 协议字段指示此数据报中包含的数据使用的是什么协议,以便目标主机的IP层知道应该将哪些处理流程传递给数据部分。 详情请参阅文章最后的评论。
协议:占16位。 此字段仅检查数据报的开头,不包含数据部分。 这是因为每次数据报通过路由器时,都要重新计算首都检查和(生存时间、标志、片偏移等可能发生变化),不检查数据部分可以减少计算工作量。
占首部检验和:位。
占源地址:位。
IP数据报开头的可变部分IP报头的可变部分是可选字段。 选项字段用于支持调试、测量和安全措施,内容丰富。 此字段的长度从1字节到40字节不等,取决于所选项目。 某些可选项只需要一个字节,并且只包含一个字节的选项代码。 但是,也有需要多个字节的选项,这些选项被一个接一个地拼接在一起,中间不需要分隔符。 最后
增加报头的可变部分是为了增加IP数据报的功能,但这同时使得IP数据报的报头长度变得可变,这意味着每次都要改变
一个路由器处理数据报的开销,实际上这些选项很少被使用.新的IP版本IPv6就将IP数据报的首部长度做成固定的.目前,这些任选项定义如下: 安全和处理限制(用于军事领域);记录路径(让每个路由器都记下它的IP地址);时间戳(Time Stamp)(让每个路由器都记下IP数据报经过每一个路由器的IP地址和当地时间);宽松的源站路由(Loose Source Route)(为数据报指定一系列必须经过的IP地址);严格的源站路由(Strict Source Route)(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址).
这些选项很少被使用,并非所有主机和路由器都支持这些选项.
实例
下面是一个TCP的SYN数据包,大家可以分析一下:
4500002C2A690000-4006B7580A616750-7CACAAAD24DE0E89-12DE958000000000-60023908EA4D0000-020405B4
版本:4,即IPv4;首部长度:5,即5*4=20B,说明没有可变部分;服务:00;总长度:002C,44B;标识:2A69;标志+片偏移:0000;生存时间:40,即64;协议:06,传输控制协议,也就是TCP;首部校验和:B758;源地址:0A616750;目的地址:7CACAAAD.
后面的数据是TCP的头部字段,这里先简单列出来,后面会详细分析:
源端口:24DE;目的端口:0E89;序号:12DE9580;确认号:00000000;数据偏移:6,即偏移24B.TCP的头部默认是20B,我们分析的数据包有一个TCP选项,占4B;保留+控制位:002,表明这是一个SYN包;窗口值:3908,14600,即发送者的接收窗口值;校验和:EA4D;紧急指针:0000;选项类型:02,最大报文段长度;选项长度:04;选项数据:05B4,即1355.
附录:IP数据包的协议字段中,数值和所对应的协议
数值 值描述
0 保留字段,用于IPv6(跳跃点到跳跃点选项)
1 Internet控制消息
2 Internet组管理
3 网关到网关
4 IP中的IP(封装)
5 流
6 传输控制
7 CBT
8 外部网关协议
9 任何私有内部网关(Cisco在它的IGRP实现中使用)
10 BBNRCC监视
11 网络语音协议
12 PUP
13 ARGUS
14 EMCON
15 网络诊断工具
16 混乱(Chaos)
17 用户数据报文
18 复用
19 DCN测量子系统
20 主机监视
21 包无线测量
22 XEROXNSIDP
23 Trunk-1
24 Trunk-2
25 leaf-1
26 leaf-2
27 可靠的数据协议
28 Internet可靠交易
29 ISO传输协议第四类
30 大块数据传输协议
31 MFE网络服务协议
32 MERIT节点之间协议
33 序列交换协议
34 第三方连接协议
35 域之间策略路由协议
36 XTP
37 数据报文传递协议
38 IDPR控制消息传输协议
39 TP+ +传输协议
40 IL传输协议
41 IPv6
42 资源命令路由协议
43 IPv6的路由报头
44 IPv6的片报头
45 域之间路由协议
46 保留协议
47 通用路由封装
48 可移动主机路由协议
49 BNA
50 IPv6封装安全有效负载
51 IPv6验证报头
52 集成的网络层安全TUBA
53 带加密的IP
54 NBMA地址解析协议
55 IP可移动性
56 使用Kryptonet钥匙管理的传输层安全协议
57 SKIP
58 IPv6的ICMP
59 IPv6的无下一个报头
60 IPv6的信宿选项
61 任何主机内部协议
62 CFTP
63 任何本地网络
64 SATNET和BackroomEXPAK
65 Kryptolan
66 MIT远程虚拟磁盘协议
67 Internet Pluribus包核心
68 任何分布式文件系统
69 SATNET监视
70 VISA协议
71 Internet包核心工具
72 计算机协议Network Executive
73 计算机协议Heart Beat
74 Wang Span网络
75 包视频协议
76 Backroom SATNET监视
77 SUN ND PROTOCOL—临时
78 WIDEBAND监视
79 WIDEBAND EXPAK
80 ISO Internet协议
81 VMTP
82 SECURE—VMTP(安全的VMTP)
83 VINES
84 TTP
85 NSFNET—IGP
86 不同网关协议
87 TCF
88 EIGRP
89 OSPFIGP
90 Sprite RPC协议
91 Locus地址解析协议
92 多播传输协议
93 AX.25帧
94 IP内部的IP封装协议
95 可移动网络互连控制协议
96 旗语通讯安全协议
97 IP中的以太封装
98 封装报头
99 任何私有加密方案
100 GMTP
101 Ipsilon流量管理协议
102 PNNI over IP
103 协议独立多播
104 ARIS
105 SCPS
106 QNX
107 活动网络
108 IP有效负载压缩协议
109 Sitara网络协议
110 Compaq对等协议
111 IP中的IPX
112 虚拟路由器冗余协议
113 PGM可靠传输协议
114 任何0跳跃协议
115 第二层隧道协议
116 D-II数据交换(DDX)
117 交互式代理传输协议
118 日程计划传输协议
119 SpectraLink无线协议
120 UTI
121 简单消息协议
122 SM
123 性能透明性协议
124 ISIS over IPv4
125 FIRE
126 Combat无线传输协议
127 Combat无线用户数据报文
128 SSCOPMCE
129 IPLT
130 安全包防护
131 IP中的私有IP封装
132 流控制传输协议
133~254 未分配
255 保留
转自: https://blog.csdn.net/ce123_zhouwei/article/details/17453033