TCP协议协议特点:面向连接的可靠传输,报头20字节,存在流量控制机制(超时重发,丢弃重复数据,检验数据,分段排序,拥塞处理,滑动窗口机制,保证数据能从一端传到另一端 。)
- TCP要保证丢失的package会被再次重发,确保对方能够收到 。
- 三次握手,访问不丢包,保持准确性,但是流量开销大 。
- TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复 。
为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即 ACK) 。如果在某个时限内未收到相应的 ACK,将重新传送数据包 。如果网络拥塞,这种重新传送将导致发送的数据包重复 。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它 。
UDP协议协议特点:无连接、报头8个字节,无法保证对端接收到数据的完整性 。通过UDP协议传输到达目的地的时间和内容的完整性都不能保证 。
- 不可靠协议,对端收不收到包是不管的,可能造成丢包,但是开销小 。
如何决定应用程序是使用TCP还是UDP?TCP适合实时性要求不高,但要求内容要完整传输的应用 。相比而言,UDP由于无连接、无重传确认,所以传输效率高、延时小,适合实时性要求高的应用,如游戏服务器,音频,视频等;另外,由于不用维持大的并发量,所以适合巨量服务的server,加上合适的时间控制,可以用来设计更大的并发服务器;再者就是,UDP可以更高效的利用网络带宽 。
举个例子:
视频流用UDP:若是链路中途丢包了导致丢了一两个帧,不影响到观影体验 。视频传输不需要那么高的准确性,偶尔丢个包也没什么问题 。
可以在应用层面去解决UDP丢包乱序的问题:重传也由上层协议来控制 。
1. jitterbuffer
2. RTP
【为何视频流/网游大都使用UDP协议,而不用TCP协议?】3. MTU
UDP 在许多方面非常有效 。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用 UDP 。ICQ 短消息使用 UDP 协议发送消息 。
许多程序将使用单独的TCP连接和单独的UDP连接 。重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送 。
国人几乎都是用的QQ,在建立连接阶段,使用的是面向连接的TCP协议,通过三次握手来完成;然后,在文字数据传输阶段,使用的是UDP协议,但需要中间服务器转发(估计是使用了connect()的UDP,QQ离线发送/接收数据的基础) 。而音视频数据的发送一定要使用UDP协议,因为一般的客户可以容忍稍微模糊(略有缺失的数据块)的声音或视频,但估计不会接受一会断开,一会连接(因为TCP容易断线)的音视频;而文件传输则使用了P2P的协议,当前大多P2P使用的UTP协议也是基于UDP的,因为使用TCP的话会浪费大量的带宽 。
推荐阅读
- 手机怎样给视频添加文字?点击这个按钮,一键自动添加
- 最近淘宝流量访客降低是什么原因 淘宝店铺流量低的原因
- 店铺一直没流量怎么办 网店没有流量的原因
- 茶字流变史,恋上武夷茶史
- 查询个人档案的流程
- 流量纵横多少钱 淘宝流量纵横有什么用
- 佩戴玉器流传至今作用和功效
- 淘宝店铺老店新开怎么获取流量 淘宝网店怎么才有流量
- 二手轿车过户流程有哪些
- 超级推荐能带来手淘首页的流量吗 淘宝的超级推荐有用吗