TCP与UDP的区别
TCP、UDP的话是传输层的两个协议,传输层主要是为网络中两台主机间进程的通信提供的服务的。
1. TCP是面向连接的,也就是说使用TCP协议之前首先要建立连接,数据传输完毕以后,释放连接;UDP的话是无连接的,也就是说在发送数据之前,无需建立连接。
2. TCP提供的是可靠交互,TCP的话通过确认重传机制来实现这种可靠交互;UDP的话提供的是不可靠交互,也就是尽最大努力交互。
3. TCP是以字节流的形式发送数据的;UDP发送数据的形式是一个个UDP数据报(也就是说网络层传给我什么ip数据报,添加UDP首部之后就直接发送,而没有再去拆分)
4. TCP提供了相应的流量控制,TCP是利用的滑动窗口机制来实现流量控制的(发送方的发送窗口应该小于接收方的接收窗口值,这样就可以避免发送方发送数据太快,导致接收方来不及接收 );
5. TCP还提供了相应的拥塞控制(拥塞控制:譬如说路由器缓存数据的能力是有限的,如果过多的数据注入到网络里面,就会导致路由器来不及转发数据而导致数据丢失,或者来不及处理导致超时重传),TCP就是用了一些拥塞控制的方法,譬如说满开始啊、快重传啊、快恢复啊来笔便这种拥塞控制。
6. UDP的话就没有流量控制和拥塞控制。
TCP与UDP的适用场景
TCP发送数据之前要建立连接,提供的是可靠交互、而且也提供了相应的流量控制和网络拥塞控制,而UDP的话这些都没有,所以说UDP的数据传输效率是要比TCP的数据传输效率高的。
所以说:
- 如果对传输效率要求不是那么高,但是对可靠性要求高的话应该选择TCP协议。譬如说FTP、HTTP还有SMTP都是基于TCP协议的,他们的话就是对数据的准确性要求高,速度的话慢一点没关系
- 但是如果对数据传输效率要求高但是准确性要求不高的话就可以选择UDP协议,譬如说在线视频啊、语音啊这些实时性要求高,但是偶尔丢包的话还是可以接受的。