wireshark 抓取的tcp 数据报文

来源:互联网 发布:ppt图表数据修改不了 编辑:程序博客网 时间:2024/05/22 10:24
图1:wireshark 抓取的tcp 数据报文
000034 17 eb a9 73 88 58 69 6c 27 77 16 08 0045 00
001000 34 00 00 40 00 3d 06 56 72 c0 a8 3d df c0 a8
002028 22 1f 98 ca 50 a3 e6 0a c4 74 47 e4 f7 80 12
003039 08 5c d4 00 00 02 04 05 b4 01 01 04 02 01 03
004003 07

TCP 报文 =以太网头部(14字节)+IP 头部(20个字节)+TCP 头部(20字节)+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 字节的整数倍。
解析TCP头部数据20字节固定首部:
1f 98 ca 50 a3 e6 0a c4 74 47 e4 f7 80 12 39 08 5c d4 00 00
源端口占2个字节:1f 98 ;0x1f98转化为十进制为8088 ;发送tcp包的进程端口为8088
目的端口占2个字节: ca 50; 0xca50转化为十进制为51792 ;接受tcp包的进程端口为51792
序号字段占4个字节:a3 e6 0a c4;
确认号字段占4个字节:74 47 e4 f7;
数据偏移占4bit(位):0x80 转化为2进制为1000 0000 数据偏移为1000 为8;数据偏移的单位为4字节;数据偏移=4*8=32字节
保留字段 占6位:0x80 0x12; 0x80 的低4位和0x12 的高2位;10000000 0001 0010绿色的字段表示的保留字段
01 0010 这6位的数据解析:
第1位:URG(紧急比特)当 URG =1 时,表明紧急指针字段有效.它告诉系统此报文段中有紧急数
据,应尽快传送 (相当于高优先级的数据 )。
第2位:ACK(确认比特)只有当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效。
第4位:RST(复位比特) 当 RST =1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他
原因),必须释放连接,然后再重新建立运输连接。
第5位:SYN(同步比特)同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
第6位: FIN (终止比特) 用来释放一个连接。 当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,
并要求释放运输连接。
窗口字段占2个字节:0x39 0x08; 0x3908转化十进制为 14600;窗口字段是用来控制对方发送的数据
量,单位字节,tcp 连接的一端根据设置的缓存空间大小确定自己的接收窗大小,
然后通知对方以确定对方发送窗口的上限。
检验和占2个字节:检验和字段检验的范围包括 首部 和数据 这两部分。在计算检验和时,要在 TCP报
文段的前面加上 12 字节的伪首部。 0x5c ,0xd4
紧急指针字段: 占 2个字节 ,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
0x00,0x00.
选项字段 : 长度可变。 TCP 首部可以有多达 40 字节的可选信息,用于把附加信息传递给终点,或
用来对齐其它选项 ,此报文选项字段占12个字节02 04 05 b4 01 01 04 02 01
0303 07
填充字段 : 这是为了使tcp整个首部长度是 4 字节的整数倍
IP头部信息的分析
IP数据包格式
45 0000 34 00 00 40 00 3d 06 56 72 c0 a8 3d df c0 a8 28 22
版本字段:占4位。0x45;版本字段=4 说明当前的IP协议的版本为4,通常称为IPV4,下一个版本为6,
通常称为IPv6;
首部长度:占4位。0x45; IP报文的首部长度=5 单位为4个字节;IP首部字节数=5*4=20个字节;IP首
部长度都是4的整数倍
服务类型:占 8 位,服务类型
0 1 2 3 4 5 6 7

优先级:占3位,用于表示数据报文的重要程度,优先级取值0(普通优先级)~7(网络控制高优先级)
D、T 和 R 位表示本数据报希望的传输类型。
D 表示低时延( Delay)需求
T 表示高吞吐量( Throughput )要求
R 代表高可靠性( Reliability )要求
总长度字段:占2个字节,因此数据报文的最大长度为2 ^16 -1=65535 字节;0x00 0x34 表示总长度
(首部与数据之和长度)=0x0034=52字节=IP 首部(20个字节)+TCP首部(20个字
节)+TCP(选项长度12个字节)
标识(identification):占用2个字节;0x00 0x00;IP 软件在存储器中维持一个计数器,每产生一个
数据报,计数器就加 1,并将此值赋给标识字段。但这个 “标识 ”并不是序
号, 因为 IP 是无连接服务,数据报不存在按序接收的问题。当数据报由于长
度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据
报的标识字段中。 相同的标识字段的值使分片后的各数据报片最后能正确地
重装成为原来的数据报.
标志:占3位,目前只有2位有意义;0x40=0100 0000 ->MF =0,DF=1
标志字段中的最低位记为 MF(More Fragment) ,MF=1 即表 示后面 “还有分片 ”的数据
报。MF=0 表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为 DF(Don’t Fragment),意思是 “不能分片 ”。只有当 DF=0 时
才允许分片。
片偏移:0x40,0x00(0100 0000 0000 0000)占13位,片偏移表示的是:较长的分组在分片后,某片
在原分组中的相对位置。 也就是说, 相对用户数据字段的起点,该片从何处开始。片偏移以
8 个字节为偏移单位。这就是说,每 个分片的长度一定是 8 字节( 64 位)的整数倍。
寿命(生存时间):占 8 位 ,0x3d,生存时间字段常用的的英文缩写是 TTL(Time To Live) ,表明是数据报在网络中的寿命。 由发出数据报的源点设置这个字段。 其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为 TTL 的单位。每经过一个路由器时,就把 TTL 减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于 1 秒,就把 TTL 值减 1。当 TTL 值为 0 时,就丢弃这个数据报。
协议 :占 8 位,0x06;协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的 IP层知
道应将数据部分上交给哪个处理过程。
首部检验和:占2个字节,0x56,0x72;这个字段只检验数据报的首部,但不包括数据部分。这是因为数
据报每经 一个路由器, 路由器都要重新计算一下首部检验和 (一些字段, 如生存时
间、 标志、片 偏移等都可能发生变化) 。不检验数据部分可减少计算的工作量。
源地址: 占 32 位。 c0 a8 3d df =192.168. 61.223
目的地址:占 32 位。 c0 a8 28 22 =192.168.40.34
IP 数据报首部的可变部分:IP 首部的可变部分就是一个可选字段。选项字段用来支持排错、测量以及安
全等措施,内容很丰富。此字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的
项目。某些选项项目只需要 1 个字节,它只包括 1 个字节的选项代码。但还有些选项需要多个
字节,这些选项一个个拼接起来, 中间不需要有分隔符, 最后用全 0 的填充字段补齐成为 4
字节的整数倍。增加首部的可变部分是为了增加 IP 数据报的功能, 但这同时也使得 IP 数据报
的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。实际上这些选项很少被
使用。新的 IP 版本 IPv6 就将 IP 数据报的首部长度做成固定的。
目前,这些任选项定义如下:
(1)安全和处理限制(用于军事领域)
(2)记录路径(让每个路由器都记下它的 IP 地址)
(3)时间戳(让每个路由器都记下它的 IP 地址和时间)
(4)宽松的源站路由(为数据报指定一系列必须经过的 IP 地址)
(5)严格的源站路由(与宽松的源站路由类似,但是要求只能经过指定的这些地址,不能经过其他的
地址)
这些选项很少被使用,并非所有主机和路由器都支持这些选项。
图2 : wireshark 对抓取的数据报文的分析数据