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

第一章 HTTP

目录

一、HTTP简介

1.1. 概述

1.2. HTTP与TCP的区别

 二、HTTP迭代版本

三、HTTP请求头

四、HTTP响应

五、请求头中的请求方式


一、HTTP简介

1.1. 概述

        超文本传输协议(Hypertext Transfer Protocol,HTTP),用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源。其位于TCP/IP模型的应用层,依赖于TCP提供的可靠数据传输服务。是一个无状态的简单的请求-响应协议,每次请求和响应后不保留任何状态。HTTP定义了数据的格式,如客户端请求和服务端响应头、URL结构、编码格式等。

1.2. HTTP与TCP的区别

HTTP

TCP

定义

以TCP为基础,用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源

负责在网络上可靠地传输数据。

TCP/IP模型层次

应用层,定义Web通信的规则

传输层,提供底层的数据传输服务

连接方式

无状态的连接,每次请求和响应之后不保留任何状态。

有状态的长连接,面向连接的协议,通过三次握手建立连接

数据传输方式

定义了数据的格式,如请求和响应头、URL结构和编码方式等

提供字节流服务,保证数据传输的顺序和可靠型

应用场景

用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源

支持各种不同的应用,包括但不限于Web通信

备注

Http协议是建立在TCP协议基础之上的。当浏览器需要从服务器 获取网页数据的时候,会发出一次http请求。Http通过TCP建立起一个到服务器的通道。 当一个网页完成之后,客户端和服务器端之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个页面时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件中设定这个时间

 二、HTTP迭代版本

  • HTTP 0.9

  • 简单请求方法,仅限于文字传输的无序协议

  • HTTP 1.0

  • 支持0.9版本的简单请求方法和包含客户端HTTP版本的完整GET请求。面向事务的应用层协议,广泛应用于Web浏览器和服务器。

  • HTTP 1.1

  • 双方规定了连接方式和连接类型,但并没有过多考虑到通信连接的速率和效率。

  • HTTP 2.0

  • HTTP2.0的前身是HTTP1.0和HTTP1.1。虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范十分庞大。网络协议新版本并不会马上取代旧版本。实际上,HTTP 1.0和HTTP1.1在之后很长的一段时间内一直并存,这是由于网络基础设施更新缓慢所决定的。

  • HTTP 3.0

  • 与之前依赖于成熟的TCP的版本不同,HTTP3.0使用QUIC,一种基于UDP的多路传输协议。HTTP3.0具有更低的延迟和更快的加载速度。

  • 三、HTTP请求头

客户端——>请求——>服务端

HTTP协议的一部分,用于在客户端和服务端之间传递附加信息(包含了请求、客户端环境或请求的上下文等信息)

