详解URL组成及闲聊我国的雪人计划
什么是URL?
URL,即统一资源定位符,它是一种URI,是可以从互联网上的资源的位置和访问方法的一种简洁的表示,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
由哪些部分组成?
它的格式为:scheme://login:password@address:port/path/to/resource?query_string#fragment
即:协议/用户和密码/域名和端口/层及文件路径/查询字符串/片段ID
Scheme:指定使用的传输协议,其中最常见的是http协议,它也是应用最广的协议,除此之外还有file(本地文件传输协议),mailto(电子邮件),thunde、ed2k(下载资源)。
// : URL层级URL标记符号,可以省略。
login:password:访问资源的身份验证,属于可选选项,浏览器默认以匿名方式访问资源。很多服务器要求输入用户名和密码才会允许用户访问数据,如FTP。
address:完整的层级URL必须有一个域名、ipv4或者ipv6地址作为请求服务器的位置,域名不区分大小,ipv6需要在方括号中。
Port:服务器端口是URL中可选内容,在没有指定时,默认访问标准端口,基本上浏览器支持的协议都会有关联的默认端口。
/path/to/resource:层级文件路径,这一结构来源于UNIX目录语义。
?query_string:查询字符串 只要负责将一系列的非层级格式的任意参数传递给服务器 参数之间用 " &" 连接,每个参数名与值之间用 " = " 隔开。
#fragmen:片段ID,值不会传递给服务器,只指向html页面,一般用来跳到a标签的锚链接。
步骤
1、提取协议名:浏览器接受到URL后会查找第一个“ :”,找到左边的便是协议名。
2、去除层级标识符:字符串//跟在协议名后面,如果发现有该字符会跳过,如果没有就不管了,所以http:www.baidu.com也是可以访问的。
3、获取授权信息部分:紧接着会依次扫描URL,以“ / ”、“ ?”、“ # ”哪个先出现为准来截取URL,如果存在认证信息,提取出来再查找@符号,如果找到,@左边是登陆认证信息,右边是是目标地址信息。
4、提取目标地址:目标地址信息第一个:分开的就是主机名和端口号。
5、确认路径:在目标地址结尾跟着一个/,接下来扫描“ ?”和“ # ”直至结尾,哪个先出现便以哪个为准,截取出来中间的路径便是路径信息。
6、提取查询字符串:如果存在“ ?”,便会扫描#或者字符串结尾,中间部分便是查询字段。
7、提取片段ID:如果成功解析完上一条信息,它最后还跟着#号,那么这个符号到字符串结尾便算片段ID了。
另外,一般要访问服务器上的资源时,我们都要输入服务器的IP来查询,但为什么现在普遍是在使用域名呢?这就是DNS协议了,只是上面的知识已经够枯燥的了,本章就不再细说DNS协议,只是想聊些更有趣的。
根域名服务器及雪人计划
根服务器主要用来管理互联网的主目录,即域名对应IP的表单,全世界只有13台(面向IPV4)(这13台根域名服务器名字分别为“A”至“M”),1个为主根服务器在美国,其余12个均为辅根服务器,其中9个在美国,欧洲2个,亚洲1个位于日本。
在国外,许多计算机科学家将根域名服务器称作“真理”(TRUTH),足见其重要性。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
美国控制了IPv4根服务器,就等于控制了全球的域名和IP地址,美国一直利用其垄断资源的优势,自己拥有50%的IP地址,却拒绝分配用户更多IP地址给中国,让中国占全球20%的互联网用户只拥有5%的IP地址。在美国一个人可以分配6个IP地址,中国却是26人共享一个IP。这让中国作为互联网大国感到气愤和无奈。如果哪天美国屏蔽中国互联网的域名和IP,那么中国的域名和IP将会无法访问,整个互联网将会瘫痪。
“雪人计划(Yeti DNS Project)”是基于全新技术架构的全球下一代互联网(IPV6)跟服务器测试和运营实验项目,旨在打破现有的根服务器困局,为下一代互联网提供更多的根服务器解决方案,由中国下一代互联网工程中心领衔发起。截至2017年11月27日,“雪人计划”已完成全球25台IPv6根服务器架设,其中中国部署4台。雪人计划打破了中国没有根服务器的历史,结束了作为全球拥有最多互联网用户、互联网访问量最大的国家,在IPv4时代不得不受美国控制的屈辱历史。
根服务器是国际互联网最重要的战略基础设施,是互联网通信的“中枢”。“雪人计划”作为一个实验项目,目的并不在于完全改变互联网的运营模式,而在于为真正实现全球互联网的多边共治提供一种解决方案。此外,“雪人计划”通过联合全球机构来做测试和试运营,扫清技术上的障碍,不仅可以争取更多支持者,还能推动在IETF(国际互联网工程任务组)内相应的标准化进展。