TCP Fast Open tcpdump抓包分析

本文通过tcpdump工具深入分析TCP Fast Open的连接过程,包括IP和TCP报头格式,展示从SYN到ACK+Data的数据交互,揭示TFO的具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前文介绍了TCP Fast Open的原理和使用,这次用tcpdump工具将TCP消息抓一下,看看是具体怎样实现的。

首先要了解一下IP报头和TCP报头的格式,这样才能根据协议对应报头内容:
TCPIP报头
接下来我们看一下第一次连接的时候的抓包内容:
抓包命令:

tcpdump -i lo tcp port 5555 -Xnn

SYN+空Cookie:

16:38:18.614264 IP 127.0.0.1.52868 > 127.0.0.1.5555: Flags [S], seq 2089549908, win 43690, options [mss 65495,sackOK,TS val 49428115 ecr 0,nop,wscale 7,tfo  cookiereq,nop,nop], length 0
        0x0000:  4500 0040 									4:版本 | 5:IP报文长度,5*32=5*4字节=5*2个4位16进制=10个4位16进制 | 00服务类型 | 0040:总长度64个字节=32个4位16进制
						   36c7 4000 						36c7:标识,IP报头的序列号 | 010:0未使用,1允许分段,0没有更多分段在传输 | 后面的0表示偏移,这里偏移是0
									 4006 05ef 				40:生存时间 | 06:TCP协议 | 05ef:报头校验和
											   7f00 0001	7f00 0001:源IP地址7f.00.00.01=127.0.0.1
        0x0010:  7f00 0001 									7f00 0001:目的IP地址7f.00.00.01=127.0.0.1 | ***因为IP报头长度是10个4位16进制,所以到此,IP报头结束,下面是TCP报头
		-------------------------------------------------------------------------------------------------------------------------------------------------------
						   ce84 15b3 						ce84:源端口52868 | 15b3:目的端口5555
									 7c8c 0054 				7c8c 0054:请求端序列号
											   0000 0000	0000 0000:请求端确认号0
        0x0020:  b002 aaaa 									b:数据偏移,TCP头部长度,10*32字节=10*2个4位16进制=20个4位16进制,刚好到结束,也就是该消息没有数据 | 保留6位0 | 
															000010:URG(0),ACK(0),PSH(0),RST(0),SYN(1),FIN(0) | aaaa:窗口43690
						   fe34 0000 						fe34:校验和 | 0000:紧急指针
						             0204 ffd7 				02:TCP选项,kind=2 最大报文段长度(MSS)选项 | 04:length=4 | ffd7:最大报文段长度65495(mss)
											   0402 080a  	04:TCP选项,kind=4 选择性确认(Selective Acknowledgment,SACK)选项 | 02:length=2 |
															08:TCP选项,kind=8 时间戳选项 |  0a:length=10 也就是后面8个字节都是属于这个选项的
        0x0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值