当前位置: 首页 > news >正文

一个网址,详细请求流程

在浏览器中访问一个网址的请求流程大致可以分为以下几个步骤。这个过程包括从用户输入网址到服务器返回网页内容的整个过程。以下是详细的请求流程:

1. 用户输入网址

  • 用户在浏览器地址栏中输入一个网址(URL),例如 https://www.example.com
  • 浏览器会先检查这个网址的协议部分(如 http 或 https)来决定使用哪种方式发送请求。

2. DNS 解析(Domain Name System)

  • 浏览器需要将域名(如 www.example.com)转换成计算机可以理解的 IP 地址。这一过程通过 DNS 解析完成。
  • 浏览器会首先检查本地缓存中是否已经存储了该域名的 IP 地址。如果缓存中没有,浏览器会向 DNS 服务器发送请求来获取该域名的 IP 地址。

3. 建立 TCP 连接(Transmission Control Protocol)

  • 一旦 DNS 解析得到目标服务器的 IP 地址,浏览器就通过 TCP 协议与目标服务器建立连接。
  • 连接建立时会进行 三次握手(Three-Way Handshake):
    • 客户端发送 SYN 请求:浏览器(客户端)发送一个同步请求,表示希望与服务器建立连接。
    • 服务器响应 SYN-ACK:目标服务器收到请求后,返回一个同步确认消息。
    • 客户端发送 ACK:浏览器确认连接建立,返回一个确认消息。此时,TCP 连接建立完成。

4. 发送 HTTP 请求

  • 一旦 TCP 连接建立,浏览器通过 HTTP 或 HTTPS 协议向目标服务器发送一个请求。常见的 HTTP 请求方法有 GETPOSTPUTDELETE 等,最常见的是 GET 请求,用于获取网页内容。
  • 请求头会包括许多信息,如:
    • 请求方法GET 或 POST 等。
    • URL:请求的网址路径部分,如 /path/to/resource
    • Host:域名或 IP 地址。
    • User-Agent:浏览器标识。
    • Cookie:包含从该网站先前访问时存储的 cookie 信息。
    • AcceptAccept-EncodingConnection 等:其他请求头部信息。

示例请求:

 

GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: text/html

5. 服务器处理请求

  • 服务器收到 HTTP 请求后,处理请求并根据请求的信息(如路径、请求方法、请求参数等)进行相应的操作。例如,查找请求的网页文件,或者查询数据库以获取动态数据。
  • 服务器会生成一个 HTTP 响应,并将其返回给浏览器,响应通常包含:
    • 状态码:如 200 OK404 Not Found 等。
    • 响应头:包含关于响应的额外信息,如内容类型(Content-Type)、内容长度(Content-Length)、缓存控制(Cache-Control)等。
    • 响应体:请求的网页内容(HTML、CSS、JavaScript 文件等)或数据。

示例响应:

 

HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Cache-Control: no-cache <html> <body> <h1>Welcome to Example.com</h1> </body> </html>

6. 浏览器渲染页面

  • 浏览器收到响应后,开始解析返回的 HTML 内容。
  • 如果 HTML 中包含其他资源(如 CSS、JavaScript 文件、图片等),浏览器会继续发送请求来获取这些资源。
  • 浏览器按照 HTML 的结构和 CSS 样式对页面进行渲染,呈现给用户。
  • 同时,如果页面中包含 JavaScript 代码,浏览器会执行这些代码,可能会修改页面内容或进行异步请求(如通过 AJAX)。

7. 关闭 TCP 连接(可选)

  • 当页面加载完成后,浏览器与服务器之间的连接会在一定时间后关闭(如果是非持久连接)。
  • 如果使用了持久连接(例如 HTTP/1.1 默认开启了持久连接),浏览器可以重用现有的 TCP 连接来请求其他资源,而不需要重新建立新的连接。

关闭连接时会使用 四次挥手(Four-Way Handshake):

  • 客户端发送 FIN 请求:表示客户端不再发送数据。
  • 服务器响应 ACK:确认收到客户端的关闭请求。
  • 服务器发送 FIN 请求:表示服务器也完成了数据发送。
  • 客户端响应 ACK:客户端确认收到服务器的关闭请求。此时连接关闭。

8. 浏览器缓存(可选)

  • 根据服务器返回的 缓存头(Cache-Control) 和 ETag 等信息,浏览器可能会将部分内容缓存到本地,以便下次访问时可以直接使用缓存内容,而不需要重新向服务器发送请求。
  • 这有助于加速页面加载和减少服务器负载。

流程总结:

  1. 用户输入网址 → 2. DNS 解析 → 3. 建立 TCP 连接 → 4. 发送 HTTP 请求 → 5. 服务器处理并返回 HTTP 响应 → 6. 浏览器渲染页面 → 7. 关闭 TCP 连接 → 8. 浏览器缓存。

这个流程可以根据不同情况有所变化,例如使用 HTTPS 时会先进行 SSL/TLS 握手,或者网站需要动态内容时可能会涉及数据库查询等操作。

相关文章:

  • leetcode150-逆波兰表达式求值
  • web入侵实战分析-常见web攻击类应急处置实验1
  • LeetCode:两两交换链表中的节点
  • 鸿蒙应用中使用本地存储实现数据共享
  • 教学资料档案管理系统
  • 跟着AI学vue第五章
  • 深度学习之自然语言处理CBOW预测及模型的保存
  • 字符串函数和结构题内存对齐
  • AURIX™ TC4x GETH对时间敏感网络的支持介绍
  • 使用 Jetty 构建 HTTPS 服务入门指南
  • 洛谷 P1140 相似基因
  • 人工智能技术-基于长短期记忆(LSTM)网络在交通流量预测中的应用
  • 从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)
  • 【Rust中级教程】1.13. 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、`repr`属性
  • 什么是tomcat
  • 【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~
  • 50页精品PPT | 某大数据资产平台建设项目启动会材料
  • “三次握手”与“四次挥手”:TCP传输控制协议连接过程
  • C++核心指导原则: 接口部分
  • 【第一节】C++设计模式(创建型模式)-工厂模式
  • 英国和美国就关税贸易协议条款达成一致
  • 水利部:山西、陕西等地旱情将持续
  • 《2025城市青年旅行消费报告》发布,解码青年出行特征
  • 抗战回望21︱《“良民”日记》:一个“良民”在沦陷区的见闻与感受
  • 戴维·珀杜宣誓就任美国驻华大使
  • A股三大股指收涨:军工股掀涨停潮,两市成交近1.5万亿元