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

基于uIP 1.0的HTTP服务器TCP数据包后续无法收到ACK的问题

问题:uIP 1.0 HTTP服务器发送大数据包后客户端停止ACK

在受限网络设备上基于uIP 1.0 TCP/IP栈开发HTTP服务器,该库不缓存数据,仅通过用户回调提供单个待发送数据包,或重传之前的数据;必须等前一个数据包收到远端ACK后,才能发送下一个数据包。

服务器逻辑是先发送45字节的响应头,之后将文件拆分为846字节的块发送。现在遇到的问题是:远端(macOS/Linux系统,用Firefox或wget)从第三个数据包开始就停止发送ACK。设备因未收到ACK不断重传该数据包,最终重置连接,且每次复现的情况完全一致。如果把数据块改小(比如256字节),客户端能在停止ACK前收到约10个数据包的ACK,而不是原来的3个。

以下是在客户端(192.168.178.30)抓取的Wireshark会话dump:

1 0.000000       192.168.178.30        192.168.178.70        TCP      78     56391 → 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=64 TSval=3618183324 TSecr=0 SACK_PERM
      2 1.001115       192.168.178.30        192.168.178.70        TCP      78     [TCP Retransmission] 56391 → 80 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=64 TSval=3618184325 TSecr=0 SACK_PERM
      3 1.096615       192.168.178.70        192.168.178.30        TCP      1008   80 → 56391 [SYN, ACK] Seq=0 Ack=1 Win=846 Len=0 MSS=846
      4 1.097032       192.168.178.30        192.168.178.70        TCP      54     56391 → 80 [ACK] Seq=1 Ack=1 Win=65535 Len=0
      5 1.125337       192.168.178.30        192.168.178.70        TCP      192    56391 → 80 [PSH, ACK] Seq=1 Ack=1 Win=65535 Len=138
      6 1.447170       192.168.178.70        192.168.178.30        TCP      1008   80 → 56391 [PSH, ACK] Seq=1 Ack=139 Win=846 Len=45
      7 1.447485       192.168.178.30        192.168.178.70        TCP      54     56391 → 80 [ACK] Seq=139 Ack=46 Win=65535 Len=0
      8 1.754454       192.168.178.70        192.168.178.30        TCP      1008   80 → 56391 [PSH, ACK] Seq=46 Ack=139 Win=846 Len=846
      9 1.754807       192.168.178.30        192.168.178.70        TCP      54     56391 → 80 [ACK] Seq=139 Ack=892 Win=65535 Len=0
     10 2.061660       192.168.178.70        192.168.178.30        TCP      1008   80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     11 2.794855       192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     12 3.597716       192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     13 4.645639       192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     14 6.567428       192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     15 9.844375       192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     16 15.988703      192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     17 22.132761      192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     18 28.277190      192.168.178.70        192.168.178.30        TCP      1008   [TCP Retransmission] 80 → 56391 [PSH, ACK] Seq=892 Ack=139 Win=846 Len=846
     19 34.318832      192.168.178.70        192.168.178.30        TCP      1008   80 → 56391 [RST, ACK] Seq=892 Ack=139 Win=846 Len=0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 17:48:11