图解HTTP有感

目录

1、网络请求流程

2、HTTP报文结构

2.1、请求报文首部和响应报文首部

2.2、HTTP的首部字段有以下几种类型

3、HTTP的请求方式

4、响应状态码

5、HTTP安全

6、HTTP对用户身份的认证

7、全双工通信Websocket

7.1、什么是Websocket?

7.2、Websocket的主要特点:


1、网络请求流程

客户端发送请求经四层架构(每经过一层都会在请求首部添加首部字段)到达服务器,在服务器获得结果后,在经过四层架构(每经过一层就对响应的首部字段进行去除)响应给客户端

2、HTTP报文结构

2.1、请求报文首部和响应报文首部

只能由客户端发送请求报文,请求到服务端进行返回响应报文

请求报文通常由:请求方式+URL+协议版本+请求首部字段

响应报文通常为:协议版本+响应码+描述短语+响应首部字段

2.2、HTTP的首部字段有以下几种类型

通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。

请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

非HTTP首部协议字段
还有Cookie、Set-Cookie和Content-Disposition等在其他RFC中定义的首部字段,它们的使用频率也很高

Cookie技术 

Http是不保存状态的协议,为了即使他跳转到该站的其他页面后,也需要能继续保持登录状态

引入了Cookie技术来管理状态,可以管理用户

3、HTTP的请求方式

GET :获取资源

GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果是像CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行后的输出结果。

POST :传输实体主体

POST方法用来传输实体的主体。

虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。虽说POST的功能与GET很相似,但POST的主要目的并不是获取响应的主体内容。

PUT:传输文件

PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。

但是,鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制,或架构设计采用REST(Representational State Transfer,表征状态转移)标准的同类Web网站,就可能会开放使用PUT方法。

DELETE:删除文件

DELETE方法用来删除文件,是与PUT相反的方法。

DELETE方法按请求URI删除指定的资源。但是,HTTP/1.1的DELETE方法本身和PUT方法一样不带验证机制,所以一般的Web网站也不使用DELETE方法。当配合Web应用程序的验证机制,或遵守REST标准时还是有可能会开放使用的。

4、响应状态码

  • 200 OK:请求成功,服务器返回了请求的资源。
  • 301 Moved Permanently:请求的资源已永久移动到新URL。
  • 302 Found:请求的资源临时移动到另一个URL。
  • 304 Not Modified:资源未修改,可以使用缓存版本。
  • 400 Bad Request:请求有语法错误或请求参数不正确。
  • 401 Unauthorized:请求需要认证,或者提供的认证信息无效。
  • 403 Forbidden:服务器理解请求但拒绝执行。
  • 404 Not Found:服务器找不到请求的资源。
  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 502 Bad Gateway:服务器作为网关或代理,收到无效响应。
  • 503 Service Unavailable:服务器暂时不可用或正在维护。
  • 504 Gateway Timeout:服务器作为网关或代理,但未及时从上游服务器接收响应

5、HTTP安全

HTTPS(=HTTP+加密+认证+完整性保护)

(1)HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替了而已。

通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再有SSL和TCP通信。

所以HTTPS就是身披SSL协议这层外壳的HTTP。

(2)HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制

在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式

HTTPS的安全机制可以说是由响应速度来换的,HTTPS要比HTTP慢2--100倍因为SSL通信部分消耗网络资源,SSL通信部分,要对通信进行处理,要消耗一定的时间

6、HTTP对用户身份的认证

使用Cookie来管理Session

当客户端发送请求到服务器,服务器会在响应报文头部新增一个set-Cookie字段,客户端接收到响应报文后就将Cookie添加到请求报文头部,后续的请求到服务器时,服务器会与自己存储的Cookie做比较,来分析是哪个客户。

7、全双工通信Websocket

7.1、什么是Websocket?

HTTP是单双工通信,是在数据传输时只能有一方传输,另一方进行等待,

服务器不能主动的发送数据,只能是客户端发送请求了,服务器根据请求响应对应的数据

所以这是一个致命的问题,要解决这个问题就要引入Websocket由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文

7.2、Websocket的主要特点:

  1. 全双工通信:WebSocket允许服务器和客户端之间进行双向通信,即服务器可以随时向客户端发送消息,客户端也可以随时向服务器发送消息。

  2. 持久连接:与HTTP请求不同,WebSocket创建后会保持连接打开状态,直到客户端或服务器端明确关闭连接。

  3. 低延迟:由于连接是持久的,WebSocket减少了连接和断开连接的开销,从而降低了通信延迟。

  4. 较少的开销:与HTTP请求相比,WebSocket的数据传输不需要HTTP头部信息,因此数据传输的开销较小。

  5. 适用于实时应用:由于WebSocket的低延迟和实时性,它非常适合需要实时通信的应用,如在线游戏、实时聊天应用和股票交易平台

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3249158.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统及常用指令

目录 1、什么是Linux系统 2、为什么要用Linux系统 3、Linux系统的种类 4、如何安装Linux系统 5、常见的适配器种类 6、学习第一个Linux指令 7、安装ssh客户端软件 8、Linux系统的目录结构 9、Linux的常用命令 9.1 目录切换命令 9.2 查看目录下的内容 9.3 查看当前…

开源防病毒工具--ClamAV

产品文档:简介 - ClamAV 文档 开源地址:Cisco-Talos/clamav:ClamAV - 文档在这里:https://docs.clamav.net (github.com) 一、引言 ClamAV(Clam AntiVirus)是一个开源的防病毒工具,广泛应用…

MAVSKD-Java开源库mavsdk_server库macOS平台编译

