大家好,我是前端西瓜哥,今天来聊聊 TCP 和 UDP 的区别。

TCP 和 UDP 都是 TCP/IP 协议簇中的比较有代表性的 传输层协议。这里的传输层负责为应用程序提供端对端的通信服务。

TCP,全称 Transmission Control Protocol,中文为传输控制协议,是一种 面向连接的、可靠的、基于字节流的传输层通信协议

TCP 需要先在端到端进行正式的连接后,才开始传输真正的数据,且有重传等机制保证数据能够可靠地收发。

UDP,全称 User Datagram Protocol,中文为用户数据报协议,它是一种无连接的面向数据报的协议。

是否面向连接

TCP 是面向连接的,在发送真正的数据前,需要先建立 TCP 链接,即我们常说的 TCP 三次握手。这时数据就可以在两端之间进行任意方向的传输。如果要断开连接,也要进行 TCP 四次挥手。

UDP 则是无连接的,知道 IP 地址后,直接就将数据发送过去了,也不做数据报文的拆分和拼接。

是否可靠

TCP 是可靠的连接,会给每个 TCP 包设置序号,来确保消息发送的 顺序正确

接收端接受数据后会返回 ACK 确认,客户端如果一段时间没收到 ACK,会认为数据可能丢包了,就会进行重传,这样就能 确保数据是完整的

TCP 头部还有一个校验和(checksum)来确定数据是否因为信号突变产生出错,如果出错就丢掉。UDP 也可以使用校验和,不过它是可选的。

UDP 不需要额外建立连接。因为没有重传机制,所以不保证消息能成功地发送给对方。发送端发出 UDP 数据后,数据不会进行备份,因为 UDP 不会重发。

UDP 不保证发送的数据的顺序,基本上是乱序的。

速度

TCP 需要建立连接,并带有校验和重传机制,所以速度会相对较慢。

UDP 很快,因为它是自由的。

是否支持广播

广播(broadcast)是指将信息数据包发往指定网络范围内的所有设备。

TCP 不支持广播,只能在固定的两端进行收发。

UDP 支持广播。

传输方式

TCP 面向字节流的。所谓字节流,就是应用层的一个完整的消息,会被 TCP 拆分和组合,放到 TCP 包里进行发送。

相邻两个数据的边界需要应用层自己来确定。比如 HTTP/1 通过换行来切割头字段,并通过 Content-Length 来确定请求主体的长度,来确定截断边界。

UDP 是面向报文的,不会对应用层完整的消息进行拆分,直接放到 UDP 包里。一个 UDP 就是一个完整的数据。

场景

UDP 的优点是快,不需要做额外的建立连接工作,且减少了额外开销,所以适合实时性强的场景。常见的场景有

  1. 流媒体(当然也有些流媒体实时性要求不高)

  2. 高实时性的多人竞技游戏

  3. 音视频通话

  4. DNS 查询

TCP 的优点是数据可靠,适合要求质量的场景。绝大多应用软件都使用 HTTP 请求,而 HTTP 是基于 TCP 的。

结尾

TCP 可靠,UDP 快,这是它们最大的不同。

我是前端西瓜哥,欢迎关注我,学习更多前端知识。

