http协议和websocket协议

news2025/1/20 5:48:45

http协议

HTTP 即超文本传输协议,是一种获取网络资源 (例如图像、HTML 文档) 的应用层协议,它是互联网数据通信的基础,由请求和响应构成。通常,首先客户端会发送 HTTP 请求(在请求报文中会指定资源的 URL),然后用传输层的 TCP 建立连接,最后服务器响应请求做出应答,回传数据报文。

状态码

前后端交互-在HTTP 中,总共有5类状态码,

1.1xx 信息 请求已被接受,正在处理中
2.2xx成功 请求已处理成功。
3.3xx重定向 客户端需要附加操作才能完成请求。
4.4xx 客户端错误 客户端发起的请求服务器无法处理。
5.5xx服务端错误 服务器在处理请求时发生错误或异常

常见的状态码:

  • 200 – 请求成功
  • 301 – 资源(网页等)被永久转移到其它URL
  • 404 – 请求的资源(网页等)不存在
  • 500 – 内部服务器错误

补充:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http的两种请求

GET :获取一个资源,同时参数直接跟在URL后面,url长度受限制2048字节
POST:不仅可以获取资源,还可以提交资源(譬如上传文件),参数放在请求体中,包大小4G

前后端交互-get和 post 请求的区别:
1.应用场景: get 请求是一个幂等的请求,一般 get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页。Post 请求不是一个幂等的请求,一般用于会对服务器资源产生影响的场景,比如注册用户这一类的操作。
2.是否缓存:因为不同的应用场景,所以浏览器一般会对get 请求缓存,但很少对 post请求缓存。
3.发送的请求报文: get 请求的报文中实体部分为空,post请求的报文中实体部分一般为向服务器发送的数据。
4.安全性: get 请求可以将请求的参数放入 ur 中向服务器发送,这样的做法相对于 post请求来说,不太安全,因为请求的url 会被保留在历史记录中。
5.请求长度 浏览器由于对 url 有一个长度上的限制,所以会影响 get 请求发送数据时的长度6.参数类型:post的参数传递支持更多的数据类型。

其中的三次握手与四次挥手

三次握手:
1、第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

三次握手的作用:
1、确认双方的接受能力、发送能力是否正常;
2、指定自己的初始化序列号,为后面的可靠传送做准备;
3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。


四次挥手:
1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

通俗地讲:
1.第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端"我说完了 (FIN)”,此时自身形成等待结束连接的状态。
2.第二次挥手:服务端知道客户端已经没话说了,服务端此时还有两句心里话要给客户端说,“我知道你说完了 (ACK),我再给你说两句,吧啦吧啦。。
3,第二次挥手:此时客户端洗耳恭听继续外工等待结束的状态,服务器端也说完了,自身此时外干等待关闭连接的状态,并对告诉客户端,“我说完了,咱们断了吧 (FIN)”
4.第四次挥手:客户端收知道服务端也说完了,也要告诉服务端一声(ACK),因为连接和断开要双方都按下关闭操作才能断开,客广端同时又为自己定义一个定时器,因为不知道刚才说的这句话能不能准确到达服务端(网络不稳定或者其他因素引起的网络原因)默认时间定为两个通信的最大时间之和,超出这个时间就默认服务器端已经接收到了自己的确认信息,此时客户端就关闭自身连接服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。

 

websocket协议

websocket 是 htm15 提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应层协议。它基于TCP 传输协议,并复用 HTTP 的握手通道,浏览器和服务器只需要完成-次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输


Websocket原理:客户端 websocket 服务器通知 (notify) 一个带有所有接收者ID 的事件,服务器接收后立即通知所有活跃的客户端,只有 ID 在接收者D 序列中的客户端才会处理这个事件。

2.Websocket 特点:
A.支持双向通信,实时性更强
B.可以发送文本,也可以发送二进制数据
建立在TCP 协议之上,服务端的实现比较容易c.D数据格式比较轻量,性能开销小,通信高效。
E没有同源限制,客户端可以与任意服务器通信F.协议标识符是 ws(如果加密,则为 wss),服务器网址就是 URL。G.与HTTP 协议有良好的兼容性,默认端口也是 80 和443,并且握手阶段采用 HTTP 协议因此握手时不容易屏蔽,能通过各种HTTP 代理服务器

我们来看一下Websocket发送请求和HTTP发送请求的区别:

 

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

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

相关文章

DocArray 0.20.0 发布!新增 Milvus 后端支持,更好地嵌套数据搜索,新增 RGB-D 格式的 3D 模型表示...

DocArray 是一个用于处理、传输和存储多模态数据的 Python 工具包。DocArray 提供便捷的多模态数据处理功能,具备基于 Protobuf 提供高性能的网络传输性能,同时也为多种向量存储方案提供统一的 API 接口。GitHub:github.com/docarray/docarra…

AU如何为你的人声增加空旷感?

你知道怎么使用AU给你的声音添加延迟效果,让你的声音具有空旷感和弱回声的效果。在这里我们可以使用插件达到这个目的。 在使用模拟延迟插件之前呢,我们可以去创建一个立体声总音轨,创建方式如图,跟着序号走,我们就可以…

CSS -- 06. CSS高阶技巧总结

