当我们在浏览器地址栏输入一个网站地址(比如www.bilibili.com)时,点击回车键后浏览器过段时间后会返回给我们一个页面,这其中的过程是什么样呢?(一个常见面试题)
DNS域名解析的过程如下:
(1).浏览器缓存解析:首先搜索浏览器本身的缓存,查看缓存中是否存在输入域名对应的IP地址,有且没有过期的话解析到此结束。 (2).系统缓存解析:情况一不存在时,浏览器会搜索操作系统本身的DNS缓存,有且没有过期的话解析到此结束。 (3).路由器解析:情况一、二不存在时,会向局域网所归属路由器发送请求。 (4).互联网服务提供商DNS解析:上述情况不存在时,最后会向根服务器发送请求。三次握手机制建立连接,下面是三次握手流程。
扩展:为什么要三次握手?
答:第三次握手是为了防止失效的连接请求到达服务器后,让服务器错误打开连接。
三次握手的作用是确保双方的收发能力正常。
第一次握手:客户端发送网络包,服务端接收。 服务端得到结论:客户端发送能力,服务端接收能力正常 第二次握手:服务端发包,客户端接收 客户端得到结论:服务端接发能力正常,客户端接发能力正常 第三次握手:客户端发包,服务器端接收 服务端得到结论:客户端接发能力正常,服务端接发能力正常 第一、二次握手后,服务端不确定客户端接收能力以及自己的发送能力是否正常。在第三次握手时,服务端收到客户端对第二次握手作的回应。服务端角度来看,我在第二次握手时的响应数据发送出去了,客户端也接收到了。所以我的发送能力正常,客户端的接收能力也是正常的。
浏览器端发送请求报文,请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。
1.请求行:分为3个部分:请求方法、请求地址和协议版本
请求方法:8种请求方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。 请求地址:URL:统一资源定位符。 协议版本:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.12.请求头部
常见请求头如下:
在自己电脑上截了屏如下:(登录B张首页)
3.请求数据:可选部分
服务器端发送响应报文,响应报文由状态行(status line)、相应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。
1.状态行:由3部分组成,协议版本,状态码,状态码描述
协议版本与请求报文一致,状态码与状态码描述不多解释啦,大家比较清楚的
2.响应头部:响应报文的附加信息 。 截个图如下
3.响应正文:返回给客户端的数据信息,如HTML等
浏览器得到HTML文件后,开始解析HTML代码,遇到一些静态资源如图片时,会去向服务器端请求下载。
这里TCP断开连接为四次挥手机制,不多阐述啦。
,遇到一些静态资源如图片时,会去向服务器端请求下载。
这里TCP断开连接为四次挥手机制,不多阐述啦。
之后浏览器利用自身工作机制,把请求到的静态资源和HTML代码进行渲染,最终显示给用户。