通信协议(Http,websocket)
http协议详情
- http是超文本传输协议,浏览器和web服务器之间交互的通信协议,它是基于Tcp之上的应用层协议(osi七层)。
- 特点:
- 基于请求响应,服务端不能主动给客户端推送消息。
- 无状态无连接,不能做会话保持。协议本身不保存客户端的会话信息,每次请求都是独立的 “一次性交互”。
- 基于tcp之上的应用层协议--->osi七层。
- 明文传输,数据在网络中以 “明文” 形式传输,请求和响应的内容(包括账号、密码等敏感信息)可被中间设备捕获并读取,存在严重安全风险。这一问题通过HTTPS 协议(HTTP+SSL/TLS 加密)解决。
- 协议版本:
- 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协议来实现
- 详情:
- 请求协议:
请求首行:请求方式(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 才是最优选择,例如:
- 实时聊天(如微信网页版、企业 IM)
- 实时数据展示(如股票行情、监控大屏、直播弹幕)
- 双向协作工具(如在线文档共同编辑、白板协作)
- 游戏实时交互(如多人在线小游戏的位置同步、操作反馈)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944453.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!