TCP与UDP的区别
TCP:
TCP是面向连接的,可靠的数据传输协议;
保证数据的正确性;
保证数据的顺序;
对系统资源的要求多;
开销大;
可传输大量的数据,传输速度较慢。
UDP:
UDP是面向非连接的,不可靠的数据传输协议;
UDP存在丢包的情况;
不保证数据的顺序;
对系统资源要求少;
开销小;
可传输少量数据、传输速度快;
由于不必进行收发数据的确认,因此实时性更好。
TCP与UDP的选择
如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。(许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。)
很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。
TCP可靠性