gpt4 book ai didi

http - 为什么在 HTTP 持久连接的情况下需要内容长度

转载 作者:可可西里 更新时间:2023-11-01 02:39:47 24 4
gpt4 key购买 nike

我对 tcp/http 中数据传输如何发生的理解是这样的:

服务器端的应用层将一些数据传递给tcp层发送给客户端。 tcp 层将应用程序数据分成多个段并进一步发送。另一端的 tcp 层将确保在将所有数据段传递到其应用层之前按顺序接收和排列所有数据段。

现在,在非持久连接的情况下,服务器可以在发送完数据后简单地关闭连接。这是什么意思?这是否意味着服务器将在最后发送一个 FIN 段?因此,客户端的 tcp 层基本上会等待直到 FIN 段的所有段,将此数据传递给上层并继续终止连接。

在持久连接的情况下,由于连接没有被服务器关闭,据说客户端无法知道它何时必须完成读取响应并执行下一个请求。因此使用了 content-length header 和 chunked transfer

我的问题是“为什么我们不能只发送类似于 FIN 的段(比如 DONE)来指示服务器已传输所有响应”。看到 DONE 的客户端可以开始下一个请求。提前知道内容长度的问题需要包含内容长度 header 吗?

我确定我在这里误解或遗漏了什么。以上不对的地方请指正。

感谢阅读到这里:)

最佳答案

想象一下,如果您的 HTTP 负载数据在其中间包含 DONE 会发生什么。

另一方面,

TCP FIN 数据包在 TCP header 的标志中标记了 FIN,因此,不存在将某些数据包错误地误认为是 的危险FIN数据包。

关于http - 为什么在 HTTP 持久连接的情况下需要内容长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com