bt软件dht网络下每存储一个peer要消耗多少字节,ipv4要8,ipv6要21,通过Get_peers返回udp数据包时多少个值是安全mtu
bt软件dht网络下每存储一个peer要消耗多少字节,ipv4要8,ipv6要21,通过Get_peers返回udp数据包时多少个值是安全mtudht下每存储一个peer要求格式 6:+ip+端口,存储一个用户共8字节
dht本地回复对方Get_peers产生的协议头共93字节
等于存储5个peer需要93+8*5=133实际内容字节,133+8+20=161mtu
为了控制1352实际内容,1380的mtu可有效安全通过隧道软件
那么ipv4下一次最多返回157个peer
如果是ipv6那么每存储一个peer是消耗21字节,一次最多返回59个peer
比如存储500个,收到请求随机返回50个
如果对他人Get_peers请求后续打算加上返回8个nodes节点(每个26字节),那么ipv6下估计就不能返回50个了,要改成49个
当前协议头共93字节
预计加上8个nodes节点,那么协议头大小预计会从93字节变成320字节左右
帖子补充
回复其他人get_peers的时候,现在正常有nodes了
其它人在找到3个peer的同时可以进一步从得知的nodes其它节点继续查询获取更多peer
上一版协议头是93字节,这一版同时给对方请求包Get_peers回 nodes 节点的情况,协议头是312字节
等于存储5个peer需要312+8*5=352实际内容字节,352+8+20=380mtu
这就是说这一版本为了不超过1380的mtu(1352实际内容)
返回8个ipv6 nodes节点(每个38字节,和一个11字节前缀头)协议头是408字节,ip包为40字节(1332实际内容)
绝对安全值
ipv4最多返回130个
ipv6最多返回44个
如果ipv6返回50个那么就会发生分片,只有设置为44个才是安全的
ipv6返回4个节点的情况下,那么返回50个peer是安全的
(38x4+11+93-1332)/21=51
可以改成ipv6下返回peer的时候只返回4个节点,如果不存在peer字段才返回8节点
那就现在这样ipv6就对接收到的get_peers只回4个nodes吧,不需要判断是否携带peer字段也可以省点dht流量开销
页:
[1]