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

计算机网络 —— 运输层(UDP和TCP)

计算机网络 —— 运输层(UDP和TCP)

  • UDP
  • TCP
  • UDP和TCP的异同点
      • 相同点
      • 不同点

我们今天来看运输层的两个重要的协议——UDP和TCP

UDP

UDP,全称为用户数据报协议(User Datagram Protocol),是互联网中一种核心的传输层协议。它是无连接的、不可靠的服务,主要用于在网络上的应用程序间快速传输数据包。相比于TCP(传输控制协议),UDP具有以下显著特点:

  1. 无连接:UDP不建立和维护连接状态。发送端可以直接向接收端发送数据报,无需事先建立连接,这使得UDP的通信开销小,效率较高。
  1. 轻量级:UDP头部远比TCP简单,只包含源端口、目的端口、长度和校验和等基本字段,没有序列号、确认机制等复杂功能,因此处理速度快,延迟低。
  1. 不可靠:UDP不保证数据包的顺序、不进行流量控制,也不进行错误恢复(如重传丢失的数据包),因此被称为“不可靠”协议。数据包可能丢失、重复或乱序到达。
  1. 面向数据报:UDP以数据报为单位进行传输,每个数据报都是独立处理的,适合一次性传输小量数据或者对实时性要求高的应用。

UDP因其上述特性,通常被应用于对实时性要求较高而可以容忍一定数据丢失的场景,比如在线视频流、网络游戏、VoIP(网络电话)、DNS查询等。在这些场景中,低延迟和高传输速度比数据的绝对完整性更为重要。

在这里插入图片描述

TCP

TCP,全称为传输控制协议(Transmission Control Protocol),是互联网协议套件中一个至关重要的传输层协议,设计用于在不可靠的网络上提供可靠的、面向连接的、基于字节流的通信服务。以下是TCP的一些关键特征和功能:

  1. 面向连接:在数据传输前,TCP要求通信双方通过三次握手过程建立一个连接。这个过程确保了双方都准备好进行通信,并且分配了资源。
  1. 可靠性:TCP通过序列号、确认应答、重传机制以及错误检测(使用校验和)来确保数据的可靠传输。如果数据包在传输过程中丢失、损坏或乱序,TCP会负责重新传输或排序。
  1. 流量控制:TCP使用滑动窗口协议来控制发送方的发送速率,防止接收方来不及处理而导致数据溢出。
  1. 拥塞控制:当网络出现拥塞时,TCP能够减缓发送速率,通过减少数据的注入来缓解网络压力,避免网络拥塞进一步恶化。
  1. 数据分块与重组:TCP将接收到的应用层数据分割成合适大小的数据段进行传输,并在接收端根据TCP报头中的信息将这些数据段重新组合成原始数据流。
  1. 全双工通信:建立的TCP连接允许数据在两个方向上同时传输,即双向通信。
  1. 连接终止:数据传输完毕后,TCP连接通过四次挥手的过程优雅地关闭,确保双方都知晓连接的结束并释放相关资源。

由于TCP提供了这些保证数据完整性和可靠性的机制,它被广泛用于需要高度可靠数据传输的应用,如Web浏览、电子邮件、文件传输等。然而,这种可靠性是以增加延迟和降低网络效率为代价的,因此在对实时性要求极高的应用(如某些在线游戏或实时音频、视频流)中,可能会选择使用UDP协议。

在这里插入图片描述
这里是两种协议的对比:
在这里插入图片描述

UDP和TCP的异同点

UDP(用户数据报协议)和TCP(传输控制协议)都是Internet协议套件中的传输层协议,负责在两台计算机之间提供端到端的通信服务。尽管它们服务于相同的基本目的,但它们的设计哲学和功能特性存在显著差异。以下是它们的主要异同点:

相同点

  1. 传输层协议:UDP和TCP都位于OSI模型的传输层,位于网络层之上,为应用层提供服务。
  2. 端口号:两者都使用端口号来标识源和目标应用程序,确保数据能够正确地送达对应的应用程序。
  3. 校验和:UDP和TCP报头中都包含校验和字段,用于基本的错误检测,确保数据的完整性。

