用户用浏览器访问一个网站的时候背后的过程与步骤是怎样的?
1. 用户访问网站的流程
用户访问网站的流程 用户在浏览器中输入 www.taobao.com 到显示页面的过程
1.1 访问流程
利用DNS协议进行域名解析 --> 建立tcp协议三次握手过程 --> 客户端发出访问网站相应页面请求(发出http协议请求报文) --> 服务端发出相应访问页面的请求信息(发出http) --> 断开tcp协议四次挥手过程
1.2 利用DNS协议进行域名解析
DNS称为域名系统,主要作用是负责把域名解析对应的IP地址。就是把www.baidu.com 解析为对应的IP地址 111.13.101.208,有了IP地址就相当于知道百度服务器在哪了,接下来就是去找它。
DNS体系中,查找记录,分为两种查找方式:递归查询和迭代查询。
1、 递归查询:由DNS客户端发起,一级一级的向上提交查询申请,直至查询终止
2、 迭代查询:一般情况下由DNS服务器之间完成,即本地DNS向上一级DNS提交查询,上级DNS并不直接返回查询结果,而是告知DNS应该向哪里去查找。
在真正的DNS查询过程中,是包含递归查询和迭代查询的。无论任何方式的查找过程,在每个环节,都会先查找缓存。DNS服务器如果没有了缓存就失去了意义。。。
请记住查询顺序:
HOSTS表--> 本地DNS -->上层DNS(包括根DNS)
1.3 建立tcp协议三次握手过程
好了经过DNS解析,现在我们已经知道了百度服务器的地址(111.13.101.208),可以访问它了。
约会也得先发个邀请吧,网络也一样。先建立连接,才可以传输数据呢。接下来看看怎么和百度服务器约会吧。
1.3.1 简单说明TCP协议
IP 协议定义了一套自己的地址规则,称为 IP 地址。它实现了路由功能,允许某个局域网的 A 主机,向另一个局域网的 B 主机发送消息。
IP 协议只是一个地址协议,并不保证数据包的完整。如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包。这就要依靠 TCP 协议。
简单说,TCP 协议的作用是,保证数据通信的完整性和可靠性,防止丢包。
TCP三次握手建立过程简单说明:
01.由客户端(用户)发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的。
并且还将报文中SYN字段置为1,表示需要建立TCP连接请求。
02。服务端(就是百度服务器)会回复客户端(用户)发送的TCP连接请求报文,其中包含seq序列号,也是由回复端随机生成的,
并且将回复报文的SYN字段置1,而且会产生ACK验证字段,ACK验证字段数值是在客户端发过来的seq序列号基础上加1进行回复:
并且还会回复ack确认控制字段,以便客户端收到信息时,知晓自己的TCP建立请求已得到了确认。
03.客户端收到服务端发送的TCP建立请求后,会使自己的原有序列号加1进行再次发送序列号,
并且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复;同时也会回复ack确认控制字段,
以便B收到信息时,知晓自己的TCP建立请求已经得到了确认。
1.4 客户端发出访问网站相应页面请求(发出http协议请求报文)
建立连接后,发送请求报文,想看什么数据。 输入www.baidu.com时,默认请求的是index.html首页文件
1.4.1 请求报文结构:
1. 请求行:
①. 请求的方法(get post)
②. 请求的数据信息(默认请求index.html首页文件)
③. 请求http协议版本
tcp协议分为长连接(http1.1)和短连接(http1.0)
2.请求头:
3.空行:
4.请求主体:get方法没有请求主体内容 post方法会有请求主体信息
1.5 服务端发出相应访问页面的请求信息(发出http响应报文)
1.起始行(响应行)
①. HTTP协议版本信息
②. 响应的状态码信息(请求成功状态码 200)
③. 响应状态码说明信息
2.响应头部:
3.空行:
4.响应主体内容:一般为html css js 等等代码信息
1.6 断开tcp协议四次挥手过程
当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。
- 第一次挥手:
Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 - 第二次挥手:
Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 - 第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 - 第四次挥手:
Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构