过程包括:
域名解析->建立TCP连接(三次握手)->发起http请求->服务器响应http请求,浏览器得到html代码->浏览器解析html代码,并请求html代码中的资源->浏览器对页面进行渲染呈现给用户
域名解析
- 浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,如果有且没有过期,则解析到此结束
- 如果浏览器自身的缓存中没有找到对应的条目,那么浏览器会搜索操作系统的DNS缓存,,如果找到且没有过期则停止搜索解析到此结束
- 如果操作系统的DNS缓存也没有找到,那么就尝试读取hosts文件(位于C:\Windows\Systems32\drivers\etc),查看里面有没有该域名对应的IP地址,如果有,则解析成功
- 如果还没有命中,那么就会真正的请求本地域名服务器(DNS)来解析这个域名(通过的是UDP协议的53端口发起请求),服务器会先查询自己的缓存,寻找对应的IP地址,如果找到且没有过期,解析成功,否则本地的DNS服务器就会向根DNS服务器发起请求进行查询。根DNS服务器上是没有记录哪个域名和IP的对应关系,它会告诉本地的DNS服务器可以到哪个域服务器上进行查询,并告诉这个域服务器的地址,这个过程是一个迭代的过程。本地DNS服务器拿到域名对应的IP地址,并返回给操作系统内核,操作系统又把结果返回给浏览器,至此浏览器才拿到域名对应的IP地址
建立TCP请求
拿到域名对应的IP地址后,就会建立TCP三次握手
发起http请求
HTTP请求报文的方法是get方式,如果浏览器存储了该域名下的Cookies,那么会把Cookies放入HTTP请求头里发送给服务器
服务器响应HTTP请求,浏览器得到HTML代码
服务器端WEB程序收到http请求后,就开始处理该请求,处理之后就返回给浏览器html文件