不同点

  1. 连接性
  • TCP是面向连接的,通信双方在数据传输前必须通过三次握手建立连接,确保双方准备好进行通信。
  • UDP是无连接的,发送数据前不需要建立连接,数据报直接发送给接收方。
  1. 可靠性
  • TCP提供可靠的数据传输服务,通过序列号、确认应答、重传机制等确保数据包的顺序、无丢失、无重复。
  • UDP不保证数据的可靠传输,数据包可能丢失、重复或乱序到达,适用于对实时性要求高而不强调可靠性的应用。
  1. 传输模式
  • TCP是面向字节流的,将数据视为无结构的字节流,可以按需分割和重组数据。
  • UDP是面向数据报的,保留了数据包的边界,每个数据报作为一个整体发送和接收。
  1. 拥塞控制和流量控制
  • TCP具有复杂的拥塞控制和流量控制机制,能够根据网络状况动态调整发送速率,避免拥塞。
  • UDP没有内置的拥塞控制和流量控制机制,发送速率由应用层控制,可能加剧网络拥塞。
  1. 首部开销
  • TCP报头通常为20字节,包含更多的控制信息,如确认、序列号等。
  • UDP报头只有8字节,更简洁,开销小,适合小数据包传输。
  1. 应用场景
  • TCP适用于需要高度可靠性的应用,如Web浏览(HTTP)、电子邮件(SMTP/POP3/IMAP)、文件传输(FTP)等。
  • UDP适用于对实时性要求较高,可容忍一定数据丢失的应用,如在线游戏、VoIP、视频流、DNS查询等。

综上所述,UDP和TCP各有优势,适用于不同需求的网络通信场景。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 面试专区|【32道HDFS高频题整理(附答案背诵版)】
  • 2024 年 Python 基于 Kimi 智能助手 Moonshot Ai 模型搭建微信机器人(更新中)
  • 003.Linux SSH协议工具
  • 工具清单 - CI CD
  • GaussDB技术解读——GaussDB架构介绍(五)
  • 如何快速翻译pdf英文论文(5分钟就可以翻译一篇几十页的英文论文)
  • AI智能盒子助力中钢天源设备工厂升级安全防护
  • Docker 命令大全
  • Pgsql数据库之Linux环境备份Windows环境还原
  • 浅谈Java23种设计模式之结构型模式的几种使用场景
  • 计算机专业毕设-springboot论坛系统
  • C语言实现五子棋教程
  • 内核学习——6、timer的学习和使用
  • 聊聊分布式集群的基本概念
  • AI工具对音乐的影响
  • 【Leetcode】101. 对称二叉树
  • android 一些 utils
  • CentOS 7 防火墙操作
  • FastReport在线报表设计器工作原理
  • flask接收请求并推入栈
  • isset在php5.6-和php7.0+的一些差异
  • java8-模拟hadoop
  • js ES6 求数组的交集,并集,还有差集
  • Lucene解析 - 基本概念
  • MySQL用户中的%到底包不包括localhost?
  • Python 反序列化安全问题(二)
  • swift基础之_对象 实例方法 对象方法。
  • Vue UI框架库开发介绍
  • vue数据传递--我有特殊的实现技巧
  • 浏览器缓存机制分析
  • 前端js -- this指向总结。
  • 入门到放弃node系列之Hello Word篇
  • 使用docker-compose进行多节点部署
  • 试着探索高并发下的系统架构面貌
  • 硬币翻转问题,区间操作
  • 中文输入法与React文本输入框的问题与解决方案
  • 阿里云重庆大学大数据训练营落地分享
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (11)iptables-仅开放指定ip访问指定端口
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (三)elasticsearch 源码之启动流程分析
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (十三)MipMap
  • (数据结构)顺序表的定义
  • (一)基于IDEA的JAVA基础1
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 物件導向與老子思想 (OO)
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .net 7和core版 SignalR
  • .Net Core中Quartz的使用方法
  • .NET gRPC 和RESTful简单对比
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)