码迷,mamicode.com
首页 > 其他好文 > 详细

【T08】避免重新编写TCP

时间:2017-02-11 19:53:17      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:而不是   udp协议   拥塞   功能   窗口   可靠性   class   大量   滑动窗口   

1、有时候为了所谓的性能,我们倾向于使用udp,但是我们又期望数据的传输是可靠的,因此需要在应用层提供可靠性。
2、可靠、健壮的udp必须提供:
    a、在合理的时间内没有收到回复,进行重传
    b、保证应答和请求的匹配
3、基于udp协议,在应用层提供可靠性,需要做很多事情,比如:滑动窗口,拥塞控制,对这些事情都进行研究,就相当于重写tcp
4、因此,如果要可靠的网络传输,就直接使用tcp,而不是使用udp,在应用程序提供可靠性。原因有:
    a、应用程序实现的tcp功能肯定比不上真正的tcp协议,tcp协议实现是大量实现和研究的结果,也在不断改进。
    b、tcp协议的实现在内核中执行,性能更高。
    c、有时候在应用层超时重传并不是用户期望的,比如客户端发送一个转账请求,超时没有收到回复,然后重传,
        导致一次转账请求,在服务端处理了两次,这不是我们所期望的。而tcp的超时重传,在传输层会丢弃收到的重复请求,
        在应用层只收到一次请求。
    因此,使用udp,在应用层提供可靠性并没有什么意义。
5、因此,udp的使用场景是:对可靠性的要求不是很高,允许丢包,丢包不影响应用程序。
    tcp的使用场景是:对可靠性的要求很高。
6、如果既想拥有tcp的可靠性,同时减少建立连接和拆除连接的开销,可以使用T/TCP,T/TCP是对tcp的扩展,
    避免了建立连接的三次握手,同时缩短拆除连接时的TIME_WAIT阶段。

【T08】避免重新编写TCP

标签:而不是   udp协议   拥塞   功能   窗口   可靠性   class   大量   滑动窗口   

原文地址:http://www.cnblogs.com/nzbbody/p/6389596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!