• 【T08】避免重新编写TCP


    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阶段。
    
  • 相关阅读:
    UBUNTU 自动挂载 NTFS
    automake autoconf 学习笔记(转载)
    error: X11/extensions/XInput.h: No such file or directory
    error: undefined macro: AC_PROG_LIBTOOL
    Linux下tar.xz结尾的文件的解压方法
    Ubuntu 修改hosts
    ubuntu主目录下的中文文件夹名改回英文
    ./configure: No such file or directory
    Ubuntu下GTK的安装、编译和测试
    图像适配源码
  • 原文地址:https://www.cnblogs.com/nzbbody/p/6389596.html
Copyright © 2020-2023  润新知