1.下载源码 2.使用IDEA打开,进行mavsdk_server目录,使用gradle进行编译 3.开始编译时会自动下载依赖 4.下载完成后,会自动编译 5.编译成功 6.成功生成AAR文件

Linux TFTP服务搭建及使用

1、TFTP 服务器介绍 TFTP ( Trivial File Transfer Protocol )即简单文件传输协议是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为 69 2、TFTP 文件传输的特点 tftp…

vivado FFT IP Core

文章目录 前言FFT IP 接口介绍接口简介tdata 格式说明 其他细节关于计算精度及缩放系数计算溢出架构选择数据顺序实时/非实时模式数据输入输出时序关于配置信息的应用时间节点 FFT IP 例化介绍控制代码实现 & 测试参考文献 前言 由于计算资源受限,准备将上位机 …

机器学习第四十八周周报 IAGNN

文章目录 week48 IAGNN摘要Abstract0. 前言1. 题目2. Abstract3. 网络结构3.1 问题定义3.2 IAGNN 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.4 实验结果 5. 结论6.代码复现小结参考文献 week48 IAGNN 摘要 本周阅读了题为Interaction-Aware Graph Neural Networks…

<Qt> 信号和槽

目录 一、信号和槽概述 二、信号和槽的使用​​​​​​ (一)connect函数 (二)实现一个点击按钮关闭窗口的功能 (三)再谈connect 三、自定义槽函数 四、自定义信号 五、带参数的信号和槽 六、信号…

【从零开始实现stm32无刷电机FOC】【实践】【6/7 CMSIS-DSP】

目录 导入CMSIS-DSP库使用CMSIS-DSP 点击查看本文开源的完整FOC工程 CMSIS-DSP库是ARM开源的、对ARM处理器优化的数学库,本文使用了其提供的三角函数、反park变换函数、park变换函数、clarke变换函数、PID控制器。 CMSIS-DSP原始代码仓库是https://github.com/ARM-s…

双领域TOP10优秀安全企业!通付盾入选《嘶吼2024网络安全产业图谱》六大分类14项细分领域

7月16日,嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》(以下简称“图谱”),通过市场调研、数据精析、文献研究及政策参考等多方面的综合分析,全面展示网络安全产业的构成及其重要组成部分,探索网…

MongoDB教程(九):java集成mongoDB

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、环境准…

网安小贴士(19)入侵检测技术原理与应用

前言 入侵检测技术(Intrusion Detection System, 简称IDS)是一种用于监测和防止计算机网络中的恶意活动的安全系统。它通过收集系统状态信息、特征提取、建立模型、入侵检测以及反馈更新等步骤,及时检测网络和系统中可能遭受攻击的迹象并发出…

python安装talib库教程

【talib介绍】 Talib介绍 Talib,全称“Technical Analysis Library”,即技术分析库,是一个广泛应用于金融量化领域的Python库。该库由C语言编写,支持Python调用,为投资者、交易员和数据分析师提供了强大的技术分析工…

借力Jersey,铸就卓越RESTful API体验

目录 maven 创建 jersey 项目 运行 支持返回 json 数据对象 1. 引言 在当今数字化时代,API(应用程序编程接口)已成为连接不同软件系统和服务的桥梁。RESTful API以其简洁、轻量级和易于理解的特点,成为了API设计的首选标准。本…

达梦数据库的系统视图v$arch_file

达梦数据库的系统视图v$arch_file 在达梦数据库中,V$ARCH_FILE 是一个动态性能视图,用于显示当前数据库的归档日志文件信息。这个视图可以帮助数据库管理员监控和管理归档日志文件,确保数据库的备份和恢复过程顺利进行。 查询本地归档日志信…

golang 基础 泛型编程

(一) 示例1 package _caseimport "fmt"// 定义用户类型的结构体 type user struct {ID int64Name stringAge uint8 }// 定义地址类型的结构体 type address struct {ID intProvince stringCity string }// 集合转列表函数&#…

springboot框架的事务功能

事务回顾 概念 事务是一组操作集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败。 操作 开启事务~(一组操作开始前,开启事务):start transaction / begin; 提交事务~&am…

【python基础】基本数据类型

文章目录 一. Python基本数据类型1. 整数1.1. python的四种进制1.2. 数中的下划线 2. 浮点数3. 复数4. 布尔型5. 运算符5.1. 算术运算符5.2. 比较运算符5.3. 逻辑运算符5.4 运算符优先级 6. 常量 二. 注释三. Python之禅 一. Python基本数据类型 1. 整数 无长度限制&#xff1…

【HTML入门】第十四课 - form表单(下)表单控件们(一)

上一节,我们学习了基本的 form 标签的属性们,我们说过,form表单是一个区域,里面有一些控件元素,这一小节,我们来看一下这些控件们。 目录 1 文本输入框 2 密码输入框 3 数值型输入框 4 文本域输入框 1…

如何为游戏本地化选择语言

为游戏本地化选择合适的语言是一个至关重要的决定,它会极大地影响您的游戏在国际市场上的成功。适当本地化的游戏可以接触到更广泛的受众,提高玩家满意度,并促进销售。以下是在决定将游戏本地化为哪种语言时需要考虑的一些关键因素&#xff1…

Java(二十一)---栈的使用和模拟实现

文章目录 前言1.什么是栈(Stack)?2. 栈的模拟实现3.stack的使用![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/80c82d22f3ee49cfaa2915d1c961573e.png)4.关于栈的oj题4.1.有效的括号4.2.逆波兰表达式4.3.栈的压入、弹出序列4.4.最小栈 前言 前面几篇我们学习了顺序…