TCP层分析
传输控制协议,为数据提供可靠的端到端传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方
1. Transmission Control Protocol, Src Port: 52745 (52745), Dst Port: 80 (80), Seq: 1, Ack: 1, Len: 202
总信息,源端口52745, 目的端口80 ( HTTP ) , 序号1, ACK 设置1,长度为202
2. Source Port: 52745 (52745) —— 用来传输数据包的端口
3. Destination Port: http (80) —— 数据包将要被发送到的端口
- 1~1023:标准端口组,特定服务会用到标准端口
- 1024~65535:临时端口组,操作系统会随机地选择一个源端口让某个通信单独使用
- 传输层的复用和分用功能都要通过端口才能实现
4. Stream index: 0
流端口号为0根据src.ip src.port dst.ip dst.port生成的一个索引号 Sequence number: 0
5. TCP Segment Len: 202 ( Next sequence – Sequence ) number
显示(0x50)TCP 携带数据的长度
6. Sequence number: 显示为该包序列号的空际值
- Sequence number: 1 (relative sequence number),显示为该包序列号的相对值,这个数字用来表示一个TCP片段。这个域用来保证数据流中的部分没有流失(随机生成)
7. Next sequence number:
- Next sequence number: 203 (relative sequence number)
分析同上,下一个序列号(在实际传输中并未有此数据,是Wireshark 提供的,= Sequence number + TCP Segment Len)
8. Acknowledgment number:
- Acknowledgment number: 1 (relative ack number)
- 确认号为1: 这个数字式通信中希望从另外一个设备得到的下一个数据包的序号
9. Header Length: 20 bytes
- 数据偏移(即首部长度)显示(0x50)但实际为 (0x50 && 0XF0) / 4 = 20 ,剩下的0x50中的0 用于下面的
Reserverd 和Nonce. 它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远
10. …. 0000 0001 1000 = Flags: 0x018 (PSH, ACK)
很重要,根据括号里的标志值(URG, ACK, PSH. RST, SYN, FIN)判断不同的TCP数据包的类型

- Reserved: Not set —— 保留字段——占 6 位,保留为今后使用
- Nonce: Not set 设置为0
随机数(Nonce)是任意的或非重复的值,它包括在经过一个协议的数据交换中,通常为保证活跃度以及避免受重复攻击 - Congestion Window Reduced (CWR): Not set —— 没啥用

- ECN-Echo: Not set
- Urgent: Not set —— (基本此处无设置)
当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据) - Acknowledgment: Set 1
(确认序号有效位)只有当 ACK=1 时确认号字段才有效。当ACK=0 时,确认号无效 - Push: Set 1 ——(通知接收端立即将数据提交上层,释放内存)
接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付 - Reset: Not set
请求重新建立TCP连接,当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接 - Syn: Not set
同步 SYN = 1 表示这是一个连接请求或连接接受报文 - Fin: Not set
请求断开连接,用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
11. Window size value: 64800
- 窗口大小,TCP接收者缓冲的字节大小
12. Calculated window size: 64800
- 计算窗口大小为64800
13. Window size scaling factor: -1 (unknown) 窗口大小换算系数
- 这里为 -1(unknown)是因为Wireshark所捕获的pacp中并未含有TCP三次握手信息,所以Wireshark
不知道正在使用的窗大小是否正在使用,就算使用,Wireshark 也不知道换算系数是多少 - 故Wireshark就简单地报道窗大小的值(可能包含真正窗大小)并标识上述-1 (unknown) 的信息
14. Checksum: 0xb4ca [validation disabled] //验证禁止
- Good Checksum: False Bad Checksum: False
校验和:用来保证TCP头和数据的内容在抵达目的时的完整性 - Urgent pointer: 0
如果设置了URG位,这个域将被检查作为额外的指令,告诉CPU从数据包的哪里开始读取数据
15. 选项(Options):各种可选的域,可以再TCP数据包中进行指定。但是几乎每一个SYN报文段中都含有TCP选项字段
16. SEQ/ACK analysis
- Wireshark对序列/ACK的分析(不在实际数据流中)当且仅当数据中含有ACK时,才有此项!
- Bytes in flight: 202 —— 网络中传输的字节为202

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/21237.html