TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
是否可靠 | 可靠 | 不可靠 |
连接对象个数 | 只能一对一通信 | 支持一对一,一对多,多对一,多对多交互通信 |
传输方式 | 面向字节流 | 面向报文 |
首部开销 | 首部开销较大,最小20字节,最大60字节 | 首部开销小,仅8字节 |
信道是否可靠 | 可靠的全双工信道 | 不可靠信道 |
适应场景 | 适用于可靠传输的应用,如文件 | 适用于实时应用,如视频会话 |
可靠,稳定的。
在数据传输前会有三次握手来建立连接,而且在数据传输时,有确认,窗口,重传,
拥塞控制等机制。
慢,效率低,占用系统资源高,易被攻击。
在传输前,需要建立连接,在传输时确认机制,重传机制,拥塞机制等,这些都需
要花费大量时间。同时每个连接都会占用系统的CPU,硬件等资源。而且由于三次
握手的机制,这也导致TCP容易被人进行DOS,DDOS,CC等攻击。
快,比TCP稍安全
UPD没有TCP的握手,确认,窗口,重传,拥塞等机制,所以它传输时十分快,同时,
没有TCP的这些机制,它在被人利用的漏洞上就要少一些。但是它也是可以被攻击的,
如:UDP Flood
不可靠,不稳定
因为它没有上面的机制,所以在传输过程中,如果网络不稳定,则很容易丢包
那么我们什么时候该用TCP,什么时候该用UDP呐?
当我们需要数据准确无误的传输给对方时,我们就应该用TCP,比如一些文件的传输。
当我们对通讯质量要求不高,只需要快时,则就可以用UDP,比如视频通话。