尽可能短的HTTP请求是一种简单的GET方法,通过直接连接到特定服务器来实现.最短的要求是:
GET / HTTP/0.9<CR><LF>
Run Code Online (Sandbox Code Playgroud)
这是总共16个字节,包括行尾的CR/LF对.
对于HTTP 1.x(1.0和1.1),预期会出现标题,因此要表示标题的结尾,您需要一个空行.最短的请求是:
GET / HTTP/1.0<CR><LF>
<CR><LF>
Run Code Online (Sandbox Code Playgroud)
这总共是18个字节.
(在Doug的评论之后添加;感谢:)对于HTTP 1.1,Host:标头是必需的.请参阅@ DougRichardson的答案,了解尽可能短的HTTP 1.1请求.
26个字节,用于1字节资源和1字节主机名的例外情况.
GET / HTTP/1.1<CR><LF>
Host:x<CR><LF>
<CR><LF>
Run Code Online (Sandbox Code Playgroud)
您需要一个初始请求行,如果您使用的是HTTP 1.1,则需要一个主机头.每个换行符都是两个字节(CRLF).这个最小GET请求的两部分是可变的:资源路径和主机名.
最小初始请求行是GET / HTTP/1.116个字节(包括您看不到的两个不可见的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6190 次 |
| 最近记录: |