当用户在浏览器中输入一个网址时,后台会经历如下过程:
- DNS解析
首先,浏览器需要将用户输入的网址转化为一个IP地址,这个过程称为DNS解析。浏览器将会向本地DNS服务器发出请求,本地DNS服务器可能会向上级DNS服务器继续发出请求,直到最终找到负责该域名的DNS服务器,并从中获取对应IP地址。如果本地DNS服务器中不存在对应域名的IP地址,将会继续向上级DNS服务器发送请求。
示例:当用户输入www.baidu.com时,浏览器将会向本地DNS服务器发送请求,如果本地DNS服务器中不存在www.baidu.com对应的IP地址,就会向上级DNS服务器发送请求。最终经过多次请求后,将会得到一个IP地址,如220.181.57.217。
- TCP连接
在得到IP地址后,浏览器需要与Web服务器建立TCP连接。这个过程称为“三次握手”,即:
- 浏览器向Web服务器发送一条带SYN标志的请求报文,表示请求连接;
- Web服务器回应带SYN/ACK标志的应答报文,表示连接请求被接受;
- 浏览器回应一条带ACK标志的请求报文,表示连接建立成功。
示例:浏览器向IP地址为220.181.57.217的Web服务器发送请求,经过三次握手后,连接建立成功。
- 发送HTTP请求
一旦TCP连接建立成功,浏览器将会向Web服务器发送HTTP请求。HTTP请求由请求头和请求体两部分组成,请求头中包含了请求类型、URL、协议版本等信息,请求体中包含了表单数据、查询参数等具体信息。
示例:浏览器向Web服务器发送一条HTTP GET请求,请求URL为http://www.baidu.com/。
- 服务器处理请求并响应
Web服务器在接收到请求后,会根据请求头中的信息进行处理。服务器可以直接从文件系统中取出文件响应,或者将请求交给一个处理程序进行处理后再响应。服务器响应一般由响应头和响应体两部分组成,响应头中包含了状态码、文档类型等信息,响应体中包含了具体的响应文本。
示例:Web服务器接收到浏览器的GET请求,查找网站目录中的对应文件,将文件内容作为HTTP response返回给浏览器。
- 渲染页面
浏览器在接收到Web服务器的响应后,会将响应文本解析为DOM树,并从中构建渲染树,之后将渲染树中的节点进行布局,并将它们渲染到浏览器窗口中。
示例:浏览器将Web服务器响应的HTML文档解析为DOM树,并对DOM树进行渲染,最终呈现出完整的网页。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:输入一个网址的时候,后台到底发生了一件件什么样的事 - Python技术站