TCP与UDP的区别及适用场景
TCP(Transmission Control Protocol,传输控制协议)与UDP(User Datagram Protocol,用户数据报协议)都是OSI七层模型中的传输层协议,他们的区别主要体现在以下这几个方面
(1)是否面向连接
【1】TCP是面向连接的,即发送数据前需要与目标主机建立连接。
【2】UDP面向无连接的,发送数据前不需要建立连接。
(2)是否提供可靠交付
【1】TCP在传输数据之前,需要三次握手来建立连接,并且通过数据校验、拥塞控制、重传控制、滑动窗口和确认应答等机制来实现可靠交付。数据传输过程中,数据无丢失,无重复,无乱序。
【2】UDP不提供可靠交付,只有通过检验和去丢弃那些不完整的报文,尽最大努力来保证交付的可靠性。
(3)工作效率
【1】前面提到TCP传输数据的控制非常多,这也导致了TCP网络开销大,工作效率相对低下,对系统的资源要求也比较高。
【2】UDP传输控制简单,因此工作效率相对高,对系统资源的要求偏低。
(4)实时性
【1】TCP传输数据的控制程序较多,大幅度降低了数据传输的实时性。
【2】UDP协议简单,数据实时性较高。
(5)安全性
【1】TCP传输机制多,容易被利用,例如DOS、DDOS攻击,因此在安全性上,不如UDP。
【2】UDP没有TCP这么多机制,被利用的机会就会少很多,但UDP不是绝对安全,也会被攻击。
TCP与UDP的适用场景
TCP:
对数据传输的质量有较高要求,但对实时性要求不高。比如HTTP,HTTPS,FTP等传输文件的协议以及POP,SMTP等邮件传输的协议,应选用TCP协议。
UDP:
只对数据传输的实时性要求较高,但不对传输质量有要求。比如视频传输、实时通信等,应选用UDP协议。