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

通信协议(Http,websocket)

http协议详情

  • http是超文本传输协议,浏览器和web服务器之间交互的通信协议,它是基于Tcp之上的应用层协议(osi七层)。
  1. 特点:
  • 基于请求响应,服务端不能主动给客户端推送消息。
  • 无状态无连接,不能做会话保持。协议本身不保存客户端的会话信息,每次请求都是独立的 “一次性交互”。
  • 基于tcp之上的应用层协议--->osi七层。
  • 明文传输,数据在网络中以 “明文” 形式传输,请求和响应的内容(包括账号、密码等敏感信息)可被中间设备捕获并读取,存在严重安全风险。这一问题通过HTTPS 协议(HTTP+SSL/TLS 加密)解决。
  1. 协议版本:
  • 0.9:HTTP协议的最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源
  • 1.0:1.0版本的工作方式是每次TCP连接只能发送一个请求(默认短链接),当服务器响应后就会关闭这次连接,下一个请求需要再次建立TCP连接,就是不支持keep-alive,还有其他请求方式
  • 1.1:(正在用)引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。
  • 2.0:多路复用:对于 HTTP/1.x,即使开启了长连接,请求的发送也是串行发送的,在带宽足够的情况下,对带宽的利用率不够,HTTP/2.0 采用了多路复用的方式,可以并行发送多个请求,提高对带宽的利用率
  • 3.0:HTTP3.0又称为HTTP Over QUIC,其弃用TCP协议,改为使用基于UDP协议的QUIC协议来实现
  1. 详情:
  • 请求协议:
    请求首行:请求方式(get,post,delete),请求地址,请求http协议版本号/r/n
    请求头: key:value (cookie,useragent,referer,x-forword-for)
    请求体:提交数据携带的内容,编码方式
  • 响应协议:
    响应首行:http协议版本,响应状态码(1xx,2xx),响应单词描述
    响应头:key:value (cookie,响应编码...) 跨域问题的响应头(自己设置的响应头)
    响应体:html格式:浏览器中看到的 json格式给客户端使用

GET请求和POST请求的区别

  • post更安全(携带的数据[请求参数]不会作为url的一部分,放在请求体中)
  • post发送的数据更大(get有url长度限制)
  • post能发送更多的数据类型(get只能发送ASCII字符)
  • post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作

websocket协议

websocket:一种通信协议,区别于http协议,可在单个TCP连接上进行全双工通信。允许服务端主动向客户端推送数据。浏览器和服务器只需要完成一次tcp连接,两者之间就可以建立持久性的连接,并进行双向数据传输。

没有跨域问题
  • websocket协议:基于tcp的应用层协议,跟语言无关,不同语言有具体实现,实现长链接,实现双工通信;客户端浏览器发起HTTP握手,告诉服务端进行WebSocket协议通讯,并告知WebSocket协议版本;服务端确认协议版本,升级为WebSocket协议。之后如果有数据需要推送,会主动推送给客户端
  • djanog中使用channles模块实现
  • flask中使用模块 websocket模块

为什么客户端和服务端通信不全用websocket?

  • 多次请求可能间隔时间比较长
  • 可能因某种原因断开,需要重新连接

WebSocket 的真正适用场景

  • 当场景明确需要 “实时双向数据交互” 时,WebSocket 才是最优选择,例如:
  1. 实时聊天(如微信网页版、企业 IM)
  2. 实时数据展示(如股票行情、监控大屏、直播弹幕)
  3. 双向协作工具(如在线文档共同编辑、白板协作)
  4. 游戏实时交互(如多人在线小游戏的位置同步、操作反馈)
http://www.hskmm.com/?act=detail&tid=37458

相关文章:

  • 详细介绍:go语言学习记录9.23
  • 动车受电弓网检测系统 保障高速铁路安全高效运行
  • P13382 解题报告
  • 我最常用的快捷键
  • Semgrep代码审计工具的使用
  • 厨房电秤方案:介绍一款电子秤芯片sic8632
  • CodeForces-1183F Topforces Strikes Back
  • WPF多语言实现
  • 16 倍性能提升,成本降低 98%! 解读 SLS 向量索引架构升级改造
  • unity设置外置文件,运行读取文件获取地址
  • CF981F Round Marriage
  • macOS直接使用pip安装报错
  • 2025 年最新螺旋地桩厂家推荐排行榜:聚焦光伏大棚等场景,甄选优质实力企业桩尖/大棚/组合/地螺丝螺旋地桩厂家推荐
  • CodeForces-1620D Exact Change
  • 2025 年蒸发器制造商最新推荐排行榜:聚焦节能环保领域,精选废水 / 多效 / 低温等类型设备实力品牌(TOP6)
  • K8S控制器压测调参
  • 第六周第四天6.4
  • Wireshark抓包教程:JSON和HTTPS抓取
  • 2025 年电子万能试验机生产厂家最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析
  • 禁用内核模块,是否需要执行脚本 $ sudo update-initramfs -u $ sudo update-grub ? - 详解
  • Spring AI Alibaba Admin 正式开源!!
  • snack4-jsonpath v4.0.2 发布
  • 2025 年东莞钢结构厂房施工公司最新推荐榜:聚焦企业专利技术、品质管控及知名客户合作案例的权威解析
  • Python 字符串和 数字(int、float、Decimal、Fraction 等) 的一些使用技巧
  • Python 类、对象、继承、方法 的一些使用技巧
  • Python 列表、字典、集合、生成器、迭代器 的一些使用技巧
  • 上海AI短视频获客企业口碑榜:技术实力、服务案例及市场覆盖率的深度解析
  • 【为美好CTF献上祝福】杂项笔记
  • 权威调研榜单:扬州公考笔试机构TOP3榜单好评深度解析
  • PyOCD使用指南