1六、在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?ajax
第一种回答算法
一、查浏览器缓存,看看有没有已经缓存好的,若是没有chrome
2 、检查本机host文件浏览器
三、调用API,Linux下Scoket函数 gethostbyname缓存
四、向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议安全
五、若是在一个子网内采用ARP地址解析协议进行ARP查询若是不在一个子网那就须要对默认网关进行 DNS查询,若是还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球好像一共有13台根服务器)服务器
六、这个时候咱们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会, 首先尝试http而后调用Socket创建TCP链接,网络
七、通过三次握手成功创建链接后,开始传送数据,若是正是http协议的话,就返回就完事了,函数
八、若是不是http协议,服务器会返回一个5开头的的重定向消息,告诉咱们用的是https,那就是说IP没 变,可是端口号从80变成443了,好了,再四次挥手,完事,加密
九、再来一遍,此次除了上述的端口号从80变成443以外,还会采用SSL的加密技术来保证传输数据的安 全性,保证数据传输过程当中不被修改或者替换之类的,
十、此次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程当中也会检验对方的 CA安全证书。
十一、确认无误后,开始通讯,而后服务器就会返回你所要访问的网址的一些数据,在此过程当中会将界面 进行渲染,牵涉到ajax技术之类的,直到最后咱们看到色彩斑斓的网页
第二种回答
1. 浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/#dns)。
2. 若是缓存中没有,就去调用 gethostbyname 库函数(操做系统不一样函数也不一样)进行查询。
3. 若是gethostbyname没有这个域名的缓存记录,也没有在hosts` 里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通讯栈提供的,一般是本地路由器或者 ISP 的缓存 DNS 服务器。
4. 查询本地 DNS 服务器
5. 若是 DNS 服务器和咱们的主机在同一个子网内,系统会按照下面的 ARP 过程对 DNS 服务器进行 ARP 查询
6. 若是 DNS 服务器和咱们的主机在不一样的子网,系统会按照下面的 ARP 过程对默认网关进行查询
1七、谈谈DNS解析过程,具体一点
1.请求一旦发起,如果chrome浏览器,先在浏览器找以前有没有缓存过的域名所对应的ip地址,有的 话,直接跳过dns解析了,如果没有,就会找硬盘的hosts文件,看看有没有,有的话,直接找到hosts 文件里面的ip
2.若是本地的hosts文件没有能获得对应的ip地址,浏览器会发出一个dns请求到本地dns服务器,本地 dns服务器通常都是你的网络接入服务器商提供,好比中国电信,中国移动等。
3.查询你输入的网址的DNS请求到达本地DNS服务器以后,本地DNS服务器会首先查询它的缓存记录, 若是缓存中有此条记录,就能够直接返回结果,此过程是递归的方式进行查询。若是没有,本地DNS 服务器还要向DNS根服务器进行查询。
4.本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务 器收到请求以后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的 解析服务器的地址。
5. 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本 地DNS服务器不只要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用 户查询时,能够直接返回结果,加快网络访问。