各种数据报和数据包格式.docx
- 文档编号:26757639
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:15
- 大小:242.85KB
各种数据报和数据包格式.docx
《各种数据报和数据包格式.docx》由会员分享,可在线阅读,更多相关《各种数据报和数据包格式.docx(15页珍藏版)》请在冰豆网上搜索。
各种数据报和数据包格式
IP数据包格式
……
总长度
服务类型
版本
首部长度
标识
源站IP地址
寿命
协议
首部校验和
片偏移
标志
目的站IP地址
IP选项(可选)
填充
数据
版本字段:
4位。
当前的IP协议版本是4,通常称为IPv4。
下一个版本是6,称为IPv6
首部长度:
4位,IP数据报首部的长度,每个单位为4个字节。
IP数据报的长度是4个字节的整数倍。
服务类型:
8位,服务类型。
前3位为优先级,用于表示数据报的重要程度,优先级取值从0(普通优先级)到7(网络控制高优先级)。
D、T和R位表示本数据报希望的传输类型。
D表示低时延(Delay)需求
T表示高吞吐量(Throughput)要求
R代表高可靠性(Reliability)要求。
总长度:
总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
标识(identification):
占16位。
IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
标志(flag):
占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(MoreFragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don’tFragment),意思是“不能分片”。
只有当DF=0时才允许分片。
片偏移:
占13位。
片偏移指出:
较长的分组在分片后,某片在原分组中的相对位置。
也就是说,相对用户数据字段的起点,该片从何处开始。
片偏移以8个字节为偏移单位。
这就是说,每个分片的长度一定是8字节(64位)的整数倍。
生存时间:
占8位,生存时间字段常用的的英文缩写是TTL(TimeToLive),表明是数据报在网络中的寿命。
由发出数据报的源点设置这个字段。
其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。
最初的设计是以秒作为TTL的单位。
每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。
若数据报在路由器消耗的时间小于1秒,就把TTL值减1。
当TTL值为0时,就丢弃这个数据报。
协议:
占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
首部检验和:
占16位。
这个字段只检验数据报的首部,但不包括数据部分。
这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。
不检验数据部分可减少计算的工作量。
源地址:
占32位
目的地址:
占32位
2、IP数据报首部的可变部分
IP首部的可变部分就是一个可选字段。
选项字段用来支持排错、测量以及安全等措施,内容很丰富。
此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
某些选项项目只需要1个字节,它只包括1个字节的选项代码。
但还有些选项需要多个字节,这些选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。
这就增加了每一个路由器处理数据报的开销。
实际上这些选项很少被使用。
新的IP版本IPv6就将IP数据报的首部长度做成固定的。
目前,这些任选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(让每个路由器都记下它的IP地址)
(3)时间戳(让每个路由器都记下它的IP地址和时间)
(4)宽松的源站路由(为数据报指定一系列必须经过的IP地址)
(5)严格的源站路由(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的地址)
这些选项很少被使用,并非所有主机和路由器都支持这些选项。
TCP数据包格式
源端口和目的端口字段——各占2字节。
端口是传输层与应用层的服务接口。
传输层的复用和分用功能都要通过端口才能实现。
序号字段——占4字节。
TCP连接中传送的数据流中的每一个字节都编上一个序号。
序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移——占4bit,它指出TCP报文段的数据起始处距离CP报文段的起始处有多远。
“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。
保留字段——占6bit,保留为今后使用,但目前应置为0。
紧急比特URG——当URG=1时,表明紧急指针字段有效。
它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认比特ACK——只有当ACK=1时确认号字段才有效。
当ACK=0时,确认号无效。
复位比特RST(Reset)——当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。
终止比特FIN(FINal)——用来释放一个连接。
当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段——占2字节。
窗口字段用来控制对方发送的数据量,单位为字节。
TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验和——占2字节。
检验和字段检验的范围包括首部和数据这两部分。
在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针字段——占16bit。
紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
选项字段——长度可变。
TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
填充字段——这是为了使整个首部长度是4字节的整数倍。
UDP数据包格式
UDP数据报格式有首部和数据两个部分。
首部很简单,共8字节。
包括:
◆源端口(SourcePort):
2字节,源端口号。
◆目的端口(DestinationPort):
2字节,目的端口号。
◆长度(Length):
2字节,UDP用户数据报的总长度,以字节为单位。
◆检验和(Checksum):
2字节,用于校验UDP数据报的数字段和包含UDP数据报首部的“伪首部”。
其校验方法同IP分组首部中的首部校验和。
伪首部,又称为伪包头(PseudoHeader):
是指在TCP的分段或UDP的数据报格式中,在数据报首部前面增加源IP地址、目的IP地址、IP分组的协议字段、TCP或UDP数据报的总长度等共12字节,所构成的扩展首部结构。
此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性。
ARP报文格式:
硬件类型(16位)
协议类型(16位)
硬件地址长度(8位)
协议地址长度(8位)
操作代码(16位)
发送方硬件地址(以太网为6字节)
发送方协议地址(以太网为4字节)
目标方硬件地址(以太网为6字节)
目标方协议地址(以太网为4字节)
硬件类型:
2字节,表示发送者硬件地址类型,值为1表示以太网地址。
协议类型:
2字节,表示发送方要映射的协议地址类型,该字段的常用值如下表。
协议地址为IP地址时,它的值为0x0800。
它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。
硬件地址长度和协议地址长度:
各占1字节,分别指出硬件地址长度和协议地址长度。
对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。
操作代码:
ARP和RARP在设计时协议格式完全相同,只有操作代码可以区分。
1-----ARP请求报文
2-----ARP应答报文
3-----RARP请求报文
4-----RARP应答报文
发送方硬件地址和发送方协议地址:
目的方硬件地址和目的方协议地址:
ICMP报文格式
类型(0,8)
代码(0)
校验和
标识符
序列号
选项
各种ICMP报文的前32bits都是三个长度固定的字段:
type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)
8bits类型和8bits代码字段:
一起决定了ICMP报文的类型。
常见的有:
类型8、代码0:
回射请求。
类型0、代码0:
回射应答。
类型11、代码0:
超时。
16bits校验和字段:
包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。
对于ICMP回射请求和应答报文来说,接下来是16bits标识符字段:
用于标识本ICMP进程。
最后是16bits序列号字段:
用于判断回射应答数据报。
ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面
一个ICMP报文包括IP头部(20字节)、ICMP头部(8字节)和ICMP报文
RFC定义了13种ICMP报文格式,具体如下:
类型代码类型描述
0响应应答(ECHO-REPLY)
3不可到达
4源抑制
5重定向
8响应请求(ECHO-REQUEST)
11超时
12参数失灵
13时间戳请求
14时间戳应答
15信息请求(*已作废)
16信息应答(*已作废)
17地址掩码请求
18地址掩码应答
其中代码为15、16的信息报文已经作废。
IPSEC数据包格式
隧道模式使用IPSec隧道模式时,IPSec对IP报头和有效负载进行加密,而传输模式只对IP有效负载进行加密。
通过将其当作AH或ESP有效负载,隧道模式提供对整个IP数据包的保护。
使用隧道模式时,会通过AH或ESP报头与其他IP报头来封装整个IP数据包。
外部IP报头的IP地址是隧道终结点,封装的IP报头的IP地址是最终源地址与目标地址。
IPSec隧道模式对于保护不同网络之间的通信(当通信必须经过中间的不受信任的网络时)十分有用。
隧道模式主要用来与不支持L2TP/IPSec或PPTP连接的网关或终端系统进行互操作。
可以在下列配置中使用隧道模式:
•网关到网关
•服务器到网关
•服务器到服务器
AH隧道模式如下图所示,AH隧道模式使用AH与IP报头来封装IP数据包并对整个数据包进行签名以获得完整性并进行身份验证。
ESP隧道模式如下图所示,ESP隧道模式采用ESP与IP报头以及ESP身份验证尾端来封装IP数据包。
数据包的签名部分表示对数据包进行签名以获得完整性并进行身份验证的位置。
数据包的加密部分表示受到机密性保护的信息。
由于为数据包添加了隧道新报头,因此会对ESP报头之后的所有内容进行签名(ESP身份验证尾端除外),因为这些内容此时已封装在隧道数据包中。
原始报头置于ESP报头之后。
在加密之前,会在整个数据包上附加ESP尾端。
ESP报头之后的所有内容都会被加密,ESP身份验证尾端除外。
这包括原始报头,该报头此时被视为数据包的数据部分的一部分。
然后,会将整个ESP有效负载封装在未加密的新隧道报头内。
新隧道报头内的信息只用来将数据包从源地址发送到隧道终结点。
如果通过公用网络发送数据包,则数据包会路由到接收方Intranet的网关的IP地址。
网关对数据包进行解密、丢弃ESP报头并使用原始IP报头将数据包路由到Intranet计算机。
进行隧道操作时,ESP与AH可组合使用,从而为隧道IP数据包提供保密性,同时为整个数据包提供完整性和身份验证。
使用IPSec隧道IPSec隧道只为IP通信提供安全性。
该隧道可配置为保护两个IP地址或两个IP子网之间的通信。
如果在两台计算机而不是两个网关之间使用隧道,则AH或ESP有效负载之外的IP地址将与AH或ESP有效负载之内的IP地址相同。
在WindowsXP和WindowsServer2003家族中,IPSec不支持协议特定或端口特定隧道。
配置隧道的方法是,使用“IP安全策略管理”和“组策略”控制台以配置并启用两个规则:
1.
用于出站隧道通信的规则。
出站通信规则是使用下述筛选器列表配置的:
该列表描述通过隧道与在IPSec隧道对等(隧道另一端的计算机或路由器)配置的IP地址的隧道终结点发送的通信。
2.
用于入站隧道通信的规则。
入站通信规则是使用下述筛选器列表配置的:
该列表描述通过隧道与本地IP地址的隧道终结点(隧道本地端的计算机或路由器)接收的通信。
此外,也需要为每个规则指定筛选器操作、身份验证方法以及其他设置。
OSPF数据包格式
在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段:
Versionnumber-定义所采用的OSPF路由协议的版本。
Type-定义OSPF数据包类型。
OSPF数据包共有五种:
Hello-用于建立和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
DatabaseDescription-用于描述整个数据库,该数据包仅在OSPF初始化时发送。
Linkstaterequest-用于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由
器发现其数据已经过期时才发送的。
Linkstateupdate-这是对linkstate请求数据包的响应,即通常所说的LSA数据包。
Linkstateacknowledgment-是对LSA数据包的响应。
Packetlength-定义整个数据包的长度。
RouterID-用于描述数据包的源地址,以IP地址来表示。
AreaID-用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于一个特定的OSPF区域。
Checksum-校验位,用于标记数据包在传递时有无误码。
Authenticationtype-定义OSPF验证类型。
Authentication-包含OSPF验证信息,长为8个字节。
OSPF的数据包格式
基本概念:
OSPF数据包是由多重封装构成的,解析一个OSPF数据包就象给洋葱拨皮一样,首先OSPF数据
包是封装在IP包头里面的,他的协议号是89,TTL值设置为1,所以OSPF的数据包永远不可能穿越邻
居路由器。
一个完整的OSPF数据包是由OSPF包头+OSPF数据构成的,那么OSPF的数据又分为5种类型。
一、OSPF数据包的头部格式:
版本:
OSPFv2
类型:
(helloDBDLSRLSULSack)
小人物,
数据包长度:
包头+数据
路由器ID
区域ID
校验和
认证类型:
0=空1=明文2=MD5
认证:
数据报认证的必要信息
密钥ID:
安全密钥
认证数据长度:
加密序列号:
一个不会减小的数字,用来防止重现攻击
二、5种数据包的格式:
1、hello数据包==OSPF包头+本身
网络掩码:
接口的掩码
hello时间间隔:
10秒
hello无效间隔:
40秒可选项
优先级:
用于选举DR/BDR
DR/BDR
邻居:
邻居的RID
2、链路数据描述DBD:
==包头+本身
接口MTU:
始发路由器能发送的最大MTU值
可选项:
初始位:
第一个数据包
后继位:
不是最后一个数据包
MS位:
用于协商主/从路由器
数据库序列号:
不断增大
LSA头部:
包含一个LSA的所有头部信息,
3、链路状态请求LSR:
链路状态类型:
用于请求LSA的类型,比如是类型1或者是类型2等
链路状态ID:
通告路由器:
始发路由器的RID
4、链路状态更新LSU:
用来LSA的泛洪和发送响应给请求LSA的邻居
LSA数量:
用来描述数据包包含的LSA数量
5、链路状态确认LSACK:
用来对一个LSA泛洪进行确认,确保可靠性
二、OSPF的LSA格式:
LSA头部格式:
LSA头部在所有7种类型LSA的开始处
老化时间:
发送LSA后经历的时间,靠LSA重传刷新自己
可选项:
类型:
描述是那种类型的LSA
链路状态ID
通告路由器:
序列号:
校验和:
长度:
LSA头部+LSA数据
以太网数据包如格式
以太网数据包如下表结构所示:
目地地址(6B)原地址
(6B)类型
(2B)数据
(46~1500B)校验和
(4B)
IP数据包结构如下页表:
版本号(4位)头长度(4位)服务类型TOS(8位)总长度(16位)
标示(16位)标志(3位)头偏移(13位)
生存时间TTL(8位)上层协议标示(8位)头部校验和(16位)
源IP地址(32位)
目的IP地址(32位)
选项
数据
TCP抱文结构如下表:
TCP源端口号(16位)TCP目的端口号(16位)
系列号(32位)
确认号(32位)
首部长度(4位)保留位(6位)URGACKPSHRSTSYNF
IN窗口大小(16位)
检验和(16位)紧急指针(16位)
选项+填充
数据区
UDP抱文结构如下表:
UDP源端口号(16位)UDP目标端口号(16位
UDP长度(16位UDP校验和(16位
数据区
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 各种 数据 数据包 格式