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

网络传输协议解析及SSE补充

1. HTTP(Hypertext Transfer Protocol)

HTTP是一种基于请求-响应模型的无状态协议,通常用于浏览器与服务器之间的数据交换。作为互联网的基础协议,HTTP用于传输网页内容、图像、视频等。其主要特点包括:

  • 无状态:每个请求都是独立的,不保留前后连接信息。

  • 可靠性:使用TCP作为底层协议,保证数据传输的可靠性。

  • 典型应用场景:网页浏览、API通信、文件下载等。

  • 传输层协议:基于TCP协议。

  • 数据格式:主要以文本格式传输(如JSON、HTML等)。

  • 连接方式:请求-响应模式,通常为短连接。

2. WebSocket

WebSocket是一种全双工协议,允许客户端与服务器之间建立持久连接,进行实时双向通信。它是HTTP的补充,最初通过HTTP握手建立连接,之后转换为WebSocket协议。其特点包括:

  • 双向通信:客户端与服务器可以在连接期间随时互发数据。

  • 低延迟:保持长连接,避免重复建立连接的开销。

  • 典型应用场景:实时聊天、在线游戏、股票交易、数据推送等。

  • 传输层协议:基于TCP协议。

  • 数据格式:可以传输文本或二进制数据。

  • 连接方式:持久连接,通过一次HTTP握手建立连接后持续使用。

3. TCP(Transmission Control Protocol)

TCP是一种面向连接的传输层协议,提供可靠的数据传输。它通过序列号、确认机制、超时重传等机制保证数据的完整性和顺序。其特点包括:

  • 面向连接:数据传输前需要建立连接,数据传输后需要关闭连接。

  • 可靠传输:通过确认和重传机制确保数据完整、无丢失和无重复。

  • 流量控制和拥塞控制:调整传输速度以避免网络拥堵。

  • 典型应用场景:文件传输、电子邮件、网页浏览等需要数据完整性的场景。

  • 传输层协议:直接运行在IP之上。

  • 数据格式:任意格式,但有严格的包序和重发机制。

  • 连接方式:可靠的双向连接。

4. UDP(User Datagram Protocol)

UDP是一种无连接、面向消息的传输层协议。与TCP相比,它不提供可靠的数据传输服务,但具有低延迟的优势。其特点包括:

  • 无连接:无需建立连接即可传输数据,发送方直接发送数据,接收方直接接收数据。

  • 不可靠传输:不保证数据的顺序和完整性,数据可能丢失或乱序。

  • 低开销:由于没有确认和重传机制,UDP传输效率更高,适用于对数据可靠性要求不高但对实时性要求高的场景。

  • 典型应用场景:视频流、音频流、在线游戏、实时语音通话等。

  • 传输层协议:直接运行在IP之上。

  • 数据格式:任意格式,但没有确认机制。

  • 连接方式:无连接,不保证可靠性。

5. 补充SSE (Server-Sent Events)

SSE是一种允许服务器主动向客户端推送事件的简单技术。它基于HTTP协议,适用于需要频繁更新但不需要完整双向通信的场景。以下是SSE的一个简单实现示例:

服务端:

import http from "node:http";
let count = 0;const server = http.createServer((req, res) => {res.writeHead(200, {"access-control-allow-origin": "*","content-type": "text/event-stream",});if (req.url === "/sse") {setInterval(() => {console.log("发送数据", count);res.end(`data: hello --- ${count++}\n\n`);}, 1000);}
});server.listen(8080, () => {console.log("服务启动成功", "http://localhost:8080");
});

客户端:

const sse = new EventSource("http://localhost:8080/sse");
sse.onmessage = (event) => console.log(event.data);

通过上述代码,服务器每秒向客户端推送一次数据,实现了简单的服务器推送功能。SSE在需要单向实时更新的场景中非常有用,如新闻推送、实时通知等。

6. 协议对比总结

7. 补充资料

  • 官方 http 文档:https://nodejs.org/docs/latest/api/http.html

  • 官方 net 文档:https://nodejs.org/docs/latest/api/net.html

  • 官方 dgram 文档:https://nodejs.org/docs/latest/api/dgram.html

  • express:https://expressjs.com/

  • socket.io:https://socket.io/

  • Websocket 协议:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#%E4%BA%A4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%B8%A7

http://www.dtcms.com/a/388967.html

相关文章:

  • 视觉SLAM第12讲:建图
  • 2025编程技术学习网站大全:从入门到精通的免费资源指南
  • 刷题日记0918
  • emacs 如何显示断点和运行的行标
  • 【c++】继承(2)
  • 大模型提示词Prompt工程:万能公式-完整指南
  • Flask RESTful API 教程:从零实现 Python CRUD 后端服务
  • 百年奢品家电ASKO亮相IFA2025|以至臻品质绘就生活新境
  • jvm排查full gc或者humongous obj思路?如何调优?
  • 实现.NetCore集成Serilog,写入日志文件,并按日期拆分文件夹
  • [新启航]航空发动机燃烧室喷嘴孔深光学 3D 轮廓测量 - 激光频率梳 3D 轮廓技术
  • iOS 上架 App 流程全解析 苹果应用发布步骤、App Store 审核流程、ipa 文件上传与 uni-app 打包实战经验
  • 22.6 单卡A100驯服30亿参数模型!DeepSpeed ZeRO-3实战显存优化指南
  • jvm垃圾搜集器
  • 小红书开放平台笔记详情接口实战:内容解析与数据挖掘全方案
  • App 上架平台全解析,iOS 应用发布流程、苹果 App Store 审核步骤
  • BeeWorks:私有化部署即时通讯,铸就企业数字安全基石
  • (数据分析方向)Flask 动漫数据可视化分析系统(Echarts + 番剧管理・大数据)(源码)✅
  • 2025 最新版 Node.js 下载安装及环境配置教程
  • 分布式流处理与消息传递——Kafka ISR(In-Sync Replicas)算法深度解析
  • JVM(三)-- 运行时数据区
  • 从比特币到Web3:数字资产犯罪的演进史
  • godot+c#实现状态机
  • linux计划任务管理
  • excel文件导入+存储过程导入表到业务表
  • Chromium 138 编译指南 macOS 篇:构建配置与编译优化(五)
  • 基于Java与Vue的MES生产制造管理系统,实现生产流程数字化管控,涵盖计划排程、质量追溯、设备监控等功能模块,提供完整源码支持二次开发,助力智能制造升级
  • 人工智能基础:从感知机到神经网络核心知识整合​
  • 电子制造设备中螺杆支撑座如何保障精度与质量控制?
  • 东莞精密制造工厂6人共用一台服务器做SolidWorks设计