最小的http和https数据请求是什么
假设我想使用http协议从服务器获取一个字节,并且我想最小化所有内容,没有标题,b是一个包含一个字符的文本文件,或者更好的是,b只是一个字符(不确定是否可能)。有没有办法用apache实现这一点?完整http和完整https事务所需的最小数据量是多少?或者,如果数据效率更高的话,只需一个head请求就可以完成事务。您到底想实现什么,这是一种保持活力的方式吗最小的http和https数据请求是什么,http,https,Http,Https,假设我想使用http协议从服务器获取一个字节,并且我想最小化所有内容,没有标题,b是一个包含一个字符的文本文件,或者更好的是,b只是一个字符(不确定是否可能)。有没有办法用apache实现这一点?完整http和完整https事务所需的最小数据量是多少?或者,如果数据效率更高的话,只需一个head请求就可以完成事务。您到底想实现什么,这是一种保持活力的方式吗 您可以执行“GET/”,这意味着使用HTTP/1.0,但这会将您锁定在虚拟主机等内容之外。您可以将“/”映射到cgi脚本,它不需要是真实的文
您可以执行“GET/”,这意味着使用HTTP/1.0,但这会将您锁定在虚拟主机等内容之外。您可以将“/”映射到cgi脚本,它不需要是真实的文件,这取决于您试图实现的目标。您可以将Apache配置为只返回最小的头集,基本上是“Content-Type:text/plain”(或另一个较短的mime类型,可能是自定义的mime类型,例如“Content-Type:a/b”)和“Content-Length:0”,因此根本不返回响应正文。如果您计划使用HTTP/1.1(如果您最终进入虚拟主机,则或多或少需要),您的
GET
请求将需要在host
头中或在请求行中具有主机名(请参阅)
您的回复还需要内容长度
或
如果您愿意使用头请求来“破坏”HTTP,那么听起来HTTP可能不是最佳的协议选择。您也可以在自定义头中返回某些内容,但这不是一种干净的方法
请注意,即使您实现了自己的协议,您也需要实现一种类似于内容长度
或分块编码所提供的机制,以便能够确定何时停止从远程方读取(否则,您将无法检测到严重关闭的连接)
编辑:
下面是一个简单的例子,这取决于您的主机名(假设为HTTP 1.1)。我想您可以使用OPTIONS
。这取决于您愿意破坏HTTP的程度
请求:
GET / HTTP/1.1
Host: www.example.com
这是14+2+21+2+2=41字节(CRLF为2)
答复:
HTTP/1.1 200 OK
Content-Length: 1
Content-Type: text/plain
a
这是15+2+17+2+24+2+2+1=65字节
对于HTTPS,SSL/TLS通道本身将有一小部分开销,但大部分开销将由握手来承担,特别是服务器证书(假设您没有使用客户端证书身份验证)应该是最大的。请检查大小(DER格式)您的证书。这是一个老问题,但可能有人发现它很有用,因为没有人回答问题的HTTPS部分
对我来说,这是在我的代理中轻松验证HTTPS通信所必需的,它通过隧道连接其他代理
本网站对此进行了明确解释:
文章引述:
需要记住的一点是,大多数消息的可变大小会影响计算。可变性质不允许计算精确的值,但通过对变量字段取一些合理的平均值,可以得到开销的良好近似值。现在,让我们浏览每一条消息并考虑r他们的尺寸
- ClientHello–初始客户端hello的平均大小约为160到170字节。它将根据客户端发送的密码套件的数量以及存在的TLS ClientHello扩展的数量而变化。如果使用会话恢复,则需要为会话ID字段添加另外32字节
- ServerHello–此消息比ClientHello更静态,但由于TLS扩展,大小仍然可变。平均大小为70到75字节。
-Certificate–此消息是不同服务器之间大小差异最大的消息。此消息包含服务器的证书以及证书链中的所有中间颁发者证书(减去根证书).由于证书大小根据所使用的参数和密钥有很大差异,因此我将使用每个证书的平均1500字节(自签名证书可以小到800字节)。另一个变化因素是证书链到根证书的长度。为了更保守地了解web上的情况,让我们假设链中有4个证书。总的来说,此消息的长度约为6k
- ClientKeyExchange–让我们再次假设最广泛使用的情况–RSA服务器证书。这对应于此消息的130字节大小
- ChangeCipherSpec–固定大小为1(技术上不是握手消息)
- Finished–根据使用的是SSLv3还是TLS,大小会有很大的不同–分别为36和12字节。现在的大多数实现至少支持TLSv1.0,因此我们假设将使用TLS,因此大小将为12字节
因此,最小值可以大(或小)到:
尽管根据这篇文章,平均值约为6449
字节
另外,重要的是要知道TLS会话可以恢复,因此只有第一次连接有此开销。所有其他消息都有大约330个字节。没有头,您不能发出HTTP请求。如果我只执行头请求,最小的数据量是多少,我可以将服务器端的头数减少到多少最小值,即,我的数据?@克里斯,是的,你可以。根据,<代码>请求行< /代码>(例如<代码> GET/<代码>)不是严格的标题。如果可能的话,你应该直接考虑在TCP级别上做它。而最小的“GET”。HTTP请求很有趣,我认为HTTP开销的问题在更广泛的意义上更有趣——如果我想包装我的TCP二进制文件,我将支付多少HTTP头
20 + 28 + 170 + 75 + 800 + 130 + 2*1 + 2*12 ≈ 1249