2010-06-19 87 views
0

让我试着澄清一下我的问题,我不知道该如何标题。这纯粹是出于我的好奇心。中断HTTP流时会发生什么?

在通过互联网连接和浏览器传输的原始字节之间,有许多图层。每层为数据添加更多结构,最终以HTML标记结束。我假定HTML数据的最终长度是未知的,字节正在流入,直到文档完成。如果这个假设是错误的,请纠正我。

你变得急躁,你在浏览器中点击“停止”。这些层次会发生什么?套接字是否在客户端关闭,并允许异常情况通过图层上升?在这个链条的至少一个点上,必须有一个阻塞操作,它正在等待它下面的层,并且不再阻塞,那么这是如何发生的?

如果不明确,我很抱歉。我在整理照片时遇到了麻烦。

回答

0

由于HTTP通过TCP进行操作,因此应用程序知道连接何时终止,并可能呈现其接收的内容。

当然,您可能总是不正确地终止连接,例如通过物理删除将您连接到Internet的电缆。在这种情况下,任何TCP应用程序都会等待几秒钟,然后声明连接已超时 - 对于浏览器,通常不显示任何内容。

至于处理异常,取决于应用程序。从套接字读取被阻塞,当它完成时,应用程序应该检查它已经收到了什么,并且没有发生错误。

+0

HTTP 1.0肯定是有内容长度标头(RFC 1945第10.4节)。它没有的是默认的持久连接(例如'Connection:keep-alive'头部不被假设)像HTTP 1.1一样。 HTTP 1.0回复的默认行为是在发送数据后关闭套接字,除非客户端在其请求中明确要求持久连接。 – 2010-06-23 22:43:44

+0

哦,对不起,我没记错。 – Mewp 2010-06-23 23:01:14