accept: application/json, text/javascript, */*; q=0.01 浏览器可接受的MIME类型

accept-encoding: gzip, deflate, br, zstd 浏览器能够进行解码的数据编码方式

accept-language: zh-CN,zh;q=0.9 浏览器希望的语言类型

cookie: PHPSESSID=bdq4ccqp17svf9dp87onjaov2n; 最重要的请求头之一

Request URL: https://blog.51cto.com/blog/user-stat?id=5342541 请求的资源地址

Request Method: GET 请求方法

Status Code: 200 OK 服务端响应请求的状态

Remote Address: 183.131.117.207:443 请求的服务IP地址

Referrer Policy: no-referrer-when-downgrade

四、HTTP响应

服务端——响应——客户端

指定了客户端请求服务端获得什么样的响应

cache-control: must-revalidate, no-cache, no-store 缓存控制

content-encoding: gzip 响应内容编码格式

content-type: application/json; charset=UTF-8 响应内容类型

date: Fri, 06 Sep 2024 05:45:38 GMT 响应时间

eo-cache-status: MISS

eo-log-uuid: 17962474739074623387

expires: Thu, 19 Nov 1981 08:52:00 GMT

load-balancing: blog

origin-agent-cluster: ?0

五、请求头中的请求方式

GET:请求指定的资源,多次执行相同的GET请求应该确保幂等/产生相同的结果。

POST:向指定的资源提交数据,以便根据所提供的数据创建/更新资源。POST请求不是幂等的,每次执行相同的POST请求可能会产生不同的结果。

PUT:此方法用于完整地更新指定的资源。由于PUT请求是幂等的,多次执行相同的PUT请求应该产生相同的结果。

DELETE:此方法用于删除指定的资源。

HEAD:此方法与GET方法类似,只是服务器在响应中只返回HTTP头部,而不返回实际的数据。这用于检查资源的元数据。

OPTIONS:此方法用于获取指定的资源所支持的通信选项。这可以用于CORS(跨源资源共享)检查。

PATCH:此方法用于对资源进行部分更新。

六、响应状态码

  1. 信息响应(100-199)
  2. 成功响应(200-299)
  3. 重定向(300-399)
  4. 客户端错误(400-499)
  5. 服务器错误(500-599)

状态码

信息

具体描述

200

OK

请求已成功,并且返回了请求的资源。

204

No Content

请求已成功处理,但没有内容返回。

206

Partial Content

服务器已经完成了部分GET请求。

301

Moved Permanently

请求的资源已被永久移动到新的URL。

302

Found

请求的资源临时移动到新的URL。

304

Not Modified

自上次请求后,请求的资源未修改过。

400

Bad Request

服务器无法处理请求,因为客户端的请求语法错误。

401

Unauthorized

请求需要用户验证。

403

Forbidden

服务器拒绝请求。

404

Not Found

服务器无法找到请求的资源。

500

Internal Server Error

服务器遇到了意料之外的情况,导致它无法完成请求。

503

Service Unavailable

服务器暂时无法处理请求,可能是因为过载或维护。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • frp内网穿透部署
  • MATLAB软件开发通用控制的软件架构参考
  • 【第十四章:Sentosa_DSML社区版-机器学习之时间序列】
  • 【Docker安装RabbitMQ】
  • Python中的数据可视化:从基础图表到高级可视化
  • 什么是绩效改进计划?
  • python request库的使用
  • 《C++编程魔法:构建绿色主题的奇幻游戏世界》
  • T检验:一种通俗易懂的统计分析方法
  • 渗透测试类 面试题
  • 在spring boot项目中使用jaxb实现Java Bean与XML互转
  • Note_XML学习笔记
  • 【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
  • C++学习笔记(41)
  • 计算机毕业设计hadoop+hive航班预测系统 飞机票航班数据分析可视化大屏 机票预测 机票爬虫 飞机票推荐系统 大数据毕业设计
  • 自己简单写的 事件订阅机制
  • [译] React v16.8: 含有Hooks的版本
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascript设计模式学习之Observer(观察者)模式
  • js中forEach回调同异步问题
  • mysql_config not found
  • PhantomJS 安装
  • python_bomb----数据类型总结
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Shadow DOM 内部构造及如何构建独立组件
  • vue2.0项目引入element-ui
  • webgl (原生)基础入门指南【一】
  • Webpack 4 学习01(基础配置)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 开发基于以太坊智能合约的DApp
  • 聊聊flink的TableFactory
  • 前端临床手札——文件上传
  • 如何进阶一名有竞争力的程序员?
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 数据科学 第 3 章 11 字符串处理
  • 通过git安装npm私有模块
  • 新版博客前端前瞻
  • 转载:[译] 内容加速黑科技趣谈
  • 1.Ext JS 建立web开发工程
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ‌移动管家手机智能控制汽车系统
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #微信小程序:微信小程序常见的配置传值
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (2)STM32单片机上位机
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (分享)自己整理的一些简单awk实用语句
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)js前端开发中设计模式之工厂方法模式
  • **CI中自动类加载的用法总结
  • .describe() python_Python-Win32com-Excel
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现