网络协议 TCP、UDP 和 HTTP

news/2024/12/22 2:12:32/

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.ppmy.cn/news/1533309.html

相关文章

【30天玩转python】数据分析与可视化

数据分析与可视化 数据分析是通过数据提取、整理和分析来发现有用信息的过程,而数据可视化则通过图形和图表的方式,将数据转化为视觉化信息,以便快速理解数据趋势和模式。本篇文章将介绍如何使用 Python 进行数据分析与可视化,重…

在 CentOS 安装 Python3.7 (没有弯路)

下载Python源码包 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz安装前准备 安装依赖组件 yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel解压安装 解…

梦幻西游端游如何查看挂机进度,GameViewer远程随时手机畅玩梦幻西游

原来用手机就可以免费玩梦幻西游端游?还可以随时查看游戏进度!如果你喜欢玩梦幻西游端游,有总觉得出门在外不方面携带电脑,要想用手机实现随时随地查看梦幻西游的挂机进度,可以用网易GameViewer远程这款专为游戏玩家设…

JavaScript Map全解:从基础到高级应用

在JavaScript中,Map是一种内置的数据结构,用于存储键值对。与普通的对象(Object)相比,Map提供了更多的灵活性和功能。本文将全面介绍Map的基础用法、特性、高级应用以及与普通对象的区别,帮助你更好地理解和…

Java项目实战II基于Java+Spring Boot+MySQL的购物推荐网站的设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 随着互联网技术的飞速发展,电子商务已成为人们日常生活中不可或缺的一部分。然而&#xf…

【qt】QQ仿真项目1

一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…

【2023工业3D异常检测文献】PointCore: 基于局部-全局特征的高效无监督点云异常检测器

PointCore: Efficient Unsupervised Point Cloud Anomaly Detector Using Local-Global Features 1、Background 当前的点云异常检测器可以分为两类: (1)基于重建的方法,通过自动编码器重建输入点云数据,并通过比较原…

【Java基础】Java面试基础知识QA(上)

Java面试基础知识Q&A(上) 面向对象编程( OOP) Java 是一个支持并发、基于类和面向对象的计算机编程语言。面向对象软件开发的优点: 代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性…