1. 问题引入
经典问题:浏览器输入网站域名到网页加载出来,都经历了哪些过程?
浏览器抓包
DNS-TCP-TLS-HTTP请求
2. 字节接入框架
3. 企业接入升级打怪之路
1)域名系统
随着员工人数的增加,使用域名系统替换hosts文件可以更加高效。
关于域名空间: 域名空间被组织成树形结构;域名空间通过划分zone的方式进行分层授权管理;全球公共域名空间仅对应一棵树;根域名服务器:查询七点;域名组成格式: [a-zA-Z0-9_-], 以点划分label;
顶级域名: gov edu com mil org
域名系统DNS(Domain Name System) 是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
我们都知道,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址。即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用比较容易记忆的主机名字。但是,机器在处理IP数据报时,并不是使用域名而是使用IP地址。 这是因为IP地址长度固定,而域名的长度不固定,机器处理起来比较困难。
因为因特网规模很大,所以整个因特网只使用一个域名服务器是不可行的。因此,早在1983年因特网开始采用层次树状结构的命名方法,并使用分布式的域名系统DNS。并采用客户服务器方式。DNS使大多数名字都在本地解析(resolve),仅有少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机除了故障,也不会妨碍整个DNS系统的正常运行。
域名到IP地址的解析是由分布在因特网上的许多域名服务器程序共同完成的。 域名服务器程序在专设的结点上运行,而人们也常把运行域名服务器程序的机器称为域名服务器。
域名到IP地址的解析过程的要点如下:
- 当某一个应用需要把主机名解析为IP地址时,该应用进程就调用解析程序,并称为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器。
- 本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用程序获得目的主机的IP地址后即可进行通信。
- 若本地域名服务器不能回答该请求,则此域名服务器就暂时称为DNS的另一个客户,并向其他域名服务器发出查询请求。
原理步骤:
(1)系统首先会查找本地的DNS缓存和hosts文件信息,确定所对应的IP地址,如果有就直接访问这个IP所对应的域名服务器。
(2)如果没有找到,那么,系统将会把浏览器的解析请求发送给本地主机所指定的DNS服务器,称为LDNS。如果LDNS服务器中有域名所对应的ip地址,则返回给客户端的浏览器,如果没有,则继续请求其他DNS服务器。
(3)LDNS服务器会从DNS系统的根(.)开始请求对域名的解析。根DNS服务器全球只有13台,根域名服务器是没有域名解析记录的,但是它会有域名所对应顶级域.com的解析记录,因此直接把顶级域名.com所对应的DNS地址返回给LDNS服务器。
(4)LDNS服务器获取到顶级域.com对应的DNS服务器地址后,就会去.com服务器请求对域名的解析。
(5)LDNS服务器收到所对应的IP地址后,就会去域名服务器请求对的域名解析。域名对应的DNS服务器是该域名的授权DNS服务器。这个DNS服务器就是企业购买域名时用于管理解析的服务器。
(6)域名DNS服务器会把域名所对应的IP地址给解析出来,然后发给LDNS。
(7)LDNS把解析出来的结果baidu.com 所对应的ip地址发送给客户端的浏览器,LDNS也将域名和对应的地址缓存到cache中。
(8)客户端浏览器收到后,也会将其域名以及对应的IP地址缓存的到DNS缓存和hosts文件中。