【探索java之路】简单聊聊网络通讯核心协议

【探索java之路】简单聊聊网络通讯核心协议

目录

引言

一、传输层协议详解

TCP(传输控制协议)

UDP(用户数据报协议)

TCP vs UDP 对比分析

二、应用层协议详解

HTTP(超文本传输协议)

HTTPS(安全超文本传输协议)

三、协议间的协同工作

端到端通信流程实例

常见通信模式


引言

网络通信的核心协议,不仅是后端开发的必备技能,也是前端优化、架构设计乃至安全防护的基础。OSI七层模型与TCP/IP四层模型是理解网络通信的理论框架。在实际应用中,TCP/IP模型更为广泛使用,包括应用层、传输层、网络层和链路层。本文重点讨论应用层协议HTTP/HTTPS和传输层协议TCP/UDP。


一、传输层协议详解

TCP(传输控制协议)

TCP是互联网中最重要、应用最广泛的传输层协议之一,以其可靠性有序性著称。

核心特性

  • 面向连接:通信前必须建立连接,通信结束后释放连接
  • 可靠传输:通过确认、重传、校验等机制确保数据正确到达
  • 流量控制:滑动窗口机制防止发送方淹没接收方
  • 拥塞控制:慢启动、拥塞避免、快速重传、快速恢复算法

三次握手建立连接

这个过程确保了双方都准备好收发数据,并协商初始序列号。

四次挥手释放连接

双向连接的独立关闭保证了数据传输的完整性。

UDP(用户数据报协议)

UDP是另一种传输层协议,以简单高效为设计理念。

核心特性

  • 无连接:发送数据前不需要建立连接
  • 不可靠传输:不保证数据到达,不保证顺序
  • 无状态:不维护连接状态
  • 开销小:头部仅8字节,比TCP的20字节更精简

TCP vs UDP 对比分析

特性TCPUDP
连接性面向连接无连接
可靠性高(确认、重传)低(无机制)
顺序性保证顺序不保证顺序
速度较慢(建立连接、确认)快(无握手)

选择策略

  • 选择TCP:需要可靠传输、数据完整性优先的场景
  • 选择UDP:实时性要求高、可容忍少量丢包、需要多播的场景
  • 混合使用:部分应用在UDP上实现可靠传输机制

二、应用层协议详解

HTTP(超文本传输协议)

协议演进

  • HTTP/1.0:每个请求/响应后关闭连接
  • HTTP/1.1:持久连接、管道化、分块传输
  • HTTP/2:多路复用、头部压缩、服务器推送
  • HTTP/3:基于QUIC,解决队头阻塞

常用方法

  • GET:获取资源
  • POST:提交数据
  • PUT:更新资源
  • DELETE:删除资源
  • PATCH:部分更新
  • HEAD:获取头部信息
  • OPTIONS:查询支持方法

状态码分类

  • 1xx:信息性状态码
  • 2xx:成功(200 OK、201 Created、204 No Content)
  • 3xx:重定向(301 Moved Permanently、304 Not Modified)
  • 4xx:客户端错误(400 Bad Request、403 Forbidden、404 Not Found)
  • 5xx:服务器错误(500 Internal Server Error、502 Bad Gateway)

HTTP/2核心改进

  1. 二进制分帧:将消息分解为独立帧,交错发送
  2. 多路复用:一个连接并行多个请求/响应
  3. 头部压缩:HPACK算法减少头部大小
  4. 服务器推送:服务器主动推送客户端可能需要的资源

HTTPS(安全超文本传输协议)

HTTPS = HTTP + SSL/TLS,为HTTP通信提供加密、完整性和身份验证。

加密原理

  1. 对称加密:加密解密使用相同密钥,速度快算法:AES、DES、3DES
  2. 非对称加密:公钥加密,私钥解密,安全性高算法:RSA、ECC、DH
  3. 混合加密:结合两者优势,用非对称加密交换对称密钥

数字证书与PKI

  • CA(证书颁发机构):受信任的第三方
  • 数字证书:包含公钥、持有者信息、CA签名
  • 证书链:根证书 → 中间证书 → 服务器证书

TLS握手过程

  1. ClientHello:客户端支持的TLS版本、密码套件、随机数
  2. ServerHello:服务器选择TLS版本、密码套件、随机数,发送证书
  3. 证书验证:客户端验证服务器证书
  4. 密钥交换:客户端生成预主密钥,用服务器公钥加密发送
  5. 计算密钥:双方用随机数和预主密钥计算会话密钥
  6. 完成消息:验证握手过程完整性

HTTPS优势

  • 防窃听:加密传输内容
  • 防篡改:数字签名保证完整性
  • 防冒充:证书验证身份
  • SEO优势:搜索引擎排名因素

三、协议间的协同工作

端到端通信流程实例

我们以访问"https://www.example.com"为例:

  1. DNS解析:UDP查询www.example.com的IP地址
  2. TCP连接:与服务器443端口三次握手建立连接
  3. TLS握手:协商加密参数,验证证书
  4. HTTP请求:发送加密的HTTP请求
  5. HTTP响应:接收加密的HTTP响应
  6. 渲染页面:浏览器解析HTML,加载资源
  7. 连接关闭:四次挥手释放连接

