Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最小的http和https数据请求是什么_Http_Https - Fatal编程技术网

最小的http和https数据请求是什么

最小的http和https数据请求是什么,http,https,Http,Https,假设我想使用http协议从服务器获取一个字节,并且我想最小化所有内容,没有标题,b是一个包含一个字符的文本文件,或者更好的是,b只是一个字符(不确定是否可能)。有没有办法用apache实现这一点?完整http和完整https事务所需的最小数据量是多少?或者,如果数据效率更高的话,只需一个head请求就可以完成事务。您到底想实现什么,这是一种保持活力的方式吗 您可以执行“GET/”,这意味着使用HTTP/1.0,但这会将您锁定在虚拟主机等内容之外。您可以将“/”映射到cgi脚本,它不需要是真实的文

假设我想使用http协议从服务器获取一个字节,并且我想最小化所有内容,没有标题,b是一个包含一个字符的文本文件,或者更好的是,b只是一个字符(不确定是否可能)。有没有办法用apache实现这一点?完整http和完整https事务所需的最小数据量是多少?或者,如果数据效率更高的话,只需一个head请求就可以完成事务。

您到底想实现什么,这是一种保持活力的方式吗


您可以执行“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