首页 > 代码库 > 【T08】避免重新编写TCP
【T08】避免重新编写TCP
1、有时候为了所谓的性能,我们倾向于使用udp,但是我们又期望数据的传输是可靠的,因此需要在应用层提供可靠性。2、可靠、健壮的udp必须提供: a、在合理的时间内没有收到回复,进行重传 b、保证应答和请求的匹配3、基于udp协议,在应用层提供可靠性,需要做很多事情,比如:滑动窗口,拥塞控制,对这些事情都进行研究,就相当于重写tcp4、因此,如果要可靠的网络传输,就直接使用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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。