当我们在地址栏输入一个地址的时候发生了什么?

505 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

我在浏览器地址栏输入一个地址,会发生什么呢?

1.浏览器输入地址返回数据

当我们在地址栏输入一个网址,按下回车键的时候,会弹出一个页面,比如我们输入www.baidu.com,按下回车,

会弹出如下页面,那么浏览器是如何弹出这个页面的呢?

image-20221124214552491.png

我们想一下,在日常的开发当中,我们需要获取某些数据是不是得向某个接口或者数据库连接发送一个请求,等待对方返回给出相应的响应。

04_请求响应 (1).png

所以呢,我们在向浏览器输入地址按下回车,其实也是在向某处发送请求,获取数据,然后返回到浏览器进行显示。

那么我们输入的www.baidu.com就相当于是一个地址,我们从这个地址获取数据。

2. 网络的连接

但是输入网址之后是如何寻找到数据所在的位置的呢?这就要引出DNS服务器了,它可以将我们输入的IP地址转换成具体的ip地址,当我们在浏览器输入网址后会现在本地DNS缓存的IP跟网址对应的缓存时候存在,如果不存在会向根域名服务器获取。

解析完成后我们就可以根据IP地址找到对应的服务器地址了,与其进行建立连接进行交互,交互的前提是双方都听的懂对方说的话,如果你说汉语,我说鸟语,那双方是没办法进行交互的,所以呢,这个时候双方的语言必须一致,也就是说要达成一致的交流语言,在计算机这里呢,叫做通信协议,目前为止,应用最广泛的通信协议是HTTP通信协议。

在我们用通信协议进行通信的过程中,双方需要确认是否能通信,这个确认过程一般叫TCP握手过程,那么是如何进行握手的呢?一般是三步。

  • 客户端先向服务器发送一个是否可以连接的请求
  • 然后服务器进行响应是否可以进行链接
  • 然后客户端跟服务器响应我接收到了可以进行连接的响应,进行连接
image-20221124223404326.png

3.数据的传输

现在连接已经建立,那就要进行双方的数据通信,比如我们之前已经输入了百度的地址,现在我们要访问百度网站的内容,这个时候百度那边的服务器会接受到请求,进行请求的处理,当正确响应数据时候,会返回200的OK状态,如果请求处理处理成功,但没有可以返回的资源时候,会返回204的状态,如果服务端无法找到请求的资源那么会返回404的状态,当然状态码还有很多,此处不一一列举。

image-20221124225108582.png

4.浏览器渲染数据

当浏览器收到这些响应数据之后会对这些响应数据进行渲染

5.关闭连接

当数据通信完之后,客户端要跟服务端说拜拜,断开连接,这个连接断开也不是随随便便就断开的,这也要有一个断开的过程,我们把这个过程叫做tcp四次挥手。

  • 客户端首先向服务器发送一个断开连接的请求
  • 服务端返回一个确认收到断开请求的响应
  • 服务器向客户端发送一个断开连接的请求
  • 浏览器向服务端发送一个确认收到断开连接的请求,断开连接
image-20221124225250547.png