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

网络协议 TCP、UDP 和 HTTP

TCP 与 UDP

TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两个广泛使用的传输层协议,它们在数据传输的方式、可靠性和应用场景方面有显著的区别。

TCP

特点:
  1. 面向连接:TCP是面向连接的协议,传输数据前需建立连接(三次握手)。
  2. 可靠传输:TCP通过确认(ACK)、序列号、重传和校验机制确保数据包的正确性和完整性。
  3. 顺序保证:TCP保证数据包按顺序到达,即使数据包乱序到达,也会在接收端进行排序。
  4. 流量控制:TCP有流量控制机制,避免发送方发送数据过快,导致接收方处理不过来。
  5. 拥塞控制:TCP有拥塞控制机制,检测并应对网络拥塞,调整发送速率。
应用场景:
  • 需要可靠传输的应用,如网页浏览(HTTP/HTTPS)、文件传输(FTP)、远程登录(SSH)等。

UDP

特点:
  1. 无连接:UDP是无连接的协议,传输数据前不需建立连接。
  2. 不保证可靠性:UDP不保证数据包的传输成功,不进行确认、重传和顺序控制。
  3. 无序传输:UDP数据包可能乱序到达,接收方无法确保数据包的顺序。
  4. 无流量控制:UDP没有流量控制机制,发送方可以随时发送数据。
  5. 低开销:由于UDP头部开销小,传输速度快,适合实时性要求高的应用。
应用场景:
  • 需要快速传输且对丢包不敏感的应用,如视频会议、实时游戏、直播、DNS查询等。

比较总结

特性TCPUDP
连接方式面向连接(三次握手)无连接
可靠性可靠(确认、重传、校验、排序)不可靠(不确认、不重传、不排序)
传输顺序保证顺序到达不保证顺序
流量控制
拥塞控制
头部开销较大较小
速度较慢(但可靠)较快(但不可靠)
典型应用场景HTTP/HTTPS、FTP、SMTP、SSHDNS、视频会议、在线游戏

实例分析

TCP实例(HTTP/HTTPS):

在浏览网页时,浏览器使用HTTP/HTTPS协议,这些协议基于TCP。由于网页内容需要可靠传输且必须按顺序呈现,TCP的可靠性和顺序控制非常重要。

UDP实例(视频会议):

在视频会议应用中,数据包的实时性比可靠性更重要。即使丢失少量数据包,视频和音频流的播放不会受到显著影响,因此UDP更适合这类应用。

总结

TCP和UDP各有优劣,选择使用哪种协议取决于具体的应用需求。如果需要数据可靠性和顺序性,TCP是更好的选择;如果对传输速度和实时性要求高,且能容忍部分数据丢失,则UDP更为适合。

HTTP 与 HTTPS

HTTP(Hypertext Transfer Protocol)是用于万维网的数据传输协议。随着互联网的发展,HTTP经历了多个版本的演变,以提升性能、安全性和用户体验。下面是HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP/3.0以及HTTPS的介绍。

HTTP/1.0

特点:
  1. 无状态协议:每个请求/响应对是独立的,不保留任何状态。
  2. 短连接:每次请求需要建立一个新的TCP连接,响应完毕后连接关闭。
  3. 简单的请求/响应模型:请求包括方法、URL和协议版本,响应包括状态码、响应头和实体内容。
局限性:
  • 每个请求需要建立新的TCP连接,效率较低。
  • 没有专门的头字段用于描述内容的长度(引入了Content-Length头)。
  • 不支持持久连接和请求管道化。

HTTP/1.1

特点:
  1. 持久连接:默认使用持久连接(Keep-Alive),在一个TCP连接上可以传输多个请求/响应对,减少连接建立和关闭的开销。
  2. 请求管道化:允许在一个连接上发送多个请求,而不必等待响应,从而提高传输效率(虽然实际应用中并不广泛)。
局限性:
  • 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;
  • 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;
  • 没有请求优先级控制;
  • 请求只能从客户端开始,服务器只能被动响应

HTTP/2.0

特点:
  1. 二进制传输:使用二进制格式传输数据,而不是文本格式,提高了传输效率。
  2. 多路复用:在一个TCP连接上可以并发多个请求和响应,解决了HTTP/1.1的队头阻塞问题。
  3. 头部压缩:使用HPACK算法对头部进行压缩,减少传输的数据量。
  4. 服务器推送:服务器可以主动将资源推送到客户端缓存中,而不需要客户端显式请求。
优势:
  • 显著提高了传输效率和性能。
  • 减少了延迟和带宽消耗。
  • 更适合现代网页应用的需求。
缺点:

