TCP & UDP的区别

有两种类型的Internet协议(IP)流量。它们是TCP传输控制协议UDP用户数据报协议。TCP是面向连接的 - 一旦建立连接,数据就可以双向发送。UDP是一种更简单的无连接Internet协议。使用UDP将多个消息作为数据包发送到数据包中。

比较图表

TCP与UDP比较图表
  TCP UDP
首字母缩略词 传输控制协议 用户数据报协议或通用数据报协议
连接 TCP是面向连接的协议。 UDP是一种无连接协议。
功能 作为消息使得它的方式横跨互联网从一台计算机到另一台。这是基于连接的。 UDP也是用于消息传输或传输的协议。这不是基于连接的,这意味着一个程序可以将一大包数据包发送到另一个程序,这将是关系的结束。
用法 TCP适用于要求高可靠性的应用,传输时间相对不太重要。 UDP适用于需要快速,高效传输的应用程序,例如游戏。UDP的无状态特性对于回答来自大量客户端的小型查询的服务器也很有用。
使用其他协议 HTTP,HTTP,FTP,SMTP,Telnet DNS,DHCP,TFTP,SNMP,RIP,VOIP。
订购数据包 TCP 按指定的顺序重新排列数据包。 UDP没有固有的顺序,因为所有数据包都是相互独立的。如果需要订购,则必须由应用程序层进行管理。
转移速度 TCP的速度比UDP慢。 UDP速度更快,因为未尝试进行错误恢复。这是一个“尽力而为”的协议。
可靠性 绝对保证传输的数据保持不变,并按照发送的顺序到达。 无法保证发送的消息或数据包完全无法访问。
标题大小 TCP标头大小为20个字节 UDP标头大小为8个字节。
常用标题字段 源端口,目标端口,校验和 源端口,目标端口,校验和
流式传输数据 数据作为字节流读取,没有区别指示被发送到信号消息(段)边界。 数据包是单独发送的,只有在到达时才会检查其完整性。数据包具有明确的边界,这些边界在接收时受到尊重,这意味着接收器插槽上的读取操作将产生最初发送的整个消息。
重量 TCP很重。在发送任何用户数据之前,TCP需要三个数据包来建立套接字连接。TCP处理可靠性和拥塞控制。 UDP很轻巧。没有消息排序,没有跟踪连接等。它是在IP之上设计的小型传输层。
数据流控制 TCP执行流量控制。在发送任何用户数据之前,TCP需要三个数据包来建立套接字连接。TCP处理可靠性和拥塞控制。 UDP没有流控制选项
错误检查 TCP执行错误检查和错误恢复。错误的数据包从源重新传输到目的地。 UDP执行错误检查,但只是丢弃错误的数据包。未尝试错误恢复。
字段 1.序列号,2。响应号,3。数据偏移,4。保留,5。控制位,6。窗口,7。紧急指针8.选项,9。填充,10。检查总和,11。源端口, 12.目的港 1.长度,2。源端口,3。目标端口,4。检查总和
承认 致谢部分 没有确认
握手 SYN,SYN-ACK,ACK 无握手(无连接协议)

内容:TCP与UDP

  • 1 数据传输功能的差异

    • 1.1 可靠性
    • 1.2 订购
    • 1.3 连接
    • 1.4 转移方法
    • 1.5 错误检测
  • 2 TCP和UDP如何工作
  • TCP和UDP的3种不同应用
    • 3.1 游戏服务器的TCP与UDP
  • 4 参考文献

数据传输功能的差异

TCP 确保从用户到服务器的可靠和有序的字节流传递,反之亦然。UDP不专用于端到端连接,并且通信不检查接收器的准备情况。

可靠性

TCP更可靠,因为它在部件丢失的情况下管理消息确认和重传。因此绝对没有丢失的数据。UDP不确保通信已到达接收器,因为不存在确认,超时和重传的概念。

订购

