在面试过程总会被问到“HTTP协议怎样工作?“,”一次完整的http请求是经历什么过程“...... 确实此题能衡量程序员的功底,倘若你回答非常完整,说明你对网络请求过程是非常认识的,对大流量和大并发场景你就很清楚怎样进行优化,本篇文案从输入URL到浏览器表示页面出现了什么这视角大体认识一下,当你在浏览器位置栏输入网址后浏览器是怎么把最后的页面呈现出来的呢?这个过程从程序员理解的方向能够分为以下几个过程:
我先给大众瞧瞧整体的请求过程,为能更好地让读者明白,作者会分期完整介绍以下过程。
请求整体过程
域名解析 -> 发起TCP的3次握手 -> 创立TCP连接后发起http请求 -> 服务器响应http请求->浏览器得到html代码 -> 浏览器解析html代码同期请求html代码中的资源(如js、css、照片等) -> 浏览器对页面进行渲染呈现给用户。
获取内容请求
以上过程大致进行分析细节,以方便大众更加仔细地认识整体的过程,然则有些过程无能理解透彻并且过程比较繁杂未能提炼通俗易懂语言给大众分析,不外后续会持续分析给大众的。
1.域名解析
咱们以www.cnblogs.com为例:请问www.cnblogs.com这个域名的IP位置是多少?
目的是经过域名位置转化到资源URL的IP位置,对用户运用域名是为了方便记忆,然则为了让计算机理解这个位置还需要把它解析为IP位置,当用户在位置栏输入URL中,浏览器会首要搜索浏览器自己的DNS缓存,先看自己的缓存中是不是存在无过期对应的条目,倘若找到且无过期则停止搜索解析到此结束,倘若无浏览器会搜索操作系统的DNS缓存,在操作系统亦无找到,那样尝试读hosts文件,瞧瞧里面是不是配置对应域名的IP位置,倘若在hosts文件中亦无找到对应的条目,浏览器就会发起一次DNS的系统调用,这过程是经过UDP协议向DNS的53端口发起请求递归迭代请求,这过程有运营商DNS服务供给给咱们,运营商的DNS服务器必须得供给给咱们对应域名的IP位置,先向本地配置的首选DNS服务器发起域名解析请求(通常是由于电信运营商供给或各大互联网厂商供给的DNS服务器)运营商的DNS服务器首要查询自己的缓存,找到对应的条目,且无过期,则解析成功。倘若无找到对应的条目,则运营商的DNS代浏览器发起迭代DNS解析请求,它首要是会找根域的DNS的IP位置(这台DNS服务器都内置13台根域的DNS的IP位置),找到根域的DNS位置,就会向其发起请求,来一场寻址之旅:
运营商DNS:请问www.cnblogs.com这个域名的IP位置是多少呢?
根域DNS:你一个顶级域com域的一个域名,我不晓得这个域名的IP位置,然则我晓得com域的IP位置,你去找它去问一问呢?
运营商DNS:请问www.cnblogs.com这个域名的IP位置是多少呢?
COM域:我不晓得www.cnblogs.com这个域名的IP位置,然则我晓得cnblogs.com这个域的DNS位置,你去找它去去问一问呢?
cnblogs.com域名的DNS:这个时候cnblogs.com域的DNS服务器一查,诶,果真在我这儿,通常便是由域名注册商供给的,像万网,新网等。
于是就把找到的结果发送给运营商的DNS服务器,这个时候运营商的DNS服务器就拿到了域名对应的IP位置,并返回给操作系统内核,内核又把结果返回给浏览器,最终浏览器拿到了。
域名解析流程
备注:
浏览器:能够运用 chrome://net-internals/#dns 来进行查看
操作系统:Mac的dns缓存查找 nslookup www.baidu.com
|