短长轮询、SSE、WebSocket、TcpUdp、OSI

目录

一、短轮询、长轮询、SSE、WebSocket的区别

区别

补充

二、WebSocket

握手过程及协议升级机制

如何保证 WebSocket 连接的稳定性(心跳检测与断线重连)

WebSocket案例

三、Tcp和Udp

Tcp3次握手4次挥手

tcp和udp的区别

五、OSI参考模型


一、短轮询、长轮询、SSE、WebSocket的区别

区别

  • 短轮询 (Short Polling)‌:客户端每隔固定时间向服务器发起请求。缺点是大量无效请求造成服务器压力和带宽浪费,实时性差(取决于轮询间隔)。
  • 长轮询 (Long Polling)‌:客户端发起请求后,服务器挂起连接直到有数据才返回。虽然减少了空请求,但本质仍是“请求-响应”模式,连接频繁重建,且难以实现真正的双向通信。
  • SSE (Server-Sent Events)‌:基于 Tcp+Http 的单工通信技术。它通过在客户端和服务器之间建立一个长连接,使得服务器能够主动向客户端发送数据,而不需要客户端明确地请求,这种机制相比传统的短轮询和长轮询技术更高效和实时
    • 节省资源‌:只需要建立一条长连接,不需要频繁地建立和关闭连接,从而节省服务器和客户端的资源。
    • 可靠性高‌:使用HTTP协议进行通信,具有较好的兼容性和稳定性,原生支持自动重连。
    • 简单易用:只需要使用浏览器内置的EventSource对象即可实现数据的实时推送。
    • 仅支持服务器到客户端的单向通信,是一种轻量级的通信机制。
    • 通常只支持文本格式,若只需服务器向客户端单向推送少量文本通知(如新闻更新、日志监控),‌SSE是更合适的选择。
    • SSE主要为Web应用设计,不适用于移动应用或传统桌面应用。因为其本质上是为浏览器环境设计的单向实时通信技术,其核心依赖于浏览器内置的 EventSource API‌
      • EventSource‌ 是HTML5标准定义的一个 Web API 接口,主要用于实现 ‌服务器发送事件(Server-Sent Events, SSE)‌。它允许网页自动获取来自服务器的更新,建立一种从服务器到客户端的‌单向、持久、实时‌的数据推送通道。
      • 数据格式‌: 服务器发送的数据必须是纯文本格式,且 MIME 类型必须设置为 text/event-streamresponse.setHeader("Content-Type", "text/event-stream");
      • EventSource实现服务端与客户端通信案例实战-CSDN博客
  • WebSocket‌:基于 Tcp+WebSocket‌ 的全双工通信协议。能够实现客户端和服务器之间的双向实时持久通信,具备低延迟高通信效率的特性,支持二进制数据,且在各种浏览器中都有良好的兼容性,广泛应用于Web开发领域。缺点是需自行处理心跳、重连等机制,实现复杂度高于SSE,资源消耗也更大。以下是一些常见的使用场景:
    • 即时通讯:如在线聊天、即时游戏、共享文档等。

    • 实时数据流:如金融交易、体育结果更新、环境监控、多媒体在线音视频流服务、推送券到app、服务器到浏览器的消息推送等。

补充

  • 单工只能‌单向传输‌数据,发送方只能发,接收方只能收,角色固定不变。比如电视广播、遥控器、传感器上报数据,听众或接收端无法反向发送信息。‌‌

  • 半双工允许‌双向传输但不能同时‌,同一时刻只能一个方向,需要切换方向。对讲机是典型例子——按住说话时对方只能听,松开后角色互换。‌‌‌

  • 全双工最顺畅,支持‌双向同时传输‌,双方可独立收发,就像电话通话,两边能同时讲话和听对方声音。现代网络通信、视频会议多采用这种方式。‌‌‌

  • TCP协议通过三次握手建立连接,在连接建立后就可以保持长时间的连接,TCP也是长连接
  • HTTP默认使用短连接,每次请求都会建立一个新的连接,请求完成后连接就会关闭,这意味着每次请求都需要重新建立连接,这会导致额外的延迟和资源消耗。‌‌
  • FTP协议使用的是长连接(即在用户会话期间一直保持控制连接和数据连接),FTP工作在OSI模型的应用层,使用TCP作为其传输协议,确保数据传输的可靠性和顺序性。由于FTP传输效率非常高,在网络上传输大的文件时,一般采用该协议。FTP客户端通过FTP协议访问位于FTP服务器上的资源。

二、WebSocket

握手过程及协议升级机制

WebSocket 是如何从 HTTP 协议升级为 WebSocket 协议的?
握手过程中关键头部字段有哪些?作用是什么?

  1. 客户端发起请求‌:客户端发送一个标准的 HTTP GET 请求,但包含特定的升级头字段:
    • Upgrade: websocket:指示服务器希望切换协议。
    • Connection: Upgrade:确认连接升级。
    • Sec-WebSocket-Key:一个随机生成的 Base64 编码字符串,用于防止非 WebSocket 客户端误连,确保协议升级的合法性。
    • Sec-WebSocket-Version:指定 WebSocket 协议版本(通常为13版本)。
  2. 服务器响应‌:服务器校验请求头,若支持 WebSocket,则返回状态码 101 Switching Protocols,并在响应头中包含:
    • Upgrade: websocket
    • Connection: Upgrade
    • Sec-WebSocket-Accept:将客户端传来的 Sec-WebSocket-Key 加上特定 GUID 字符串后进行 SHA-1 哈希运算,再 Base64 编码生成。客户端会校验此值以确认服务器身份
  3. 协议切换‌:握手成功后,HTTP连接断开,底层TCP连接保持,双方切换到WebSocket协议进行全双工通信。

