让我说我想使用http协议从服务器获取一个字节,我想最小化所有内容,没有标题http://myserver.com/b其中b是一个包含一个字符的文本文件,或者更好的是b是只有一个字符(不确定是否可能)。有没有办法用apache执行此操作,完整的http和完整的https事务所需的最小数据量是多少?或者,如果数据效率更高,则只需头部请求即可完成交易。
答案 0 :(得分:5)
如果您计划使用HTTP / 1.1(如果您最终使用虚拟主机,则需要更多或更少),GET
请求将需要拥有Host
中的主机名} header或请求行中的绝对URI(请参阅RFC 2616 section 5.1.2)。
您的回复还需要Content-Length
或transfer encoding headers and delimiters。
如果您愿意使用HEAD
请求“中断”HTTP,听起来HTTP可能不是最佳的协议选择。您也可以在自定义标题中返回一些内容,但这并不是一种干净的方式。
请注意,即使您实现自己的协议,您也需要实现类似于Content-Length
或chunked encoding提供的机制,以便能够确定何时停止从远程方读取(否则,你将无法检测到严密关闭的连接。)
修改强>
以下是一个简单示例,具体取决于您的主机名(假设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格式)。
答案 1 :(得分:4)
你究竟想要实现什么,这是一种活着吗?
你可以做一个“GET /”,这意味着使用了HTTP / 1.0,但这会阻止你进入像虚拟主机等的东西。你可以将“/”映射到cgi脚本,它不需要是一个真实的文件,取决于你想要实现的目标。您可以将Apache配置为仅返回最小的标头集,这些标头基本上是“Content-Type:text / plain”(或另一种更短的mime类型,可能是自定义mimetype,例如“Content-Type:a / b”)和“ Content-Length:0“,因此根本不返回响应主体。
答案 2 :(得分:1)
这是一个老问题,但也许有人发现它很有用,因为没有人回答问题的HTTPS部分。
对我而言,需要在我的代理中轻松验证HTTPS通信,该通信通过隧道连接不可信的其他代理。
本网站清楚解释:http://netsekure.org/2010/03/tls-overhead/
文章引用:
要记住影响计算的一件事是大多数消息的可变大小。变量性质不允许计算精确值,但是对于变量字段采用一些合理的平均值,可以得到很好的开销近似值。现在,让我们浏览每条消息并考虑它们的大小。
- ClientHello - 初始客户端问候语的平均大小约为160到170个字节。它将根据客户端发送的密码套件数量以及存在多少TLS ClientHello扩展名而有所不同。如果使用会话恢复,则需要为会话ID字段添加另外32个字节。
- ServerHello - 此消息比ClientHello更静态,但由于TLS扩展,仍然可变大小。平均大小为70到75个字节。 -Certificate - 此消息是不同服务器之间变化最大的消息。该消息包含服务器的证书,以及证书链中的所有中间颁发者证书(减去根证书)。由于证书大小根据所使用的参数和密钥而有很大差异,因此每个证书平均使用1500个字节(自签名证书可以小到800个字节)。另一个变化因素是证书链到根证书的长度。为了保持网络上更保守的一面,让我们假设链中有4个证书。总的来说,这给了我们大约6k的消息。
- ClientKeyExchange - 让我们再次假设使用最广泛的案例 - RSA服务器证书。这对应于此消息的130字节大小。
- ChangeCipherSpec - 固定大小为1(技术上不是握手消息)
- 已完成 - 取决于是使用SSLv3还是TLS,大小相差很大 - 分别为36和12字节。目前大多数实现至少支持TLSv1.0,所以我们假设将使用TLS,因此大小将为12个字节
因此,最小值可以与:
一样大(或小)20 + 28 + 170 + 75 + 800 + 130 + 2*1 + 2*12 ≈ 1249
虽然根据文章,平均值约为6449
个字节。
同样重要的是要知道可以恢复TLS会话,因此只有第一个连接才有此开销。所有其他消息都有大约330
个字节加上。