云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

亚马逊云_分布式cdn_免费1年

小七 141 0

DNS-LOC记录的奇妙世界

CloudFlare基础设施的一个基石是我们快速服务DNS请求和处理DNS攻击的能力。为了完成这两件事,我们在Go中编写了自己的权威DNS服务器RRDNS。正因为如此,我们才得以抵御DNS攻击,成为网络上最快的DNS提供商之一。实现一个权威的DNS服务器是一项艰巨的任务。这部分是因为DNS是一个非常古老的标准(rfc1035可以追溯到1987年),部分原因是随着DNS的发展,它已经发展成为一个越来越复杂的系统,部分原因是在RFCs中编写的内容和在现实世界中发生的并不总是一回事。一种很少使用的DNS记录类型是LOC(或location)。它允许您指定物理位置。CloudFlare处理数百万个DNS记录;其中只有743个是loc。不过,可以在CloudFlare DNS编辑器中设置LOC记录。

Trinity

我的网站geekatlas.com网站有复活节彩蛋的记录。以下是如何在CloudFlare DNS设置中配置它:

LOC Example

当你在CloudFlare规模下操作时,很少使用的角落和裂缝变得很重要。尽管我们的整个数据库中只有743个LOC记录,但至少有一个客户联系了支持人员,以找出他们的LOC记录没有得到服务的原因。这让我进入了RRDNS的源代码来找出原因。答案很简单。虽然RRDNS有接收LOC记录请求的代码,创建包含LOC数据的响应包,但是缺少一个链接。CloudFlare DNS服务器将LOC记录存储为一个字符串(例如上面的33 40 31 N 106 28 29 W 10 m),但没有人编写代码来解析该记录并将其转换为内部格式。哎呀。文本LOC格式和二进制,在线,格式在RFC1876中进行了描述,它是对1987年原始标准进行更新的众多RFC之一。RFC1876来自1996年。文本格式相当简单。RFC是这么说的:LOC记录在主文件中以以下格式表示:所有者TTL类位置(d1[m1[s1]]{"N"|"S"}d2[m2[s2]]{"E"|"W"}altm"][sizm"][hpm"][vpm"]]]])哪里:d1:[0。。90](纬度)d2:[0。。180](经度)m1,m2:[0。。59](分纬度/经度)s1,s2:[0。。59.999](秒纬度/经度)alt:[-100000.00。。42849672.95]乘.01(海拔高度以米为单位)siz,惠普,副总裁:[0。。90000000.00](尺寸/精度(米)如果省略,分钟和秒默认为零,大小默认为1m,水平精度默认为10000米,垂直精度默认为10000米默认值为10米。这些默认值代表典型值邮政编码区域大小,因为它通常很容易找到按邮政编码列出的大致地理位置。因此,需要纬度、经度和高度以及三个可选值作为位置和精度信息的大小。很简单。还有在线格式。与TXT记录不同,LOC记录数据被解析并转换为固定大小的二进制格式。回到RFC 1876:最低有效位+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+0 |版本|尺寸|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+2 |水平预|垂直预|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+4 |纬度|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+6 |纬度|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+8 |经度|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+10 |经度|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+12 |海拔|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+14 |海拔|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+因此,32位的纬度,经度和海拔,然后三个8位的值的大小和精度。纬度和经度值有一个非常简单的编码,它将32位视为无符号整数:由"大小"字段描述的球体中心的纬度,用32位整数表示,最有效的八位字节优先(网络标准字节顺序),以千分之一秒的弧度为单位。2^31代表赤道;上面的数字是北纬。海拔高度可以低于海平面,但仍然没有符号:由"大小"字段描述的球体中心的高度,用32位整数表示,最有效的八位字节优先(网络标准字节顺序),以厘米为单位,距GPS使用的[WGS 84]参考球体下方100000米处。但是8位值使用了一种非常特殊的编码方式,允许将大范围的近似值压缩到8位中,并且当以十六进制形式输出时,也可以让人读懂!包围所述实体的球体的直径,以厘米为单位,表示为一对四位无符号整数,每一位的范围从0到9,最有效的四位代表基数,第二个数字表示10的幂次方。这就可以表达从0e0(>头