下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

TCP和UDP有何区别?联系?

作者:课课家教育     来源: http://www.kokojia.com点击数:904发布时间: 2018-01-20 10:00:08

标签: TCPUDP通信开发

软考,您想通过吗?一次通过才是硬道理

  很多文章都说TCP协议可靠,UDP协议不可靠。为什么前者可靠,后者不可靠呢?既然UDP协议不可靠,为什么还要使用它呢?所谓的TCP协议是面向连接的协议,面向连接是什么?既然对TCP和UDP有诸多的不了解,那么我们就一起来学习吧。
  1、面向连接的TCP
  TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
  总之,TCP要建立连接必须经过三次握手。
TCP和UDP有何区别?联系?_TCP_UDP_通信_开发_课课家教育  优点:
  1)面向连接的传输
  2)数据传输稳定可靠
  3)端到端的通信
  4)全双工方式
  5)以字节为单位传输
  缺点:传输速度不够快
  2、面向无连接的UDP
  “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。
  UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!每个数据包的大小限定在64K以内!
  优点:
  1)传输速度快
  2)效率高
  缺点:数据包可能会丢失
  3、TCP和UDP为什么会共存?
  1)大家要知道,一种物理线路,单位时间内,能够创建的“虚拟信道”是有限的。
  2)使用TCP协议传输数据,当数据从A端传到B端后,B端会发送一个确认包(ACK包)给A端,告知A端数据我已收到。UDP协议就没有这种确认机制。这就是为什么说TCP协议可靠,UDP协议不可靠。
  QQ普通会员就是使用的UDP协议进行数据传输数据。既然UDP协议自身没有确认机制,这个工作可以交给应用层的进程来完成。大家使用QQ的时候,感觉出错的几率还是非常小的吧。当然把这个确认工作完全交给QQ自身来做,就直接导致了,QQ软件体积增大。、有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册账号、转账等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法)。但是,提供这种可靠服务,会加大网络带宽的开销,因为“虚拟信道”是持续存在的,同时网络中还会出现大量的ACK和FIN包。
  因此,鱼和熊掌不可兼得,需根据实际情况选择传输协议。TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据。
  UDP协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理。但对于命令包这种需要精确收发的数据,可在程序的开发中加入丢包重发和超时丢弃的处理。当然,如果开发的是对于实时性要求不高的事件控制命令的传输,不希望发生指令的丢失可以直接采用TCP协议。TCP协议的重传机制正好适用这种情况。
  非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP是不可靠的连接。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包。标准的专业术语用“不可靠”来描述UDP。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的。
  正因为UDP协议没有连接的过程,所以它的通信效果很高;正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发送消息,因此有时会出现收不到消息的情况。TCP协议和UDP协议各有所长、各有所短,适用不同于要求的通信环境。

赞(25)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程