TCP协议(传输控制协议)
- TCP是面向连接的传输协议,建立连接需要经历三次握手,断开连接时需要经过四次挥手。传输数据的时候需要回复ACK包确认,多种机制保证了数据能够正确到达。
- TCP协议是面向字节流的协议。
- TCP协议是可靠传输,应用于文件传输,重要状态更新等场景。
UDP协议(用户数据报协议)
- UDP是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单的把数据丢到网络中,不需要ACK包确认。
- UDP协议是面向数据报的协议。
- UDP协议是不可靠传输,应用于对告诉传输和实时性要求比较高的通讯领域,如:视频传输,语音传输。UDP协议还可用于广播。
从上面的对比来看,似乎TCP更优一筹。但是事实上并不是这样子的。
如果只考虑可靠性,TCP的确比UDP好。但UDP在结构上比TCP更加简洁,不会发送ACK的应答消息,也不会给数据包分配Seq序号,所以UDP的传输效率有时会比TCP高出很多,编程中实现UDP也比TCP简单。
UDP 的可靠性虽然比不上TCP,但也不会像想象中那么频繁地发生数据损毁,在更加重视传输效率而非可靠性的情况下,UDP是一种很好的选择。比如视频通信或音频通信,就非常适合采用UDP协议;通信时数据必须高效传输才不会产生“卡顿”现象,用户体验才更加流畅,如果丢失几个数据包,视频画面可能会出现“雪花”,音频可能会夹带一些杂音,这些都是无妨的。
与UDP相比,TCP的生命在于流控制,这保证了数据传输的正确性。
最后需要说明的是:TCP的速度无法超越UDP,但在收发某些类型的数据时有可能接近UDP。例如,每次交换的数据量越大,TCP 的传输速率就越接近于 UDP。