QNetworkAccessManager发送RST,ACK包

时间:2016-04-22 11:31:05

标签: qt tcp qnetworkaccessmanager qtnetwork

在我的应用程序中,我有一个QNetworkAccessManager实例,用于发送和接收所有网络流量。流量完全由HTTP GET请求和响应组成。

目前我已经硬编码,以便应用程序每10秒发送一次请求,我注意到在Windows资源监视器中它会在每次请求时不断建立新的连接。 发现这很奇怪我将标头Connection: Keep-Alive添加到每个传出请求,但它仍然在每个请求上建立新连接。

以下是针对一个请求/响应周期的完整Wireshark捕获:

+-----------+--------+-------------+-------------------------+
| Timestamp | Source | Destination | Info                    |
+-----------+--------+-------------+-------------------------+
| 0.000000  | client | server      | SYN                     |
| 0.020673  | server | client      | SYN, ACK(1)             |
| 0.020810  | client | server      | ACK(1)                  |
| 0.021529  | client | server      | HTTP GET request        |
| 0.081772  | server | client      | ACK(286)                |
| 0.083658  | server | client      | HTTP 200 OK (with data) |
| 0.133877  | client | server      | ACK(286)                |
| 5.081253  | server | client      | FIN, ACK(286)           |
| 5.081449  | client | server      | ACK(1072)               |
| 5.081606  | client | server      | RST, ACK(1072)          |
+-----------+--------+-------------+-------------------------+

从表中可以看出,服务器在5秒不活动后发送FIN,ACK,客户端(我猜想是QNetworkAccessManager?)以ACK RST,ACK响应并且连接是已关闭,即使我已设置Connection: Keep-Alive标题。

我不是TCP通信专家,所以我不确定客户端发送RST,ACK是什么意思。

我的问题是:这是客户端还是服务器端问题?可以做些什么来确保连接保持活力?

提前致谢!

0 个答案:

没有答案