Xeo*_*n06 29 networking browser tcp http
所以我知道 HTTP 基本上只是一个基于 TCP 的文本协议,而 TCP 是基于状态/连接的。这意味着浏览器必须在执行 HTTP 请求之前通过 TCP 连接到服务器。那么问题是:浏览器通常会为每个 HTTP 请求创建一个新的 TCP 连接吗?
只要用户仍在该服务器上浏览,浏览器就可以打开一个 TCP 请求并使其保持活动状态,但是服务器将不得不使用大量的最大连接数来处理它。但是话又说回来,如果浏览器为每个请求创建一个连接,并且用户在同一台服务器上浏览很多,那似乎是一种浪费。它通常如何工作?也许通过使用计时器?
use*_*686 33
在 HTTP/0.9(不再使用)中,每个请求都使用一个单独的 TCP 连接,并通过关闭连接来表示响应结束。
在 HTTP/1.0 中,单独的连接仍然是官方的默认设置。但是,Connection: Keep-Alive如果服务器支持,可以使用非官方但非常广泛支持的“ ”请求头来请求持久连接。
在 HTTP/1.1 中,持久连接成为默认设置,旧的单请求行为必须显式请求。通常使用多个(2-5)个持久连接。
(可选地,请求可能会被流水线化,尽管结果证明这很难实现并且会产生比它解决的更多的问题(线头阻塞等),所以没有人使用 HTTP/1.x 流水线。)
HTTP/2(又名SPDY)专门设计用于同时多路复用多个请求。它有一个成帧/分组层,允许响应以任何顺序甚至同时到达。
| 归档时间: |
|
| 查看次数: |
17658 次 |
| 最近记录: |