HTTP请求的最小大小(字节)

时间:2014-07-30 22:16:36

标签: html http web size byte

HTTP请求的最小字节数(字节数)是多少?我的意思是HTTP请求应该包含的强制数据的大小,例如标题的相关字段,并考虑到请求的主体是空的。

2 个答案:

答案 0 :(得分:8)

尽可能短的HTTP请求是一种简单的GET方法,通过直接连接到特定服务器来实现。最短的要求是:

GET / HTTP/0.9<CR><LF>

总共16个字节,包括行尾的CR / LF对。

对于HTTP 1.x(1.0和1.1),预期会出现标题,因此要表示标题的结尾,您需要一个空行。最短的请求是:

GET / HTTP/1.0<CR><LF>
<CR><LF>

总共18个字节。

(Doug评论后添加;感谢:)对于HTTP 1.1,需要Host:标头。请参阅@ DougRichardson的答案,了解尽可能短的HTTP 1.1请求。

答案 1 :(得分:6)

26个字节,用于1字节资源和1字节主机名的例外情况。

GET / HTTP/1.1<CR><LF>
Host:x<CR><LF>
<CR><LF>

您需要一个初始请求行,如果您正在使用HTTP 1.1,则需要一个主机头。每个换行符都是两个字节(CRLF)。这个最小GET请求的两部分是可变的:资源路径和主机名。

最小初始请求行是GET / HTTP/1.1,它是16个字节(包括你看不到的两个不可见的CRLF字节)。

最小主机行是Host:x,即一个字节的主机名,导致8个字节(同样是两个CRLF字节)。

要表示标题的结尾,您需要另一个CRLF,以便另外2个字节。

16+8+2=26 bytes表示最小HTTP请求大小。

当然,如果您有更长的主机名或更长的资源路径,这会增加。要考虑这些因素,最小HTTP请求大小为:24 + length(resource_path) + length(host)

这是一个使用bash中的netcat的真实世界示例(注意资源路径和主机名都比最小值长):

nc -c www.example.com 80 <<EOF
GET /index.html HTTP/1.1
Host:www.example.com

EOF