文章目录CSS高阶技巧1 精灵图(sprites)1.1 为什么使用精灵图1.2 精灵图的使用2 字体图标2.1 字体图标的产生2.2 字体图标的优点2.3 字体图标的下载2.4 字体图标的引入2.5 字体图标的追加3 CSS三角形4 CSS用户界面样式4.1 鼠标样式 cursor4.2 表单的轮廓线4.3 防止拖拽文本域 re…

JAVA毕业设计——基于Springboot+vue的心理咨询管理系统(源代码+数据库)

github代码地址 https://github.com/ynwynw/psychlolgyhealth-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject 基于Springbootvue的心理咨询管理系统(源代码数据库) 一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能&#xff…

[附源码]Python计算机毕业设计SSM基于Web美食网站设计(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Kotlin标准库函数

Kotlin标准库中包含了几个函数,它们的目的就是可以在对象的上下文中执行代码块。当我们调用该Lambda表达式时,它会形成一个临时的作用域。在该范围内,可以访问不带名称的对象,此类函数称为作用域函数。包括: apply函数let函数run…

Java开发才不到3年,来面试开口要25K,面完连10K都不想给

前言 我的好朋友兼大学同学老左家庭经济情况不错,毕业之后没两年自己存了点钱加上家里的支持,自己在杭州开了一家网络公司。由于公司不是很大所以公司大部分的开发人员都是自己面试的,近期公司发展的不错,打算扩招也面试了不少人。…

[l论文解析]Classifier-Free Diffusion Guidance

paper link:https://openreview.net/pdf?idqw8AKxfYbI 文章目录OverviewWhat problem is addressed in the paper?What is the key to the solution?What is the main contribution?Potential fundamental flaws; how this work can be improved?Content关于 c…

Java 字符串 split 的一个反直觉陷阱

最近生产环境遇到一个奇怪的数组下标越界报错,如下图代码所示,我们可以肯定的是 fieldName 变量不为空(不是空字符串,也不是 null),但是代码执行到读取 names[0] 变量的时候,抛出了一个 数组下标…

5G无线技术基础自学系列 | 抗衰落技术

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线信道是随机时变信道,信…

【云计算与大数据技术】文件存储格式行式、列式、GFS、HDFS的讲解(图文解释 超详细)

一、分布式文件系统 文件系统最后都需要以一定的格式存储数据文件,常见的文件存储布局有行式存储、列式存储以及混合式存储三种,不同的类别各有其优缺点和适用的场景,在目前的大数据分析系统中,列式存储和混合式存储方案因其特殊…

mysql 数据库设计三大范式

1. 什么是设计范式 设计表的依据,按照范式设计出来的表,不会出现数据的冗余 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构清晰的;反之则是乱七八糟,不仅会给开发人员制造麻烦&a…

大数据面试之Hive常见题目

大数据面试之Hive常见题目 1. Hive的架构 1、重点四个器:解释器(SQL Parser)、Driver:编译器(Compiler),优化器(Optimizer),执行器(Executor&…

基于Python+Django的在线学习交流平台

在各学校的教学过程中,直播授课管理是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及,“基于网络的学习模式”正悄无声息的改变着传统的直播学习模式,“基于网络的直播教学平台”的研究和设计也成为教育技术领域的热点课题。采…

BEPUphysicsint定点数3D物理引擎介绍

帧同步的游戏中如果用物理引擎,为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。也就是我们通常说的定点数物理引擎(确定性物理引擎)。本系列教程给大家详细的讲解如何在你的项目中内置一个确定性物理引擎。确定性物理引擎我们使用git…

es入门(中)

目录 6.Java api 实现es中的文档管理(增删改) 6.1 java 客户端简单获取数据 6.2结合spring-boot测试文档查询 配置环境 配置类 测试代码结构 简单的查询 对查询的请求设置参数 异步查询 6.4 结合spring-boot测试文档新增 6.5结合spring-boot…

C语言的预处理器无法先展开宏再拼接符号?可以!

背景 最近接到一个需求,要实现一个脚本,能提取.h文件里定义的所有全局变量的值,这些全局变量都是结构体变量,名字是结构体类型名加场景后缀——每个.h对应的场景都是唯一的,所以.h内所有变量名的后缀一致。 我的解决…

线段树详解(包含加法线段树、乘法线段树及区间根号线段树,简单易懂)

同步发表于洛谷梦回江南 这一篇文章我们将对线段树中的常规操作进行详细的讨论。 以下所提到的复杂度如无特殊说明均为时间复杂度。log⁡\loglog 的底数均为 222。 不开 long long 见祖宗! 文章目录第一部 普通线段树一、引入二、优化方案三、懒标记(l…

[附源码]Python计算机毕业设计电影网站系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

什么是编程的设计模式,史上最全面Java设计模式总结,看完再也不会忘记

文章目录**9.1 工厂方法模式与抽象工厂模式对比#****9.2 简单工厂模式与单例模式对比#****9.3 简单工厂模式与建造者模式对比#****10.1 装饰器模式与代理模式对比#****10.2 装饰器模式与门面模式对比#****10.3 装饰器模式与适配器模式对比#****10.4 适配器模式与代理模式…