TCP传输按顺序发送,并以相同的顺序接收。如果数据段以错误的顺序到达,TCP会重新排序并提供应用程序。在UDP的情况下,当到达接收应用程序时可能不保持发送的消息序列。绝对没有办法预测接收消息的顺序。

连接

TCP是一种重量级连接,需要三个数据包用于套接字连接,并处理拥塞控制和可靠性。UDP是在IP上设计的轻量级传输层。没有跟踪连接或消息排序。

转移方法

TCP将数据作为字节流读取,并将消息传输到段边界。UDP消息是单独发送的数据包,并在到达时检查其完整性。数据包没有定义边界的数据包。

错误检测

UDP在“尽力而为”的基础上工作。该协议支持通过校验和进行错误检测,但是当检测到错误时,数据包将被丢弃。不尝试重新传输数据包以从该错误中恢复。这是因为UDP通常用于时间敏感的应用程序,如游戏或语音传输。从错误中恢复将毫无意义,因为在收到重新传输的数据包时,它将没有任何用处。

TCP使用错误检测和错误恢复。通过校验和检测错误,如果数据包是错误的,则接收方不会对其进行确认,这会触发发送方的重传。该操作机制称为具有重传(PAR)的肯定确认。

TCP和UDP如何工作

通过三次握手建立TCP连接,这是一个启动和确认连接的过程。一旦建立连接,就可以开始数据传输。在传输之后,通过关闭所有建立的虚拟电路来终止连接。

UDP使用简单的传输模型,没有隐含的握手对话,以保证可靠性,排序或数据完整性。因此,UDP提供了不可靠的服务,并且数据报可能无序到达,出现重复或丢失而不另行通知。UDP假定在应用程序中不需要或执行错误检查和纠正,从而避免了在网络接口级别进行此类处理的开销。与TCP不同,UDP与分组广播(向本地网络上的所有用户发送)和多播(发送给所有用户)兼容。

TCP和UDP的不同应用

Web浏览,电子邮件和文件传输是使用TCP的常见应用程序。TCP用于控制段大小,数据交换速率,流量控制和网络拥塞。在网络接口级别需要纠错功能的情况下,TCP是首选。UDP主要用于时间敏感的应用程序以及回答来自大量客户端的小型查询的服务器。UDP与分组广播兼容 - 向网络上的所有人发送和多播 - 发送给所有用户。UDP通常用于域名系统,IP语音,普通文件传输协议和在线游戏。

游戏服务器的TCP与UDP

对于大型多人在线(MMO)游戏,开发人员通常必须在使用UDP或TCP持久连接之间做出架构选择。TCP的优点是持久连接,可靠性,并且能够使用任意大小的数据包。在这种情况下,TCP的最大问题是其拥塞控制算法,该算法将数据包丢失视为带宽限制的标志,并自动限制数据包的发送。在3G或Wi-Fi网络上,这可能会导致严重的延迟。

经验丰富的开发人员ChristofferLernö 权衡利弊,并建议以下标准选择是否为您的游戏使用TCP或UDP:

  • 当偶然延迟时,可以使用HTTP over TCP来进行偶尔的,客户端启动的无状态查询。
  • 如果客户端和服务器都独立发送数据包但偶尔会有延迟,那么使用持久性普通TCP套接字(例如在线扑克,许多MMO)。
  • 如果客户端和服务器都可以独立发送数据包并且偶尔的延迟不正常,则使用UDP(例如,大多数多人动作游戏,一些MMO)。

参考

  • 维基百科:传输控制协议
  • 维基百科:用户数据报协议
  • 用于游戏服务器的UDP与TCP
  • 传输控制协议

转载来源:https://www.diffen.com/difference/TCP_vs_UDP

