Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

浏览器输入url到页面展示的全过程(综合) #18

Open
GGXXMM opened this issue Aug 10, 2019 · 0 comments
Open

浏览器输入url到页面展示的全过程(综合) #18

GGXXMM opened this issue Aug 10, 2019 · 0 comments
Labels

Comments

@GGXXMM
Copy link
Owner

GGXXMM commented Aug 10, 2019

1、浏览器地址栏输入URL

比如我们访问百度首页,输入URL为:https://www.baidu.com,实际上,完整的URL构成如下:

https://www.baidu.com:443/test/demo.html?name=lilei&age=23/#hi

模式协议(https) + 域名部分(www.baidu.com) + 端口部分(443) + 虚拟目录(/test) + 文件名部分(/demo.html) + 参数部分(?name=lilei&age=23) + 锚点部分(#hi)

2、DNS域名解析

当输入baidu.com的域名,实际上是访问的14.215.177.39,这是百度IP地址。从baidu.com查找到14.215.177.39的IP地址,就是进行了DNS解析。

3、浏览器和服务器通过TCP三次握手建立连接

拿到域名对应的IP地址后,浏览器和服务器通过三次握手策略建立了TCP连接。通信的两端的2个端点连接形成一条TCP连接。TCP连接的端点叫做套接字(socket)或插口。

套接字socket = (IP地址:端口号)

4、浏览器向服务器发送一个HTTP请求

浏览器与服务器建立了TCP连接之后,发送一个HTTP请求报文,一般浏览器只能发起GET或POST请求。

5、服务器响应HTTP请求,返回html文件给浏览器

服务器接到HTTP请求,处理后发送HTTP响应报文,将html文件返回给浏览器。

6、浏览器解析html,进行渲染

  • html解析,构建dom树
  • css解析,构建style树
  • 组合构建render tree
  • layout布局
  • painting绘制页面
@GGXXMM GGXXMM added the 网络 label Dec 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant