打开网站的详细流程,以百度为例
-
输入处理与URL解析
-
补全协议
浏览器会自动为域名补全通信协议,默认使用https(加密协议),如果此协议不可用,就使用http(明文协议),这样最终的URL变为:https://www.baidu.com
-
解析URL结构
URL就是网页最上面显示的一连串字符比如:
https://yuanbao.tecent.com/chat/naQTmsDa/5d3967bb-f804-4-afcr-19f41186f9
拆分URL各个部分,协议(https协议),域名(www.baidu.com),端口(https默认443)等
-
-
DNS域名解析
DNS(Domain Name System)域名系统,作用:将域名解析为ip地址
将域名(www.baidu.com)解析为ip地址(180.101.50.188)
-
建立TCP连接:三次握手
获得ip后,就通过TCP协议与百度服务器建立网络连接,即三次握手。
-
发送http/https请求
连接建立后,浏览器向百度服务器发送HTTPS请求。
如果使用的HTTPS协议,会先进行TLS握手,作用是对连接会话进行加密。会确定加密算法,交换秘钥等等。
HTTP请求组成:请求行、请求头、请求体。
-
服务器处理请求并返回响应
百度服务器接收到请求后,会对请求进行解析,然后将解析出来的数据进行相应的业务处理,再将需要发送的响应封装成HTTP响应,然后进行发送。
HTTP响应组成:响应行、响应头、响应体。
-
关闭TCP连接:四次挥手(可选)
数据传输完成后,进行四次挥手,关闭TCP连接。
-
浏览器渲染页面
浏览器收到响应请求,并解析相应请求,解析出来的数据大都是HTML代码,然后处理代码渲染页面,最终展示出来。
HTTP协议和TCP协议
TCP协议是建立在传输层的,作用是在客户端和服务端之间建立一条可靠的连接通道。
HTTP协议是建立在应用层的,运行在TCP连接之上,对发送内容进行加密。
我输入www.baidu.com后,出现了对应的页面,然后我有进行搜索、点击链接、观看视频等操作,跳转到了另一个页面,那么TCP连接是在每次服务器发送响应回来都要关闭吗?如果我对此页面进行大量操作,那每一个操作都要建立TCP连接和关闭TCP连接吗?
进行搜索、点击链接、观看视频等操作都会触发HTTP请求。
TCP 连接不会每次操作都重新建立,现在使用的HTTP/2,可以在一个TCP连接上进行多路复用,同时处理多个HTTP请求(TCP Keep-Alive 机制)。
关闭TCP连接的情况:
- 服务端或者客户端主动断开
- 长时间没有新的请求(通常是几分钟)
- 出现错误或者网络中断
所有评论(0)