美文网首页
从输入一个网址到浏览器显示页面经历的全过程笔记

从输入一个网址到浏览器显示页面经历的全过程笔记

作者: LuckyBuzz | 来源:发表于2020-05-07 17:30 被阅读0次

原文地址:https://www.toutiao.com/i6794820979836060163/?timestamp=1584062472&app=news_article&group_id=6794820979836060163&req_id=202003130921120100140470790493AC5A

  1. 输入网址
  2. DNS解析获取域名对应的IP地址
  3. 建立TCP连接
  4. web浏览器向web服务器发送HTTP请求
  5. 服务器的永久重定向响应
  6. web服务器做出应答
  7. 浏览器显示 HTML
  8. web服务器关闭TCP连接

1、输入网址

浏览器会在用户输入url时查找历史信息对其补全或直接显示缓存在本地的网页。

2、DNS解析获取域名对应的IP地址

用户发起请求后,浏览器会解析这个url,将其转换为ip地址。

第一步:查看hosts文件,如果hosts文件里面配置了url和ip的关系,则直接使用里面的ip地址。hosts文件存储在操作系统的如下目录中,打开后可手动配置。下图的示例中,左边是ip地址,右边是url。

Hosts

第二步:浏览器向本地DNS服务器(用网络运营商提供,如中国移动等)发送一个DNS请求。DNS (Domain Name System)是域名系统,用来将域名解析成ip地址。

DNS

第三步:本地DNS在收到请求后查询缓存,如果没有命中,还会向根DNS服务器发送请求。

第四步:根DNS服务器不直接存储解析数据,而是返回一个域服务器地址,本地DNS服务器转而向域服务器发送查询请求。

第五步:本地DNS服务器继续向域服务器(例如.com域服务器)发出请求,返回的是一个解析服务器的地址。

第六步:本地DNS服务器向域名的解析服务器发出请求,获得域名与ip的映射关系。在返回数据时,本地DNS会进行缓存。

3、建立TCP连接

浏览器会首先与服务器依照三次握手和四次挥手建立TCP连接(根据OSI七层协议,低层次的协议需要率先建立连接,只有建立了TCP连接才能使用HTTP协议)。

三次握手和四次挥手:https://www.toutiao.com/i6795125147612217867/?group_id=6795125147612217867?group_id=6795125147612217867?group_id=6795125147612217867

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

一个典型的http request header一般需要包括请求的方法,例如GET或者POST等,不常用的还有PUT和DELETE、HEAD、OPTION以及TRACE方法,一般的浏览器只能发起GET或者POST请求。

HTTP的请求信息主要包含三部分内容:

  • 请求方法URI协议/版本
  • 请求头(Request Header)
  • 请求正文(Request Body)

URI和URL的区别:https://blog.csdn.net/qq_32595453/article/details/80563142

一个完整的HTTP请求如下所示:

// 请求行:方法URL议/版本
GET/sample.jsp HTTP/1.1
// 请求头:存储浏览器语言和连接状态等信息
Accept:image/gif.image/jpeg,*/
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate

// 请求正文:以空行和请求头分隔,存储请求参数和他们对应的值
username=jinqiao&password=1234

以Chrome浏览器为例,按F12打开控制台,选择标签页中的Network,然后选择一个请求。下图展示的就是一个Http Request Header和他发送给服务器的参数。

Http Request Header Http Request Body

5、服务器的永久重定向响应

服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://www.google.com/” 而非“http://google.com/”。

重定向原因:

  • 网站调整(如改变网页目录结构);
  • 网页被移到一个新地址;
  • 网页扩展名改变(如应用需要把.php改成.Html或.shtml)。

此时如果不进行重定向的话,用户会得到一个404报错信息。之后,浏览器根据服务器返回的重定向地址继续请求网站信息。

6、web服务器做出应答

和HTTP请求一样,HTTP响应信息也主要包含三个部分:

  • 状态行
  • 响应头(Response Header)
  • 响应正文(Response Body)
// 状态行:包括协议版本、数字形式的状态代码、及相应的状态描述,以空格分隔
HTTP/1.1 200 OK
// 响应头:存储日期和内容长度等信息
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122

// 响应正文:以空行和响应头分隔,存储cookie,html,image,后端返回的请求数据等
<html>
<head>
<title>http</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>

7、浏览器显示HTML

网页是根据服务器返回的html文件显示的,显示过程中需要进行渲染。以webkit为例,渲染的过程包括:解析html以构建dom树 -> 构建render树 -> 布局render树 -> 绘制render树。

渲染完成后,浏览器会发送请求获取嵌入在HTML中的资源(如图片、音频、视频、CSS、JS等),这个过程和上面发送请求的过程是一样的。

8、web服务器关闭TCP连接

是否关闭TCP连接可以通过参数配置(connection:keep-alive)。新版本的协议也会通过默认持久连接来节省带宽。TCP连接关闭后,一次浏览器显示页面的交互就结束了。

补充:

上面的内容将整个交互中的各部分系统简单分成了浏览器和后端服务器(这个服务器会返回html和其他的业务请求信息)。然而,越来越多的系统开始采用前后端分离的架构,这时候在交互的细节上就会稍有不同。

一般来说,分离后的前端服务和后端服务是两个独立的Java应用程序。前端负责接收浏览器的请求,如果是页面加载,则直接将信息返回给浏览器;如果有业务逻辑处理要求或数据库访问要求,前端则会向后端服务器发送请求。

此时,后端服务器只会收到前端发来的请求,处理完请求后也会直接将结果返回给前端,不会和浏览器产生直接的交互。

而浏览器可以将前端和后端统一看作一个服务器,不去关心他们内部的交互和实现逻辑。现实场景中,后端服务器的架构一般会更加复杂。

相关文章

  • 从输入一个网址到浏览器显示页面经历的全过程笔记

    原文地址:https://www.toutiao.com/i6794820979836060163/?timest...

  • 从URL输入到页面展现

    学习分享(简析从浏览器输入网址到页面展现过程) 以baidu.com为例,当我们在浏览器输入网址到页面展现,整个过...

  • 一个完整的 Web 请求到底发生了什么

    一、从输入一个网址开始 当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一...

  • 从输入网址到浏览器返回内容(一),服务器处理篇

    本文基于从输入网址到浏览器呈现页面内容,中间发生了什么?整理而得。 从输入网址到浏览器返回内容 浏览器与服务器建立...

  • 从输入网址到显示页面

    先放个图,占个坑,以后详细写 PS:碰到条件菱形,默认菱形上下方向为True,左右方向为False TCP三次握手...

  • 2019-02-27

    从输入url到显示页面,都经历了什么 1、首先,在浏览器地址栏中输入url 2、浏览器先查看浏览器缓存-系统缓存-...

  • 网络协议

    网络协议 服务器输入url到返回页面的全过程(俗称天龙八步)1.根据域名,进行DNS域名解析;我们在浏览器输入网址...

  • 浏览器加载页面的过程

    从浏览器输入网址到显示网页的过程如下 浏览器根据输入的域名从 DNS 服务器得到域名的 IP 地址 向这个 IP ...

  • 如何记录加载一个页面的时间

    如何记录加载一个页面的时间 页面加载 页面加载就是从你输入网址+enter开始,发生的一系列过程,最终到页面显示。...

  • 从url到页面的流程

    当用户在浏览器网址中输入一个网址到打开这个页面浏览器所发生的行为 第一步:用户输入网址(url) 第二步:DNS进...

网友评论

      本文标题:从输入一个网址到浏览器显示页面经历的全过程笔记

      本文链接:https://www.haomeiwen.com/subject/hyoaghtx.html