TCP协议与UDP协议区别点在哪?TCP UDP协议详解( 二 )


QQ普通会员就是使用的UDP协议进行传输数据!既然UDP协议自身没有确认机制,这个工作可以交给应用层的进程来完成(QQ)!大家使用QQ的时候,感觉出错的几率还是非常小吧!当然,把这个确认工作完全交给QQ自身来做,就直接导致了,QQ软件体积增大!
有些应用,对数据传输可靠性要求非常高,例如大家浏览网页,通过网页注册帐号、转帐等服务,这是不容许出错的,使用TCP协议能把出错的可能性降到最低(当然,网络自身很糟糕,TCP协议也没办法) 。但是,提供这种可靠服务,会加大网络带宽的开销,因为“虚拟信道”是持续存在的,同时网络中还会出现大量的ACK和FIN包!
因此,鱼和熊掌不可兼得,需根据实际情况选择传输协议,TCP协议提供了可靠的数据传输,但是其拥塞控制、数据校验、重传机制的网络开销很大,不适合实时通信,所以选择开销很小的UDP协议来传输数据 。
UDP 协议是无连接的数据传输协议并且无重传机制,会发生丢包、收到重复包、乱序等情况 。而对于数据精确性要求不高的状态数据以及视频数据,丢包的影响不大 。因为会不断收到新的包,丢失的个别包会有新的包来覆盖,所以只需在远程控制系统的通信部分自行处理乱序及重复包的问题,而对于丢包的问题一般不作处理 。但对于命令包这种需要精确收发的数据,可在程序的开发中加入丢包重发和超时丢弃的处理 。当然,如果开发的是对于实时性要求不高的事件型控制命令的传输,不希望发生指令的丢失也可以直接采用TCP协议 。TCP的重传机制正好适合这种情况 。
非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由 。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接 。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实 。非面向连接的协议也不能探测重复的和乱序的包 。标准的专业术语用“不可靠”来描述UDP 。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的
TCP和UDP都是传输层的协议!
例:应用层(QQ)物理连接层各自协议使用的常用端口:如http、https、tcp、udp、ftp等等 。
TCP:
FTP:21、Telnet:23、SMTP:25
UDP:
DNS:53、TFTP:69、SNMP:161、RIP:520
https:
http:80
简单的来说就是TCP协议传输还是比较可靠的,而UDP协议传输却是在少量数据传输速度上占得优势,即便前者一个为面向连接一个面向非连接,在不同的传输环境发挥不一样的优势 。

推荐阅读