You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Socket发送带空格REST动词开头的TCP消息延迟发送问题求助

Python Socket发送TCP数据的异常现象排查

在使用Python Socket发送TCP数据时发现一个特殊异常:当在新连接中发送以"PUT "、"POST "、"DELETE "或"GET "(带空格)开头的TCP数据包时,消息要等到Socket关闭时才会发送。

具体细节

  • 发送其他内容(所有测试过的内容)均正常,可立即发送;
  • 先发送其他内容,再发送"PUT "等消息时,发送正常;
  • 在"PUT "消息后发送其他内容,同样无法立即发送;
  • 空格是必要条件:仅"POST"无空格时发送正常,空格后的内容不影响延迟,比如"POST some more data"也无法立即发送;
  • socket.sendall调用立即返回,但TCP数据包直到Socket关闭才发送,已通过Wireshark抓包确认;
  • 尝试设置TCP_NODELAY选项无效。

测试代码

import socket
from time import sleep

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("198.18.2.2", 8764))

sock.sendall(b"PUT ")
sleep(10)

上述代码中,"PUT "会在10秒后才发送,发送端Wireshark抓包日志如下:

No  Time        Source      Destination     Len     Info
1   0.000000    198.18.2.1  198.18.2.2  TCP 66      59465 → 8764 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM
2   0.000813    198.18.2.2  198.18.2.1  TCP 60      8764 → 59465 [SYN, ACK] Seq=0 Ack=1 Win=512 Len=0 MSS=1460
3   0.000976    198.18.2.1  198.18.2.2  TCP 54      59465 → 8764 [ACK] Seq=1 Ack=1 Win=64240 Len=0
4   10.003259   198.18.2.1  198.18.2.2  TCP 58      "PUT " (0x50 0x55 0x54 0x20)
5   10.003331   198.18.2.1  198.18.2.2  TCP 54      59465 → 8764 [FIN, ACK] Seq=5 Ack=1 Win=64240 Len=0
6   10.004227   198.18.2.2  198.18.2.1  TCP 60      8764 → 59465 [ACK] Seq=1 Ack=5 Win=508 Len=0
7   10.011112   198.18.2.2  198.18.2.1  TCP 60      8764 → 59465 [FIN, ACK] Seq=1 Ack=6 Win=508 Len=0
8   10.011318   198.18.2.1  198.18.2.2  TCP 54      59465 → 8764 [ACK] Seq=6 Ack=2 Win=64240 Len=0

疑问

目前无法确定根因,这类REST动词似乎被特殊处理,是Python?Windows?还是TCP层面的问题?

后续排查更新

  • 发送完整HTTP消息"PUT /file.txt HTTP/1.1\r\nHost: 198.18.2.2\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"可立即发送;
  • 将服务器部署在本地主机,发送此类特定消息可正常立即收发;
  • 推测存在拦截类机制,会暂存类HTTP消息直到内容"完整",因处于企业环境,安全软件/防火墙是重点排查方向;
  • 设备连接拓扑:PC(客户端)<->Linux路由器<->µC(服务器)。

内容的提问来源于stack exchange,提问作者Sloothword

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:16:02