1、面向报文与面向字节流的区别:
面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。
2、TCP为什么是可靠地:
应答确认机制,超时重传机制,滑动窗口,(数据有序,拥塞控制,校验和)都可以说明TCP确保了可靠传输
适用:
文件传输一般适用TCP,直播音频一般用UDP,QQ是以UDP为主,辅一TCP协议。
3、UDP特性:
不属于连接型协议,资源消耗小,处理速度快,在网络不好的条件下,偶尔丢失一两个包也不会对结果有太大影响。
UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4、TCP特性:
TCP对系统资源要求较多,UDP对系统资源要求较少。
采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。