本文转载自:HTTPS://www.cnblogs.com/anding/p/16987528.html
作者:安木夕
注意看,这个用户叫小美,他在地址栏输入了一串URL地址,然后竟然发生了不可思议的事情!
01、输入URL发生了什么?从输入URL开始,到页面呈现出来,简单来说分为四个步骤:
- ① 建立连接:建立与服务器的网络通信连接,为正式数据传输做准备。DNS域名解析:首先是取出URL中的域名,通过DNS域名解析获得到对应IP地址,计算机的TCP连接是基于IP地址的,域名只是给用户看的。建立TCP连接:HTTP连接是建立在TCP协议之上的,其数据传输功能是由TCP完成的。用上面获得IP地址,建立TCP连接:①请求 ➤ ②确认 ➤ ③建立连接,对,就是著名的三次握手。关于HTTP协议及连接过程可看上一篇 HTTP协议图文简述。如果是HTTPS连接,还需要多一步,进行SSL/TLS握手,建立加密通信机制。
- ② 获取数据:向服务端发送HTTP请求获取网页数据。发送HTTP请求:构造HTTP报文:请求头部header 请求包体body,然后发送HTTP请求。服务端响应:服务器监听80、443端口,当收到客户端的请求后响应处理,把HTML网页数据放在HTTP报文的包体body中,返回给客户端。
- ③ 解析渲染:客户端解析服务端返回的HTML网页内容,并进行渲染,最终呈现给用户。在解析过程中如果还有其他资源(如图片、JS、CSS),会继续构造相应的HTTP请求,重复步②、③骤获取数据、解析渲染。如果资源来自其他域名,则还需先经过步骤①建立连接。
- ④ 断开连接:完成页面的所有请求后,发起 TCP 四次挥手,断开连接。
✍️画个时序图吧!
02、URL地址的构成?
URL(Uniform Resource Locator)统一资源定位符,用来标识网络上的唯一资源的地址,就是俗称的 网址。
URL格式:scheme://domain[:port][/path/.../][file][?query][#anchor]
主要包含以下几个部分:
- 协议(schema):网络服务的类型,http、https等。
- 域名(domain):或主机名,一般域名为www.taobao.com,也可以为IP地址(60.191.55.43)。
- 端口号(port):主机的端口号,HTTP=80,HTTPS=443,默认端口号可省略。
- 网站的资源地址:属于网站内部的内容地址,包括多个部分:资源路径:网站根目录下的子目录(path) 资源名称(filename)。参数(?query):问号"?"后面的key=value&...结构的参数,用于服务器查询。锚点(#anchor):网址最后#开头的部分,网页内部定位,在浏览器端使用,服务端不会管。