在http2中,如果客户端忽略服务器的设置框架,服务器应该做什么?

时间:2016-01-06 04:02:20

标签: http2 http2-lawyers

当连接数很多时,我们希望在设置框架中通过SETTINGS_HEADER_TABLE_SIZE减少动态表格大小。如果客户端忽略设置框架,并且没有发送带有 ack标志的设置框架,服务器是否会使用默认值(4096个八位字节)?如果是,客户端可以发送许多请求收到服务器设置框后,动态表为4096个八位字节。这可能会导致服务器的内存使用过多。如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

客户端must应用设置及时并发送设置确认,这不是可选的。来自客户端的任何其他行为都是不合规的,在这些情况下,服务器可以关闭连接。对于客户端在没有确认设置的情况下长时间徘徊的特定情况,服务器可以使用GoAway框架关闭连接,原因是SETTINGS_TIMEOUT。

另一件事是HPACK动态表是HTTP / 2连接的“全局”。因此,攻击者真正滥用默认大小的唯一方法是打开许多不同的连接,而不是通过在同一连接上发出许多请求。在我看来,你总是希望限制来自单个IP地址的连接数,否则攻击者甚至不需要僵尸网络来对你的服务器执行DDOS攻击。

将动态表的大小减小到4096字节以下可能会增加标头流量,并可能会对性能产生反作用。