TCP与UDP对比、区别、优缺点及应用场景

news/2024/5/18 14:26:38 标签: udp, tcp/ip, 网络

TCP与UDP对比、区别、优缺点及应用场景

TCP与UDP

  • TCP与UDP对比、区别、优缺点及应用场景
  • 1.相同点
  • 2.不同点
  • 3.优缺点
  • 4.应用场景

1.相同点

  • tcp与udp都是传输层协议,直接与应用层交互。

2.不同点

  1. TCP面向连接,在发送数据之前,会先发送报文确定双方能通信并且双方创建一些资源来保障和控制接下来的通信。
    想了解具体连接过程点击这里!

    UDP面向无连接,不事先与对方沟通。不管对方存在与否,都能直接发送到互联网中。

  2. TCP是一对一通信。
    之所以是一对一通信,也正是因为他是面向连接的。就像打电话,如果已经和一个人在通信,那就不能在接听另一个电话。

    UDP可以一对一、一对多、多对一通信。
    因为是无连接协议,每发送一次数据就是一次单独的通信。

  3. TCP是以数据流的方式传输数据
    UDP是以数据报文的方式传输数据

    千万不要把数据流理解为在网络中以一点一点的数据发送,这里的数据流是指可以按不同的大小收发数据,在网络中一个包的大小还是和UDP差不多的

    数据流的原理:通信双方都有发送缓冲区和接收缓冲区。举个例子,A分成两次向B发送数据,这两次数据不是直接发送到网络,而是先放到发送缓冲区,TCP在处理的时候,是从发送缓冲区取数据,再发送。这样发送缓冲区就好像一个流。

    数据报:UDP协议没有真正意义上的发送缓冲区,所以,在每次发送数据时,就直接发送到网络中,写的啥都在这一个数据报中(不考虑网络层拆分)。

  4. TCP保证可靠性传输
    保证机制:面向连接,确认应答机制,超时重传机制,滑动窗口,拥塞控制,差错校验机制。
    想详细了解可靠性点这里
    UDP不能保证可靠性

3.优缺点

优缺点都是相较于对方

  • TCP:
    优点:保证数据有序可靠的交付给应用层
    缺点:开销大,速度慢,
  • UDP:
    优点:传输速率快,能广播和组播
    缺点:不可靠,不能保证数据到达接收方,也不能保证数据的正确性

4.应用场景

TCP:对数据的正确性要求高、不用频繁的交互数据的应用。
UDP:对实时性要求高的应用。如视频通话,游戏。当然,一般选用UDP做这些东西时,都会在应用层保证数据的可靠性,不易开发。

http://www.niftyadmin.cn/n/1371650.html

相关文章

promise进阶语法

封装promise function pAjax(options{}){return new Promise(function (resolve,reject){$.ajax({url:options.url,data:options.data,async:options.async,dataType:options.dataType,type:options.type,success(res){resolve(res)},error(err){reject(err)}})}) }使用封装后…

Mysql事务超详细(MVCC实现机制详解)

Mysql事务(MVCC实现机制详解)事务什么是事务事务的四大特性事务的并发问题事务的隔离等级MVCC什么是MVCCMVCC实现所用到的技术及手段1. 两个隐藏列trx_id、roll_pointer2. 事务版本号3. 回滚日志(undo log)4. 读视图(r…

Linux的io多路复用

Linux的io多路复用 什么是多路io复用 在利用socketTCP通信的时候,会有两个地方阻塞,一个是accept()监听时,还有一个是recv()接收数据时。监听是监听新客户端的连接,因为无法判断什么时间会有客户端连接,所以这个函数要一个线程实…

promise+async

async和await知识看起来像同步代码&#xff0c;实际上是异步代码 <script src"http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> function pAjax(options{}){return new Promise(function (resolve,reject){$.ajax({url:options…

LeetCode-75颜色分类

颜色分类 难度&#xff1a;中等 给定一个包含红色、白色和蓝色&#xff0c;一共 n 个元素的数组&#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 此题中&#xff0c;我们使用整数 0、 1 和 2 分别表示红色、白…

元字符 基础元字符 边界元字符 限定符

/\s/ 字符串需要有一个空格 //字符串需要有一个空格 const res/\s/ console.log(res.test(" ")); console.log(res.test("1222")); console.log(res.test("1222 "));**/\S/**字符串需要有一个非空格 const res/\S/ console.log(res.test("…

LeetCode-78 子集

子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 class Solution { public:vector<vector<int>> res;void fun(vector<in…