HTTP/2 通过 Stream 的并发能力,解决了 HTTP/1 队头阻塞的问题,看似很完美了,但是 HTTP/2 还是存在“队头阻塞”的问题,只不过问题不是在 HTTP 这一层面,而是在 TCP 这一层。

HTTP/2 是基于 TCP 协议来传输数据的,TCP 是字节流协议,TCP 层必须保证收到的字节数据是完整且连续的,这样内核才会将缓冲区里的数据返回给 HTTP 应用,那么当「前 1 个字节数据」没有到达时,后收到的字节数据只能存放在内核缓冲区里,只有等到这 1 个字节数据到达时,HTTP/2 应用层才能从内核中拿到数据,这就是 HTTP/2 队头阻塞问题。

HTTP/3.0

特点:
  1. 基于QUIC协议:HTTP/3基于UDP而不是TCP,使用QUIC协议提供传输层服务。
  2. 减少延迟:QUIC集成了TCP的多路复用和TLS的加密功能,减少了握手延迟。
  3. 连接迁移:QUIC支持连接迁移,客户端可以在网络条件变化时无缝切换连接。
  4. 更快的恢复机制:QUIC可以更快地恢复丢失的数据包,提高传输效率。
优势:
  • 更低的延迟和更高的传输效率。
  • 更好的用户体验,特别是在移动网络和不稳定网络环境下。

HTTPS(HTTP Secure)

特点:
  1. 加密通信:HTTPS使用 TLS/SSL 对数据进行加密,保护数据的机密性和完整性。
  2. 身份验证:通过数字证书验证服务器的身份,防止中间人攻击。
  3. 数据完整性:保证数据在传输过程中未被篡改。
优势:
  • 提高了数据传输的安全性和隐私性。
  • 是现代网络应用(如电子商务、网上银行等)的安全基石。
工作流程:
  1. 握手阶段:客户端和服务器建立安全连接,包括协议协商、证书交换、密钥生成等步骤。
  2. 数据传输阶段:在建立的安全连接上进行加密的数据传输。

版本对比总结

特性HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0HTTPS
连接方式短连接持久连接持久连接,多路复用基于QUIC的持久连接基于TLS/SSL的持久连接
数据传输文本格式文本格式加密的二进制格式加密的二进制格式加密的二进制格式
多路复用不支持支持,但有队头阻塞支持,解决队头阻塞支持,解决队头阻塞支持,解决队头阻塞
头部压缩不支持不支持支持支持支持(TLS压缩)
服务器推送不支持不支持支持支持支持
安全性高(基于TLS/SSL)

总结

HTTP协议的发展反映了对性能、安全性和用户体验的不断追求。HTTP/1.1的持久连接和缓存控制,HTTP/2的多路复用和头部压缩,以及HTTP/3基于QUIC的低延迟连接,都是为了解决前一版本中的不足。而HTTPS则通过加密通信和身份验证,提供了必要的安全保障,使得HTTP协议更加可靠和安全。


http://www.kler.cn/news/327827.html

相关文章:

  • 解决QWidget及内部控件只能放大不能缩小的问题
  • Vscode: reason: oom, code: -536870904
  • VBA数据库解决方案第十五讲:Recordset集合中单个数据的精确处理
  • 【无标题】observer: error while loading shared libraries: libmariadb.so.3处理办法
  • 以串口接口为例介绍关于BSP底层架构开发的迭代过程
  • LeetCode 983.最低票价
  • 前端面试:项目细节重难点问题分享(17)
  • 无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM
  • 基于MTK7981平台,学习了解理解SoC上电和boot流程
  • Thinkphp/Laravel基于vue的的出版社书籍阅读管理系统
  • Docker笔记-Docker磁盘空间清理
  • c#中的功能优势
  • 【QT Quick】基础语法:文件定义类型与枚举类型
  • 最大正方形 Python题解
  • windows下安装nginx和基本配置
  • cfg80211是怎么配置无线设备的AP的?
  • Python与MongoDB交互
  • 《一本书讲透Elasticsearch》读书笔记-索引
  • 2024年主流前端框架的比较和选择指南
  • 【学术会议征稿】2024年遥感技术与图像处理国际学术会议(RSTIP 2024)
  • taro RN 左右滑动切换页面
  • 自动驾驶 3DGS 学习笔记
  • 接口性能优化日记
  • Java高级Day51-apacheDBUtils
  • mybatis-plus与xml结合使用
  • 17【Protues单片机仿真】基于51单片机的太阳能智能谷物翻晒机器人
  • Vue 技术进阶 day2 数据监视的原理、其他内置指令、自定义指令、生命周期、组件化、VueComponent构造函数
  • 第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)
  • leetcode力扣刷题系列——【座位预约管理系统】
  • Vue3实现mqtt的订阅与发布