UDP相对于TCP而言,是缺少一个可靠的丢失重发机制,因此可以立即返回,所以你觉得快
UDP属于发射后不管,但是从IP层来说,它的效率和TCP相比,几乎相同
TCP为什么慢呢?就是因为需要 发射 确认 这样一个循环过程,所以慢
现在喜欢用UDP代替TCP的原因主要是 TCP的重发机制不完美,等待时间不合理,响应经常偏慢
UDP的问题主要在于丢包,如果你的API层协议规定部分数据可以丢失,那么UDP的响应速度会是最好的选择
同样,如果规定绝对不可以丢包,那么需要你自己在API或者引擎里负责处理UDP的可靠传输
一般测试下,在相对可靠的环境里,UDP的丢包率很低,因此即使采用确认模式传输,速度也很快
但是,如果在INTERNET上,例如 电信到CNC线路,丢包率是偏高的,效率会严重降低,CPU开销剧烈增加[主要是确认机制导致的]
tcp传输有返回值,而且要检查返回值,以确保被正确接收;而udp没有这个检查的过程,所以会出现丢包的现象,但是传输速度要快
TCP有拥塞控制、滑动窗口等一系列的算法来保证数据的正确和有序,而UDP就没有这么多工作。