从url说起
一个常见的url长这个样子
https://name.com,这是一个常见的使用了ssl加密的网站
但有时你会见到
http://name.com,这是一个没有使用ssl加密的网站
这种样子的url,通常还会被浏览器警告危险
但有时你会见到https://name.com:8080
这是因为https默认使用443端口,http默认使用80端口,当用户直接输入网址时,浏览器便会自动访问相应的默认端口,但如果服务不部署在这些端口,那便需要用户自己在网址后加上 :端口号 了
那么输入url后会发生什么,总的来说是
1.域名解析
2.发起tcp三次握手
3.建立tcp连接后发起http请求
4.服务器响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源
6.浏览器对页面进行渲染呈现给用户
具体细节来说
- 域名解析(DNS)
浏览器无法直接识别URL,需要进行域名解析。
DNS协议通过查询域名对应的IP地址,实现域名到IP的映射。
解析过程包括浏览器缓存、操作系统缓存、路由缓存以及ISP的DNS服务器。 - 发起TCP三次握手
建立与服务器的TCP连接,确保双方能够可靠通信。
三次握手涉及到同步客户端和服务端的序列号、确认号以及交换TCP窗口大小信息。 - 建立TCP连接后发起HTTP请求
发送HTTP请求报文,包括请求行、请求头和请求体。
请求方法有GET、POST、PUT、DELETE等,头部包含附加信息。 - 服务器响应HTTP请求,浏览器得到HTML代码
服务器接收请求后进行处理,返回HTTP响应报文。
响应报文包括响应行、响应头和响应体,其中HTML代码位于响应体中。 - 浏览器解析HTML代码,并请求HTML代码中的资源
浏览器解析HTML代码,构建DOM树。
解析CSS,生成CSSOM(CSS Object Model)。
结合DOM和CSSOM生成RenderTree,进行渲染。
页面中的其他资源如图片、样式表、脚本等也会被请求。 - 浏览器对页面进行渲染呈现给用户
根据RenderTree计算每个节点的信息,进行页面渲染。
重绘和回流的概念涉及到页面元素样式的变化,可能触发浏览器的重新渲染和重新布局。 - 断开连接(TCP四次挥手)
数据传输完毕后,进行TCP四次挥手,断开与服务器的连接。
本页的评论功能已关闭