陪伴而非守候
UDP比TCP快这句话本身是非常不严谨的。已经构造好的数据包在链路上传播时,路由器是不会管你传输层使用了什么协议的(除了出于特殊目的,需要进行流量审查和端口屏蔽),所以理论上UDP和TCP封包的传输时延是一样的。那么让上面那句话显得有道理的,只能是加上了传输时延以外的时延后的情况。不过这个问题从时延来想的话不太合适。从UDP和TCP的开销来看,UDP头部占8个字节,而TCP占20个,因此在相同环境下发送同样多的应用层的数据,TCP的开销比UDP大,从而也会产生“慢”的感觉。从连接特性来看,UDP是无连接的,而TCP是有连接的,TCP需要通过三次握手建立连接后才能正式发送应用层数据,而UDP不需要,额外的握手时间也会产生“慢”的感觉。从其它特性来看,TCP有自动重传、重整失序数据的功能,例如,使用TCP发送“ABCD”,接收方接收到了“BCD”,而“A”由于丢包等原因暂时没有接收到,TCP就会一直等到“A”也接收到了,才会把“ABCD”一起送到应用层,这样一来,虽然“BCD”早就接收到了,但应用层实际等待的时间会被“A”拖慢,造成整体“慢”的感觉。具体还是要了解这两个协议本身的特点。