为什么此 TCP 连接在 HTTP 传输期间被重置?

为什么此 TCP 连接在 HTTP 传输期间被重置?

我有一个需要分析的 HTTP 请求的 tcpdump。它由三个连接组成。首先建立第一个连接,然后建立另一个连接。然后,在约 190 个段之后,客户端通过 RST 标志突然关闭第一个连接并启动第三个连接,大概是为了替换第一个连接。

但在第一个 RST 段之前,一切都很正常,所以我不确定为什么会发生这种情况。另一件奇怪的事情是,尽管客户端对每个段都以 RST 进行响应,但服务器仍在继续发送数据,发送了另外 9 个段,持续了 900 微秒。这可能是因为服务器在接收和处理 RST 之前花了 900 微秒,因此在此之前一直在发送数据?还是有其他原因让它继续发送数据?

以下是相关数据部分:

15:08:01.189085 IP 128.186.6.14.80 > 172.16.2.1.45243: P 24904:25243(339) ack 3359 win 49248
15:08:01.189657 IP 172.16.2.1.45243 > 128.186.6.14.80: P 3359:3760(401) ack 25243 win 8610 <nop,nop,timestamp 3136070386 173340265>
15:08:01.226055 IP 172.16.2.1.45242 > 128.186.6.14.80: . ack 59543 win 8312 <nop,nop,timestamp 3136070423 173340249>
15:08:01.318224 IP 128.186.6.14.80 > 172.16.2.1.45242: . 59543:60923(1380) ack 3458 win 49248
15:08:01.318328 IP 128.186.6.14.80 > 172.16.2.1.45242: . 60923:62215(1292) ack 3458 win 49248
15:08:01.318346 IP 172.16.2.1.45242 > 128.186.6.14.80: . ack 62215 win 8312 <nop,nop,timestamp 3136070515 173340249>
15:08:01.318475 IP 128.186.6.14.80 > 172.16.2.1.45242: . 62215:63595(1380) ack 3458 win 49248
15:08:01.318537 IP 172.16.2.1.45242 > 128.186.6.14.80: R 3458:3458(0) ack 63595 win 8312 <nop,nop,timestamp 3136070515 173340249>
15:08:01.318612 IP 128.186.6.14.80 > 172.16.2.1.45242: . 63595:64975(1380) ack 3458 win 49248
15:08:01.318629 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.318727 IP 128.186.6.14.80 > 172.16.2.1.45242: . 64975:66355(1380) ack 3458 win 49248
15:08:01.318740 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.318825 IP 172.16.2.1.45244 > 128.186.6.14.80: S 1580873046:1580873046(0) win 5840 <mss 1460,sackOK,timestamp 3136070515 0,nop,wscale 2>
15:08:01.318849 IP 128.186.6.14.80 > 172.16.2.1.45242: . 66355:67735(1380) ack 3458 win 49248
15:08:01.318860 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.318984 IP 128.186.6.14.80 > 172.16.2.1.45242: . 67735:69115(1380) ack 3458 win 49248
15:08:01.318997 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.319093 IP 128.186.6.14.80 > 172.16.2.1.45242: . 69115:70407(1292) ack 3458 win 49248
15:08:01.319104 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.319222 IP 128.186.6.14.80 > 172.16.2.1.45242: . 70407:71787(1380) ack 3458 win 49248
15:08:01.319232 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.319338 IP 128.186.6.14.80 > 172.16.2.1.45242: . 71787:73167(1380) ack 3458 win 49248
15:08:01.319351 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.319454 IP 128.186.6.14.80 > 172.16.2.1.45242: . 73167:74547(1380) ack 3458 win 49248
15:08:01.319465 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.319569 IP 128.186.6.14.80 > 172.16.2.1.45242: . 74547:75927(1380) ack 3458 win 49248
15:08:01.319581 IP 172.16.2.1.45242 > 128.186.6.14.80: R 1577678365:1577678365(0) win 0
15:08:01.324493 IP 128.186.6.14.80 > 172.16.2.1.45243: P 25243:25513(270) ack 3760 win 49248
15:08:01.325287 IP 128.186.6.14.80 > 172.16.2.1.45243: P 25513:26594(1081) ack 3760 win 49248
15:08:01.325587 IP 172.16.2.1.45243 > 128.186.6.14.80: P 3760:4160(400) ack 26594 win 8610 <nop,nop,timestamp 3136070522 173340265>
15:08:01.452627 IP 128.186.6.14.80 > 172.16.2.1.45244: S 3542691101:3542691101(0) ack 1580873047 win 49248 <nop,nop,timestamp 173340450 3136070515,mss 1380,nop,wscale 0,nop,nop,sackOK>

128.186.6.14.80 是服务器,172.16.2.1.4524(2/3/4) 是客户端。端口 45243 属于第二个连接,45242 是第一个通过 RST 关闭的连接,45244 是第三个在客户端为第一个连接发送初始 RST 后立即启动的连接。

有没有办法从日志中知道导致此 RST 的原因?也许是 HTTP 的特定行为?其他两个连接通过 FIN 握手正常关闭。

相关内容