1. 输入处理与URL解析

    1. 补全协议

      浏览器会自动为域名补全通信协议,默认使用https(加密协议),如果此协议不可用,就使用http(明文协议),这样最终的URL变为:https://www.baidu.com

    2. 解析URL结构

      URL就是网页最上面显示的一连串字符比如:

      https://yuanbao.tecent.com/chat/naQTmsDa/5d3967bb-f804-4-afcr-19f41186f9

      拆分URL各个部分,协议(https协议),域名(www.baidu.com),端口(https默认443)等

  2. DNS域名解析

    DNS(Domain Name System)域名系统,作用:将域名解析为ip地址

    将域名(www.baidu.com)解析为ip地址(180.101.50.188)

  3. 建立TCP连接:三次握手

    获得ip后,就通过TCP协议与百度服务器建立网络连接,即三次握手。

  4. 发送http/https请求

    连接建立后,浏览器向百度服务器发送HTTPS请求。

    如果使用的HTTPS协议,会先进行TLS握手,作用是对连接会话进行加密。会确定加密算法,交换秘钥等等。

    HTTP请求组成:请求行、请求头、请求体。

  5. 服务器处理请求并返回响应

    百度服务器接收到请求后,会对请求进行解析,然后将解析出来的数据进行相应的业务处理,再将需要发送的响应封装成HTTP响应,然后进行发送。

    HTTP响应组成:响应行、响应头、响应体。

  6. 关闭TCP连接:四次挥手(可选)

    数据传输完成后,进行四次挥手,关闭TCP连接。

  7. 浏览器渲染页面

    浏览器收到响应请求,并解析相应请求,解析出来的数据大都是HTML代码,然后处理代码渲染页面,最终展示出来。

HTTP协议和TCP协议

TCP协议是建立在传输层的,作用是在客户端和服务端之间建立一条可靠的连接通道。

HTTP协议是建立在应用层的,运行在TCP连接之上,对发送内容进行加密。

我输入www.baidu.com后,出现了对应的页面,然后我有进行搜索、点击链接、观看视频等操作,跳转到了另一个页面,那么TCP连接是在每次服务器发送响应回来都要关闭吗?如果我对此页面进行大量操作,那每一个操作都要建立TCP连接和关闭TCP连接吗?

进行搜索、点击链接、观看视频等操作都会触发HTTP请求。

TCP 连接不会每次操作都重新建立,现在使用的HTTP/2,可以在一个TCP连接上进行多路复用,同时处理多个HTTP请求(TCP Keep-Alive 机制)。

关闭TCP连接的情况:

  1. 服务端或者客户端主动断开
  2. 长时间没有新的请求(通常是几分钟)
  3. 出现错误或者网络中断
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区