TCP UDP的区别相关推荐

  1. Linux网络编程(网络七层协议,TCP/IP,三次握手四次挥手,TCP/UDP的区别)

    1.OSI 7层网络模型 1.网络七层协议 (1)OSI定义了网络互连的七层框架(物理层.数据链路层.网络层.传输层.会话层.表示层.应用层),即ISO开放互连系统参考模型. (2)各层功能定义 这里 ...

  2. tcp udp区别优缺点_CCNA必懂篇,传输层协议TCP/UDP的区别和作用

    我们说会话层建立连接之后,就要建立传输层连接,那么为什么要建立这个传输层连接呢,我们先看一下传输层的作用是什么? 传输层的主要作用是处理我们的数据在发送的时候产生的数据包错误,数据包次序不对,数据丢失 ...

  3. socket协议 http协议的区别,长短连接,tcp/udp协议区别

    socket http协议的区别 简单来说,我们平常浏览的网页如果已http://开头的都是http协议传输到我们的浏览器的,而http是基于socket之上的,就是说http携带数据,socket提 ...

  4. 网络编程(Tcp/Udp实现聊天、文件上传)

    网络编程 1.1 概述 计算机网络是指将位置不同的多台[计算机 通过通信线路连接起来,实现资源共享和信息传递的计算机系统 1.2 网络通信的要素 ip和端口 网络通信协议(tcp/udp) 1.3 I ...

  5. TCP和UDP的区别(转)

    TCP协议与UDP协议的区别     首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信 ...

  6. 5.TCP和UDP的区别

    定义:TCP(Transmission ControlProtocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型 ...

  7. TCP/IP和UDP的区别

    TCP/IP 和UDP最大的区别就是:TCP/IP是面向连接的,UDP是非面向连接的.通俗一点说就是:TCP/IP管发管到,UDP管发不管到.因此,在安全性方面来说,TCP/IP更具有优越性. 第二: ...

  8. php tcp和udp的区别,HTTPS 和 HTTP、UDP 和 TCP 的区别

    (工作层):在OSI网络模型中,HTTP工作于应用层,而HTTPS工作在传输层. (连接端口):HTTP标准端口是80,而HTTPS的标准端口是443. (传输方式):HTTP是超文本传输协议,信息是 ...

  9. TCP三次握手四次挥手 TCP/UDP区别

    三次握手 第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认:  SYN:同步序列编号(Synchronize Sequence Numbe ...

最新文章

  1. Exchange server 2010 beta安装部署流程
  2. 支持向量机: Kernel
  3. svn 413 Request Entity Too Large 错误的解决方法
  4. vue install 报错 This is a problem related to network connectivity.
  5. EF6 如何判断DataContext有修改,以及如何放弃修改
  6. e3是合法浮点数吗_下面4个选项中,均是合法浮点数的选项是?
  7. 苹果员工出逃现象严重:人才挽留成大难题
  8. Python项目:生成微信好友头像拼接图
  9. linux让指定文件具有sudo的权限,Linux学习笔记——使用指定的用户权限执行程序——sudo...
  10. JavaFX桌面应用开发-Button(按钮)与事件
  11. Elasticsearch:Simulate index API
  12. c语言中函数的知识点总结,c语言函数知识点总结
  13. 去八达岭看红叶(攻略)
  14. Excel报错“不能使用对象链接和嵌入”并无法粘贴数据可能和输入法有关
  15. 重庆计算机专业在职研究生,重庆师范大学在职研究生计算机专业教学方式
  16. 手机/平板上如何进行网页过滤
  17. 没有选择的选择才能坚持和专注
  18. java对象克隆效率_fastclone
  19. objective-c语言特点及基础(相较于C语言)
  20. 如何让项目开发提速?

热门文章

  1. Linux/Ubuntu: 命令行任务(To-Do List)管理 task - A command line todo manager
  2. 国外PHP学习网站书籍资料汇总
  3. PHP 查看系统文件时间戳
  4. 人工智障学习笔记——强化学习(5)DRL与DQN
  5. selinux + sudo +ssh +passwd
  6. cookie 原理及应用
  7. 多存多取问题 java
  8. 单循环 输入一行星花
  9. centos安装python3.8
  10. git-撤销工作与的修改-回退缓存区的修改