在 HTTP/1.1(持久连接)中,提示客户端发送下一个 HTTP 请求的“信号”是什么?除了 Content-Length 还有什么别的吗?
我正在尝试构建一个简单的网关,它将跨文件桥接 TCP 流量。我有两个应用程序:
- “服务器”打开一个套接字并等待连接。建立连接后,它将从输出文件中获得的所有内容转发,同时将输入文件中的所有内容转发回套接字
- “客户端”等待上述输出文件中的内容并与服务器建立连接,向其发送数据并将接收到的数据写回上述输入文件。
换句话说:我通过套接字获得的所有内容都通过文件重定向到另一个套接字,反之亦然。
AFAIK 这应该是完全透明的,但持久连接不能按预期工作。
我正在使用 Firefox 进行测试——FF 发送了两个 GET 并收到了两个响应。但是它只是坐在那里等待,就好像它还没有收到所有数据一样...... 5秒后(服务器以“Keep-Alive:timeout = 5”响应,所以这适合)其中一方关闭连接并重新建立它并继续发送几个文件,当它再次卡住时。
我用 WireShark 听过,但没有发现任何不寻常的地方。知道发生了什么吗?
更新:下面是 WireShark 日志的截图。它表明在 TCP 连接关闭后(注意时间),HTTP 连接发送得太晚了。从我的日志来看,它是立即发送的。知道为什么会出现这种差异吗?我应该以某种方式“冲洗”插座吗?我正在使用 Python。