假设客户端有多个文件要通过 HTTP Post 方法发布到服务器,则会有两个 api 调用。因为我不想创建两个 TCP 连接并且想重用 TCP 连接,所以我在第一个请求中使用 Http keep-alive 标头,现在我只需要在第一个请求时建立一个 TCP 连接来发送多个文件
但是服务器如何区分这两个文件呢?当我们不使用keepalive时,客户端的操作系统会发送EOF标志(文件结束)来指示服务器文件已完成传输
以下是我的假设,不确定是否正确:
现在我们使用 keep-alive,因此服务器上的 EOF 不会关闭连接,因此可以通过同一连接发送第二个文件并以 EOF 结尾。但是当客户端不想再发送任何文件时如何关闭 TCP 连接呢?如果客户端发送另一个EOF,服务器可能会认为他要发送另一个文件?
我唯一能想到的是,假设你只有 5 个文件要发送,在第 5 个 HTTP 请求中,你不发送 keep-alive 标头,但第 1 个、第 2 个、第 3 个和第 4 个请求都需要发送对于 keep-alive 标头,我的理解正确吗?