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