TCP和UDP之面试

UDP的优势:

  1. 应用层能更好发控制要发送的数据和发送时间。因为UDP只提供最简单、服务最少的服务,所以当网络应用进程有数据传递给UDP时,UDP马上就会将此数据打包成UDP报文段,并把它交付给网络层,从而把数据发送出去。
  2. 无需连接建立,不会引入建立连接的时延,而TCP在开始数据传输之前要经过三次握手。
  3. 无连接状态,因此,使用UDP的服务器能支持更多的活动客户机。
  4. 分组首部开销小,其首部字段少,只有8个字节,而TCP的首部有20个字节。

UDP实现可靠传输:
UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。
传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。
实现确认机制、重传机制、窗口确认机制。
如果你不利用linux协议栈以及上层socket机制,自己通过抓包和发包的方式去实现可靠性传输,那么必须实现如下功能:
发送:包的分片、包确认、包的重发
接收:包的调序、包的序号确认
目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDPRTPUDT


应用层 能否将数据直接交付给网络层,而不经过运输层:
肯定不能!网络层的IP协议,传输的数据单元的IP数据报,网络层实现的是主机之间的通信,而我们实际实现的是主机间应用进程的通信(主机里有多个应用进程),而运输层就是实现应用之间的通信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章