常见通信模式

短连接模式(HTTP/1.0默认):

请求 -> 响应 -> 关闭连接 新请求 -> 新连接 -> 响应 -> 关闭连接

  • 优点:服务器资源占用少
  • 缺点:连接建立开销大

持久连接模式(HTTP/1.1默认):

建立连接 请求1 → 响应1 请求2 → 响应2 ... 请求N → 响应N 关闭连接
  • 优点:减少连接建立开销
  • 缺点:服务器需维护连接状态

HTTP/2多路复用

连接 ├─ 流1:请求1 → 响应1 ├─ 流2:请求2 → 响应2 ├─ 流3:请求3 → 响应3 └─ 流4:服务器推送资源
  • 完全解决队头阻塞
  • 头部压缩减少开销

制作不易,如果对你有帮助请点赞,评论,收藏,感谢大家的支持

Read more

【信息科学与工程学】计算科学与自动化-第八篇 人工智能领域04 大模型算法 第一部分01

大模型中的算法 一、 核心计算图与算子优化体系 1. 注意力机制优化算法 1.1 精确注意力优化 * FlashAttention (v1/v2/v3) * Memory-Efficient Attention * Self-Attention with Linear Complexity (Linformer) * Nyströmformer近似注意力 * Block-Sparse Attention * Longformer滑动窗口注意力 * BigBird稀疏注意力模式 * Reformer局部敏感哈希注意力 * Performer基于核的线性注意力 * Linear Transformer线性化注意力 * Synthesizer注意力模式学习 * Sparse Transformer因子化注意力 * Axial Attention轴向注意力 * Routing Transformer聚类注意力 * Efficient Attention内存优化注意力 * Causal Attention因果注意力优化 * Cross-Attentio

By Ne0inhk
计算机视觉热点:三维人体姿态估计的前沿算法与论文案例

计算机视觉热点:三维人体姿态估计的前沿算法与论文案例

计算机视觉热点:三维人体姿态估计的前沿算法与论文案例 * 一、前言 * 二、三维人体姿态估计概述 * 2.1 定义与目标 * 2.2 应用场景 * 2.3 面临的挑战 * 三、前沿算法介绍 * 3.1 基于深度学习的方法 * 3.2 多视角方法 * 3.3 结合传感器的方法 * 四、算法对比与分析 * 4.1 不同算法的性能比较 * 4.2 适用场景分析 * 五、数据集介绍 * 5.1 常用数据集概述 * 5.2 数据集特点与应用 * 六、未来发展趋势 * 6.1 算法优化方向 * 6.2 新兴技术融合

By Ne0inhk
单双序列问题——动态规划

单双序列问题——动态规划

文章目录 * 一、最长递增子序列 * 二、等差数列划分II-子序列 * 三、最长公共子序列 * 四、正则表达式匹配 动态规划是解决复杂算法问题的利器,本文将聚焦于单序列与双序列两类经典问题,通过分析最长递增子序列、正则表达式匹配等典型案例,深入剖析动态规划的状态定义与转移方程构建思路。 在阅读该文章时最好对基础的动态规划有所了解,因为在此不会讲解动态规划基础的细节,大家可以通过阅读下文进行学习:基础dp——动态规划多状态dp——动态规划子数组问题——动态规划 单序列问题往往具备两个关键特征,使其特别适合用动态规划求解。 * 问题解决路径需拆解为多个步骤,每个步骤都存在多种选择,最终目标是计算可行解的总数,或是找到满足条件的最优解。 * 问题的输入数据通常呈现为序列形态,比如一维数组、字符串等典型的线性数据结构。 根据题目的特点找出该元素对应的最优解(或解的数目)和前面若干元素(通常是一个或两个)的最优解(或解的数目)的关系,并以此找出相应的状态转移方程。一旦找出了状态转移方程,只要注意避免不必要的重复计算,问题就能迎刃而解。 下面讲解两个适合运用动态规划的单序

By Ne0inhk
《图论算法入门:掌握DFS和BFS,理解图与树的遍历》

《图论算法入门:掌握DFS和BFS,理解图与树的遍历》

🎬 博主名称:个人主页 🔥 个人专栏: 《算法通关》,《Java讲解》 ⛺️心简单,世界就简单 目录 序言 DFS 全排列问题 剪枝操作---n皇后问题 BFS 树与图的深度优先遍历 树,图的存储 遍历树,图 树与图的宽度优先遍历 序言 到图论这章节了,先讲讲DFS,BFS,然后讲树和图咋存储,还有树和图的DFS以及BFS, DFS dfs是一个执着的人(可爱捏),他一直搜索到叶子节点,然后才会回头去看别的路,然后继续一条路走到头 从数据结构来看,我们的dfs用的是栈 从空间来看,我们dfs空间使用是与高度成正比的O( h ) 我们dfs搜索是一条路走到头,所以我们dfs不具有最短路的性质 我们来看个最经典的题, 全排列问题 我们从0开始出发,然后往下搜,当搜到n的话就说明我们搜完了输出一下就行(用path记录搜索的路径),当搜完之后,我们肯定要恢复原状,所以把st给回复,path不用是因为,下次直接就覆盖了,不用再path[

By Ne0inhk