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

一次完整的 HTTP 请求所经历的步骤

1: DNS 解析(通过访问的域名找出其 IP 地址,递归搜索)。

2: HTTP 请求,当输入一个请求时,建立一个 Socket 连接发起 TCP的 3 次握手。如果是 HTTPS 请求,会略微有不同。

3:

  • 客户端向服务器发送请求命令(一般是 GET 或 POST 请求)。客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定 IP 地址的 MAC 地址,然后发送 ARP 请求查找目的地址,如果得到回应后就可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了,然后发送 IP 数据包到达服务器的地址。
  • 客户端发送请求头信息和数据。

4:

  • 服务器发送应答头信息。
  • 服务器向客户端发送数据。

5: 服务器关闭 TCP 连接(4次挥手)。这里是否关闭 TCP 连接,也根据 HTTP Keep-Alive 机制有关。同时,客户端也可以主动发起关闭 TCP 连接。

6: 客户端根据返回的 HTML 、 CSS 、 JS 进行渲染。

在这里插入图片描述


http://www.kler.cn/a/274816.html

相关文章:

  • SQL序列分析法:核心技巧与实战方法论 | 从用户行为分析到工业设备监控的通用解决方案
  • Linux第105步_基于SiI9022A芯片的RGB转HDMI实验
  • 分页按钮功能
  • 强化学习笔记(5)——PPO
  • 工业相机如何获得更好的图像色彩
  • 前端版本号管理:理解和应用
  • XML语言的学习记录5- XSD
  • 智慧城市的发展趋势与挑战:未来展望
  • python 笔记:locals
  • Android Studio实现内容丰富的安卓外卖平台
  • C# ---Extension Method
  • 当人工智能遇上“理解偏差”:一场关于天气的宇宙之旅
  • 【Python 48小时速成 3】输入与输出
  • Yarn 管理的前端项目转换为使用 npm
  • docker入门(五)—— 小练习,docker安装nginx、elasticsearch
  • python大学生健身爱好者交流网站flask-django-nodejs-php
  • 1035. 不相交的线
  • python基础18_作用域与名称空间
  • windows 多网卡情况dns解析超时问题的排查
  • 2024.3.9|第十五届蓝桥杯模拟赛(第三期)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(访问说明符)
  • mysql之基本概念与安装
  • Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • android、Jetpack Compose使用 Room数据库kapt注解时出现的相关问题整理。
  • 用C语言打造自己的Unix风格ls命令
  • 五、C#归并排序算法