TCP 和 UDP 有什么区别?相关推荐

  1. TCP和UDP协议的区别以及原理

    TCP和UDP协议的区别以及原理 该文章是学习了B站up主的视频做的总结,讲的很通俗易懂,首先感谢博主的分享.视频地址:https://www.bilibili.com/video/BV1kV411j ...

  2. TCP和UDP的详细区别

    TCP和UDP的详细区别 秋招季,总结一波TCP和UDP详细的区别以及TCP相关,哦,除了卖萌我也喜欢分享. 1.      TCP是面向连接的,而UDP是无连接的. 连接的三次握手和断开连接的四次挥 ...

  3. TCP与UDP之间的区别

    TCP和UDP区别 OSI 和 TCP/IP 模型在传输层定义两种传输协议:TCP(或传输控制协议)和 UDP(或用户数据报协议). UDP UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠 ...

  4. (转)TCP和UDP之间的区别

    TCP和UDP区别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快 OSI 和 TCP/IP 模型在传输层定义两种传输协 ...

  5. TCP与UDP特点与区别

    TCP/IP协议 IP地址(IP Address) 计算机分布在世界各地,要想和它们通信,必须要知道确切的位置.确定计算机位置的方式有多种,IP 地址是最常用的,例如,114.114.114.114 ...

  6. TCP和UDP编程的区别,步骤

    TCP和UDP编程有一些不同的地方总结如下; TCP:  TCP编程的服务器端一般步骤是: 1.创建一个socket,用函数socket(): 2.设置socket属性,用函数setsockopt() ...

  7. TCP与UDP有哪些区别?

    (1)首先,TCP和UDP是TCP/IP体系结构中的传输层中很主要的两个协议,UDP的全称是用户数据报协议,TCP的全称是传输控制协议 (2)区别有五个方面 ①有无连接: 使用UDP协议的通讯双方是随 ...

  8. 端口 0-65536 TCP和UDP端口的区别

    1.端口只有0-65535. 这个跟TCP.UDP无关. 2.TCP/UDP有独立的端口空间.比如某个应用使用了TCP的1000端口,另一个也可以使用UDP的1000端口,相互独立. 3.UDP,TC ...

  9. CAN转以太网的通道工作模式TCP和UDP有哪些区别?

     1.TCP UDP简介 TCP是面向连接的协议,在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源. TC ...

  10. 图文并茂,讲解TCP和UDP协议的原理以及区别

    TCP和UDP协议的区别以及原理 最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结. 一.作用 首先,tcp和udp都是工作在传输层,用于程序之间传输数据的.数据一般包含:文件类型,视 ...

最新文章

  1. 漫谈五种IO模型(主讲IO多路复用)
  2. 团队开发中的 Git 实践
  3. 使用Truffle时遇到的问题和解决方法
  4. 1.6-puppet测试证书
  5. 什么是Mac上的JDK路径? [重复]
  6. python-print
  7. Ganglia:分布式监控系统
  8. 洛谷 - P3975 [TJOI2015]弦论(后缀自动机)
  9. [汇编语言]实验二:字的传送
  10. 每天打卡心情好(洛谷P1664题题解,Java语言描述)
  11. golang flag.Parse包
  12. 高性能JavaScript 笔记之 第2章 数据访问
  13. Response.Redirect导致session丢失的解决办法
  14. leetcode 11 Contain with most water
  15. latex 图片_【包学包会】【LaTeX篇】TeXLive+VsCode+TexStudio
  16. 同步十二进制加法计数电路设计(D触发器)
  17. AndroidQ适配之存储权限的变更
  18. linux关闭云锁服务器,安全软件之linux系统下云锁简单的安装方法
  19. [接口测试]POST请求提交数据的三种方式及Postman实现
  20. windows bat脚本教程

热门文章

  1. linux内核声卡管理,linux下声卡驱动简介
  2. php前台输出繁体,利用PHP输出控制功能做简繁体转换_php
  3. 管螺纹如何标注_天天和螺纹打交道,你知道有多少种螺纹吗,原来螺纹种类这么乱...
  4. H3CSE20200603班-SSL V*N
  5. swf转换mp4 linux,转换FLA文件,以.swf文件在Linux上
  6. 获取China大陆IP段的范围
  7. 华硕Android原始密码,华硕(ASUS)路由器默认密码是多少? | 192路由网
  8. java 计算器 junit测试_Java—Junit单元测试
  9. macbook运行移动硬盘中windows及bootcamp下载出错问题的解决
  10. 计算机无法安装蓝牙驱动,W7系统蓝牙驱动安装失败的原因分析与解决方法