websocket入门详解

入门websocket的基础应该掌握一下问题:

1、什么是握手?

2、什么是websocket?

3、websocket和http的区别,应用场景

4、html前端简单代码演示

5、springboot整合websocket使用

6、使用vue+elementui打造简单聊天室

7、使用websocket进行信息实时推送,整合redis和数据库进行存储(若依Ruoyi+websocket)

1、什么是握手?

"握手"在计算机网络中是一个比喻性的术语 ,用来描述两个设备或程序在通信开始前,互相确认彼此身份、能力和准备状态的过程,就像现实中人们见面时通过"握手"表示友好和确认一样。

简单来说就是:

握手 = 建立通信前的"问好+确认"步骤

目的:确保双方都准备好、安全、可靠地通信。

什么是TCP的三次握手?

"三次握手"是指在建立 TCP连接 时,客户端与服务器之间进行的三个步骤,用于确保双方都能正常发送和接收数据。这是 TCP 协议中非常基础而重要的概念。

为什么要三次握手?

主要目的是为了 确保双方都具备发送和接收能力,并为数据传输建立可靠的连接。

三次握手的详细解析

可以将客户端理解成浏览器,服务器就是后端

客户端 服务器

| |

| --------------------- SYN, Seq = 100 -----------> | 第一次握手

| |

| <--- SYN+ACK, Seq = 200, Ack = 101 ---> | 第二次握手

| |

| ------ ACK, Seq = 101, Ack = 201 -----------> | 第三次握手

| |

模拟的三次抓包详细

第一次握手:客户端 → 服务器
  • 客户端向服务器发送一个 SYN(同步)包,表示希望建立连接。

  • 包含客户端的初始序列号(Seq = 100)。

第二次握手:服务器 → 客户端
  • 服务器收到 SYN 后,回复一个 SYN+ACK 包

  • 表示"我同意建立连接",并告诉客户端自己的初始序列号(Seq = 200)。

  • 同时对客户端的 SYN 进行确认(Ack = 101)。

第三次握手:客户端 → 服务器
  • 客户端收到 SYN+ACK 后,再发送一个 ACK 包,表示连接建立完成。

  • 确认服务器的序列号(Seq=101,Ack = 201)。

现实生活中的例子

小陈:你好,我是 小陈,能听见我吗?(SYN)

小霜:你好 小陈,我是 小霜,能听见你,我这边也能说话,你能听我吗?(SYN+ACK)

小陈:能听见,咱们开始说话吧!(ACK)

相关推荐
代码栈上的思考2 分钟前
SpringBoot 拦截器
java·spring boot·spring
送秋三十五6 分钟前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
雨中飘荡的记忆8 分钟前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
jbtianci14 分钟前
Spring Boot管理用户数据
java·spring boot·后端
Sylvia-girl17 分钟前
线程池~~
java·开发语言
临水逸18 分钟前
一次路径穿越漏洞引发的NAS安全危机:飞牛fnOS漏洞深度剖析与用户自救指南
网络·安全·web安全
编程彩机19 分钟前
互联网大厂Java面试:从Jakarta EE到微服务架构的技术场景深度解读
spring boot·分布式事务·微服务架构·java面试·jakarta ee
魔力军21 分钟前
Rust学习Day3: 3个小demo实现
java·学习·rust
强风79423 分钟前
Linux-传输层协议TCP
linux·网络·tcp/ip
时艰.25 分钟前
java性能调优 — 高并发缓存一致性
java·开发语言·缓存