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

一次完整的 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.lryc.cn/news/321550.html

相关文章:

  • OpenGL学习笔记【1】——简介
  • C语言课后作业 20 题+考研上机应用题
  • macOS上基于httpd-dav搭建WebDav服务
  • Java-设计模式-单例模式
  • 图片html5提供的懒加载与vue-lazyload的区别
  • golang 根据某个特定字段对结构体的顺序进行排序
  • React Router 参数使用详解
  • Vue中$set用法解析
  • 进制,码制及其表示范围
  • 钡铼技术R40工业4G路由器加速推进农田水利设施智能化
  • 基于龙芯2k1000 mips架构ddr调试心得(一)
  • 智能合约语言(eDSL)—— 使用rust实现eDSL的原理
  • 敏捷开发——elementUI/Vue使用/服务器部署
  • uniapp 使用sqlite时无法读取到db文件中的数据
  • Linux 网络接口管理
  • 【设计模式】Java 设计模式之模板策略模式(Strategy)
  • SpringBoot项目前端Vue访问后端(图片静态资源) 配置
  • colab中数据集保存到drive与取出的方法
  • React 应该如何学习?
  • 跨平台无缝操作:ShareMouse让多电脑协同更高效
  • Vue使用pandoc-wasm进行各格式转换
  • springboot284基于HTML5的问卷调查系统的设计与实现
  • AI短视频制作一本通:文本生成视频、图片生成视频、视频生成视频
  • 详谈分布式事务
  • Java基础知识八股
  • 【Linux】网络基础一
  • Redis-2 Redis基础数据类型与基本使用
  • python提取身份证中的生日和性别
  • opencv 傅里叶变换(低通滤波 + 高通滤波)
  • Educational Codeforces Round 163 (Rated for Div. 2)(A,B,C,D,E)