Web 网络传输协议层安全:Web Socket 安全分析
https://www.cainiaoxueyuan.com/anquan/1。概述
WebSocket 是 HTML5 中一种新的网络传输协议。它位于 OSI 模型的应用层,可以通过单个 TCP 连接执行全双工通信。
https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1HTTP与WebScoket
段落首行缩进,表格居中,如表https://www.cainiaoxueyuan.com/anquan/1所示。字体一般为雅黑或宋体,字号统一。 5、Web客户端和服务器之间的通信大部分使用HTTP(HTTPS还在传输层和应用层之间增加了一个SSL/TLS协议层,这里没有太大影响,所以无所谓)。 HTTP 协议是请求-响应。从 HTTP https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1 开始,TCP 连接可以重用。即使网络连接保持打开状态,这也将用于请求和响应的单独事务。
WebSocket 和 HTTP 都是应用层协议,都基于 TCP 协议。 WebSocket简化了客户端和服务器之间的数据交换,允许服务器主动向客户端发送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久连接,进行双向数据传输。此外,WebSocket 基于二进制传输帧。
RFC 6455 规定:
WebSocket 在 HTTP 端口 80 和 443 上运行,支持 HTTP 代理和代理,从而与 HTTP 协议兼容。
提示:ws 协议默认为端口 80,wss 默认为端口 443
为了实现兼容性,WebSocket 握手使用 HTTP Upgrade 标头从 HTTP 更改为 WebSocket。与 HTTP 协议类似,“wss”协议通过加密的 TLS 连接建立 WebSocket,而“ws”协议使用未加密的连接。
https://www.cainiaoxueyuan.com/anquan/1.2Demo
- 安装依赖
npm install ws
- server.js
// WebSocket模块导入:
const WebSocket = require('ws');
// 参考服务器类:
const WebSocketServer = WebSocket.Server;
// 实例:
const ws = new WebSocketServer({
port: 30 00 } ) ;
// 连接事件用于处理已连接的WebSocket
ws.on('connection', function (ws) {
console.log("Connected!!!" ) ;
});
node tt.js 启动服务器
- client
直接在浏览器控制台界面输入,服务器端会打印相应的日志信息
var ws = new WebSocket ("ws ://https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000");
https://www.cainiaoxueyuan.com/anquan/1.3 处理流程
服务器:
var ws = new WebSocket ( "ws:/ /https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000");
Loaded!!
客户端发起握手请求
GET / HTTP/https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1
主机:https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1:3000
用户代理:Mozilla/5.0(Windows NT https://www.cainiaoxueyuan.com/anquan/10.0; Win64; x64; rv:99.0) Gecko/20https://www.cainiaoxueyuan.com/anquan/100https://www.cainiaoxueyuan.com/anquan/10https://www.cainiaoxueyuan.com/anquan/1 Firefox/99.0
接受: */*
接受语言: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5 ,en-US;q=0.3,en;q=0.2
接受 - 编码:gzip、deflate
Sec-WebSocket-版本:https://www.cainiaoxueyuan.com/anquan/13
来源:http://https://www.cainiaoxueyuan.com/anquan/127.0.0.https://www.cainiaoxueyuan.com/anquan/1
Sec-WebSocket-Key:8PbhQOV5ykV3eYf2biw52A==
连接:保留,升级 Sec -获取 - 目的地. : websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: same-site
Pragma: no-cache
Cache-Control: no-cache
升级:websocket
如果服务器接受连接,则会返回 WebSocket 响应
HTTP/https://www.cainiaoxueyuan.com/anquan/1.https://www.cainiaoxueyuan.com/anquan/1 https://www.cainiaoxueyuan.com/anquan/10https://www.cainiaoxueyuan.com/anquan/1 切换协议
升级:websocket
连接:升级 Sec-WebSocket - 接受:PO DBAGQ6OHhttps://www.cainiaoxueyuan.com/anquan/1NXVQD+sjrkfk9gnsgi =
将保持WebSocket网络连接的打开,并且每个页面都可以直接发送WebSocket消息:
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
