【面试】常问考点:如果我要访问一个网址,那么在网络中会有哪些过程?

        当你要访问一个网址时,在网络中会经历一系列复杂而有序的过程。这些过程主要涉及DNS解析、TCP连接的建立、HTTP请求的发起与响应、浏览器渲染,以及TCP连接的关闭等。        

一  DNS解析

        DNS(Domain Name System)解析是访问网址的第一步。当用户在浏览器中输入一个网址(如www.baidu.com)时,计算机需要将这个域名转换为IP地址才能找到目标服务器。这个转换的过程就是DNS解析。

        具体过程:

  1. 浏览器首先会检查本地缓存(如浏览器缓存、系统缓存)中是否有该域名的IP地址记录。
  2. 如果没有找到,浏览器会向本地DNS服务器发起查询请求。
  3. 本地DNS服务器会在其缓存中查找,如果仍未找到,则会向根域名服务器发起查询,逐级向下查找,直到找到目标域名对应的IP地址。
  4. 本地DNS服务器将查询到的IP地址返回给浏览器。

二 建立TCP连接

        TCP(Transmission Control Protocol)是一种可靠的传输协议,通过三次握手建立连接,确保数据的可靠传输。

        具体过程:

  1. 第一次握手:客户端(如浏览器)发送一个SYN(同步序列编号)包到服务器,并进入SYN_SENT状态,等待服务器确认。
  2. 第二次握手:服务器收到SYN包后,会发送一个SYN+ACK(同步序列编号+确认)包给客户端,同时自己也进入SYN_RCVD状态。
  3. 第三次握手:客户端收到服务器的SYN+ACK包后,会发送一个ACK(确认)包给服务器,此包发送完毕,客户端和服务器均进入ESTABLISHED(连接已建立)状态,完成三次握手。

三 发起HTTP请求

        一旦TCP连接建立,浏览器就会通过HTTP(HyperText Transfer Protocol)协议向服务器发送请求。

        请求内容:

  1. 请求行包含了请求方法(如GET、POST)、URL和HTTP协议版本;
  2. 请求头部由关键字/值对组成,通知服务器有关客户端请求的信息;
  3. 空行用于分隔请求头部和请求包体;
  4. 请求包体(对于GET请求通常为空)包含要提交的数据。

四 服务器处理请求

        服务器接收到客户端的HTTP请求后,会根据请求的内容进行相应的处理。这可能包括查询数据库、执行服务器端代码、读取文件等。服务器的处理过程取决于请求的性质和服务器端的配置。

五 服务器响应

        服务器处理完请求后,会将结果封装在HTTP响应报文中,并发送回浏览器。HTTP响应报文包含状态行、响应头部、空行和响应包体四个部分。状态行由协议版本、状态码及其描述组成;响应头部用于描述服务器的基本信息和数据的描述;响应包体包含实际的数据,如HTML内容、图片数据等。

六 浏览器渲染

        浏览器接收到服务器的响应后,会开始解析HTML文档,并应用CSS样式、执行JavaScript代码等,最终将页面渲染出来呈现给用户。

七 关闭TCP连接

        在数据传输完毕后,浏览器和服务器会进行TCP连接的关闭。这个过程通常涉及四次挥手,以确保双方都能正确地释放资源。

        具体过程:

  1. 客户端发送一个FIN(结束)包给服务器,并进入FIN_WAIT_1状态。
  2. 服务器收到FIN包后,发送一个ACK包给客户端,并进入CLOSE_WAIT状态。
  3. 服务器也发送一个FIN包给客户端,并进入LAST_ACK状态。
  4. 客户端收到服务器的FIN包后,发送一个ACK包给服务器,并进入TIME_WAIT状态。等待一段时间后(通常是2MSL,即两倍的最大报文段寿命),客户端进入CLOSED状态,TCP连接关闭完成。

 

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值