tcpdump linux 抓包 - 三次握手 四次挥手

Linux环境下tcpdump抓包:三次握手与四次挥手

前提:

  • 1. linux环境
  • 2. 可正常使用tcpdump
  • 使用(node)serve -p 10005 启动一个前端
  • 前端存放一个静态1.txt文件,内容为test

模拟:在linux环境中启动一个应用,端口10005(目前是使用node 的 serve,创建1.txt文件,serve -p 10005 发布出来,通过 curl http://ip:10005/1.txt访问)

tcpdump测试命令:

tcpdump -i any host **.***.**.** and port 10005 -S

解释:使用tcptump时,默认在第三次握手时,会使用相对序列号,加上 -S,即可禁用相对序列号

新开窗口,执行

curl http://**.***.**.***:10005/1.txt

命令返回结果:

dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
15:26:32.268914 IP 主机名.34206 > 主机名.目标服务名: Flags [S], seq 4218104573, win 65495, options [mss 65495,sackOK,TS val 1712344938 ecr 0,nop,wscale 7], length 0
15:26:32.268924 IP 主机名.目标服务名 > 主机名.34206: Flags [S.], seq 3712382854, ack 4218104574, win 65483, options [mss 65495,sackOK,TS val 1712344938 ecr 1712344938,nop,wscale 7], length 0
15:26:32.268930 IP 主机名.34206 > 主机名.目标服务名: Flags [.], ack 3712382855, win 512, options [nop,nop,TS val 1712344938 ecr 1712344938], length 0
15:26:32.268954 IP 主机名.34206 > 主机名.目标服务名: Flags [P.], seq 4218104574:4218104662, ack 3712382855, win 512, options [nop,nop,TS val 1712344938 ecr 1712344938], length 88
15:26:32.270232 IP 主机名.目标服务名 > 主机名.34206: Flags [P.], seq 3712382855:3712383164, ack 4218104662, win 512, options [nop,nop,TS val 1712344939 ecr 1712344938], length 309
15:26:32.270239 IP 主机名.34206 > 主机名.目标服务名: Flags [.], ack 3712383164, win 510, options [nop,nop,TS val 1712344939 ecr 1712344939], length 0
15:26:32.270284 IP 主机名.34206 > 主机名.目标服务名: Flags [F.], seq 4218104662, ack 3712383164, win 512, options [nop,nop,TS val 1712344939 ecr 1712344939], length 0
15:26:32.270504 IP 主机名.目标服务名 > 主机名.34206: Flags [F.], seq 3712383164, ack 4218104663, win 512, options [nop,nop,TS val 1712344939 ecr 1712344939], length 0
15:26:32.270512 IP 主机名.34206 > 主机名.目标服务名: Flags [.], ack 3712383165, win 512, options [nop,nop,TS val 1712344939 ecr 1712344939], length 0

前三行可忽略

dropped privs to tcpdump:权限降级(从 root 权限降级到/* by 01130.hk - online tools website : 01130.hk/zh/imageformats.html */
tcpdump 用户权限,减少安全风险,即使 tcpdump 被攻击,攻击者也只能获得有限权限)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode:提示当前 tcpdump 只显示基本信息以提高性能,并未输出详细信息,使用-v,-vv可输出完整信息
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes:监听所有网络接口,链路类型为 Linux cooked v1 格式,每个数据包捕获的最大字节数(256KB)(262144/1024 = 256) 

第四行开始,三次握手开始:

Client端 Server端
SYN标志位,seq=4218104573-> 
 <-SYN标志位,ACK标志位,seq=3712382854, ack =Client.seq+1=4218104574 
ACK标志位,ack=Server.seq+1=3712382855-> 

 

中间是发送数据

Client端 Server端 
 PUSH标志位,ACK标志位,seq:4218104574:4218104662,88字节
(请求信息)
->  
  <- PUSH标志位,ACK标志位,seq:3712382855:3712383164,309字节
(回复信息)
ACK标志位,ack=3712383164
(确认信息,已收到服务器发送的所有数据)
-> 

Client端向Server端发送数据,TCP载荷部分(88字节):

GET /1.txt HTTP/1.1\r\n     (21 bytes)
Host: **.***.**.***:10005\r\n (29 bytes)
User-Agent: curl/7.61.1\r\n   (25 bytes)
Accept: */*\r\n              (13 bytes)

Server端回复数据,TCP载荷部分(309字节):

HTTP/1.1 200 OK\r\n										(17 bytes)
Content-Length: 4\r\n									(19 bytes)
Content-Disposition: inline; filename="1.txt"\r\n		(47 bytes)
Accept-Ranges: bytes\r\n								(22 bytes)
ETag: "efd2d032d82a6f34d448f5124fbe835d598f3b5b"\r\n	(50 bytes)
Content-Type: text/plain; charset=utf-8\r\n				(41 bytes)
Vary: Accept-Encoding\r\n								(23 bytes)
Date: Tue, 19 Aug 2025 02:42:03 GMT\r\n					(37 bytes)
Connection: keep-alive\r\n								(24 bytes)
Keep-Alive: timeout=5\r\n								(23 bytes)
\r\n                         							(2 bytes)
test													(4 bytes)

第10行开始,四次挥手开始(TCP协议的优化机制,合并挥手)

Client端 Server端
 FIN标志位,ACK标志位,seq=4218104662, ack=3712383164
第一次挥手 - 客户端主动发起关闭连接请求
【TCP FIN包通常会包含ACK标志来确认对方的数据】)
-> 
 <- FIN标志位,ACK标志位,seq=3712383164,ack=Client.seq +1=4218104663
第二次和第三次挥手的合并 - 服务器确认客户端的关闭请求,同时发起自己的关闭请求)
 ACK标志位,ack=3712383165
第四次挥手 - 客户端确认服务器的关闭请求
<- 

详细说明示例如下:

15:26:32.268914 IP 主机名.34206 > 主机名.目标服务名: Flags [S], seq 4218104573, win 65495, options [mss 65495,sackOK,TS val 1712344938 ecr 0,nop,wscale 7], length 0

数据包捕获的时间(小时:分钟:秒.微秒) 网络协议类型(IPv4) 源主机和端口 从源到目标 目标主机和端口 SYN 标志位(TCP 连接请求【三次握手的第一步】) TCP 序列号(标识数据包在数据流中的位置【0-4294967295(32位)】) 接收窗口大小 65495字节 TCP选项 [Maximum Segment Size(最大段大小)65495 字节 Selective Acknowledgment OK(选择性确认允许)【支持选择性确认机制,提高重传效率】 Timestamp Value(时间戳值) Echo Reply(回显应答)0【因为此时是第一次client->server,所以没有server回复的时间戳值,此时为默认值0】 No Operation(无操作)【填充字段,用于对齐选项,无意义】 Window Scale(窗口缩放因子)7(表示窗口大小乘以 2^7 = 128)【扩展窗口大小,支持更大的接收窗口】 ]

 


标志全称含义十六进制值作用
SSYNSynchronize0x02建立连接(三次握手开始)
FFINFinish0x01释放连接(正常关闭)
RRSTReset0x04强制断开连接(异常关闭)
PPSHPush0x08推送数据(立即传送)
.ACKAcknowledge0x10确认收到数据
UURGUrgent0x20紧急指针有效

                       
标志组合含义典型场景
/* by 01130.hk - online tools website : 01130.hk/zh/imageformats.html */ [S]SYN连接请求(第一次握手)
[S.]SYN-ACK连接确认(第二次握手)
[.]ACK确认包(第三次握手完成)
[P.]PSH-ACK推送数据包
[F.]FIN-ACK连接终止请求
[R]RST连接重置
[R.]RST-ACK带确认的连接重置
注意:
1. 第三次握手时,与网上一些博客不一样(第一次是seq=x,第二次seq=y,第三次是seq=x+1)原因是因为,在第三次握手时,客户端发送的是一个纯 ACK 包,不携带任何数据,因此它的序列号不会递增 
2. 第一次挥手时,与网上一些博客不一样(第一次挥手发送FIN),当发送FIN包时,必须同时确认之前接收到的数据,(TCP协议的规范要求),确保连接状态的一致性。即使之前已经发送过ACK,FIN包中仍需要包含最新的确认信息
3. 目标服务名:使用10005端口启动的应用,在tcpdump中默认显示的不是端口,是服务名,比如其为***,那么如何根据***找到其对应的端口?
getent services ***

4. 34206端口:临时端口(Linux系统通常将 32768-60999 或 32768-65535 范围内的端口作为临时端口),当客户端发起TCP连接时,操作系统会自动分配一个未被使用的临时端口,标识客户端的特定连接。每个新的TCP连接都会分配不同的临时端口

 

 
【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Python代码实现)内容概要:本文围绕“并_离网风光互补制氢合成氨系统容量-调度优化分析”的主题,提供了基于Python代码实现的技术研究与复现方法。通过构建风能、太阳能互补的可再生能源系统模型,结合电解水制氢与合成氨工艺流程,对系统的容量配置与运行调度进行联合优化分析。利用优化算法求解系统在不同运行模式下的最优容量配比和调度策略,兼顾经济性、能效性和稳定性,适用于并网与离网两种场景。文中强调通过代码实践完成系统建模、约束设定、目标函数设计及求解过程,帮助读者掌握综合能源系统优化的核心方法。; 适合人群:具备一定Python编程基础和能源系统背景的研究生、科研人员及工程技术人员,尤其适合从事可再生能源、氢能、综合能源系统优化等相关领域的从业者;; 使用场景及目标:①用于教学与科研中对风光制氢合成氨系统的建模与优化训练;②支撑实际项目中对多能互补系统容量规划与调度策略的设计与验证;③帮助理解优化算法在能源系统中的应用逻辑与实现路径;; 阅读建议:建议读者结合文中提供的Python代码进行逐模块调试与运行,配合文档说明深入理解模型构建细节,重点关注目标函数设计、约束条件设置及求解器调用方式,同时可对比Matlab版本实现以拓宽工具应用视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值