如何保证 WebSocket 连接的稳定性(心跳检测与断线重连)

在网络波动或中间件拦截下,如何检测连接是否存活?断开后如何优雅重连?
由于 WebSocket 基于 TCP,若网络异常断开(如拔掉网线、路由器重启),TCP 层可能不会立即通知应用层,导致“僵尸连接”。因此需要应用层的心跳机制

  • 心跳检测 (Heartbeat)‌:

    • 机制‌:利用 WebSocket 协议自带的控制帧 Ping 和 Pong。客户端或服务器定期发送 Ping 帧,对方收到后必须回复 Pong 帧。
    • 超时判定‌:若发送 Ping 后在一定时间内未收到 Pong,或长时间未收到任何数据帧,则判定连接断开,主动关闭连接并触发重连逻辑
    • 自定义心跳‌:也可通过业务层发送特定消息(如 {type: 'ping'})来实现自定义心跳,但使用协议级 Ping/Pong 效率更高且不占用网络带宽。
  • 断线重连策略‌:

    • 指数退避 (Exponential Backoff)‌:避免频繁重连冲击服务器。例如,首次重连等待 1s,失败后等待 2s、4s、8s... 直到达到最大间隔时间。
    • 消息补偿‌:对于重要通知,可在重连成功后,通过序列号或时间戳向服务器请求缺失的消息,确保通知不丢失(需结合业务层的 ACK 机制)。

WebSocket案例

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
@EnableWebSocketMessageBroker 
//是Spring Framework中的一个注解,使应用程序支持WebSocket通信

三、Tcp和Udp

Tcp3次握手4次挥手

TCP(Transmission Control Protocol)传输控制协议,是互联网协议套件中最核心的协议之一,提供​可靠的、面向连接的、基于字节流​的传输层通信。

TCP FLAG 位由 bit 组成,分别代表 SYN、ACK 、 FIN、 URG、 PSH 、RST ,都以置1表示有效。我们重点关注 SYN、 ACK、 FIN。 SYN ( Synchronize Sequence Numbers )是用作建立连接时的同步信号ACK ( Acknowledgement )用于对收到的数据进行确认,所确认的数据由确认序列号表示;FIN ( Finish )表示所建立的连接可以关闭了,后面没有数据需要发送。

【超详细分析】关于三次握手与四次挥手面试官想考我们什么?_帅地的博客-CSDN博客

tcp和udp的区别

五、OSI参考模型

OSI(Open Systems Interconnection Reference Model)七层参考模型​ 是国际标准化组织(ISO)制定的网络通信概念模型,用于描述数据如何在网络中从源头传送到目的地。
注意:OSI是参考模型,现实中互联网主要是基于TCP/IP的四层/五层模型

OSI层级

名称

TCP/IP
5层模型

功能概述

典型协议 / 技术

7

应用层

应用层

为用户应用程序提供网络服务接口

HTTPHTTPSFTPSMTP(发邮件)IMAP(收邮件)、POP3(收邮件)DNSTelnetSSH

6

表示层

数据格式转换、加密/解密、压缩/解压

JPEG(图片文件格式)、MPEG(视频文件格式)、ASCIIUTF-8SSL/TLS(部分归于此)

SSL/TLS功能上常被归入‌应用层‌或‌传输层之上‌,因为它为HTTP等应用层协议提供加密服务。‌‌‌

5

会话层

建立、管理和终止会话/连接

NetBIOS、RPC(部分)、SQL Session

4

传输层

传输层​

端到端通信、可靠/不可靠传输、流量控制

TCP(可靠)、UDP(无连接)

3

网络层

网络层​

逻辑寻址和路由选择

IP(IPv4/IPv6)、ICMP、ARP(常关联)、OSPF、BGP、RIP

2

数据链路层

数据链路层​

物理寻址(MAC)、帧校验、差错控制

Ethernet(802.3)、Wi-Fi(802.11)、PPP、MAC交换机
 

Ethernet(以太网)和因特网(Internet)是完全不同的概念。‌‌

  • 以太网 (Ethernet)‌:是一种‌局域网技术‌标准,主要定义设备如何通过有线电缆(如双绞线、光纤)在局部范围内连接和通信。解决的是“怎么连”问题,属于底层物理和数据链路层技术 。
  • 因特网 (Internet)‌:是一个‌全球性的广域网络‌,由无数个不同规模的局域网和广域网通过 TCP/IP 协议互联而成。解决的是“怎么通”问题,是覆盖全球的信息资源网。

1

物理层

物理层​

比特流在物理介质上传输

双绞线光纤、同轴电缆、集线器(Hub)、电压、光信号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值