linux关于tcp协议ack的实现--总结和公平性问题

简介:
tcp是一个可靠连接的协议,但不要指望它是什么理论的实现,它是实践的东西,任何实践的东西背后都不是一个理论,而是一大堆理论,tcp正是单一停等,GBN(回退N)以及SR(选择重传)的结合体,单一停等是最原始的理论,但是带宽利用率太低了,后面的GBN实现了流水线式的数据发送和确认,可靠连接的根本就在于确认-ack,而GBN的ack完全是基于接收方的,接收方很简单的只发送最后一个按序到达的报文的序列号最为确认号,而发送端收到以后将重传该确认号之后的所有报文,这样实现很简单,要考虑的事情也不多,但是可能会导致大量不必要的重传动作,因此SR就报上了名来,只要接收端收到一个报文就给予确认,发送方将已经被确认的分组从重传链表删除,然后如果被确认的分组在窗口的最左边,那么向前移动发送窗口,这就解决了GBN中的一系列问题,可是新的问题就是实现起来可能更复杂了,收发双方对于ack的处理都很复杂。
     linux的tcp实现实质上是以GBN为根本,但是内置了SR算法的支持,正和RFC的建议一致,SR在RFC2018中被描述,而它是作为一个tcp选项被加入协议的,也就是说tcp的实现的骨架还是gbn,但是如果你想使用sr的特性,那么需要通过tcp头的选项来支持,linux实现了这一点,并且将发送ack,接收ack,处理sr,以及重传等动作完全分离,发送ack完全按照gbn的方式,如果需要sack的话,那么另外填写选项,对于接收ack并处理,也是按照GBN的方式,但是其间需要检查是否冗余ack积累到了一定量,接收ack是tcp_ack处理的,虽然它基于,但它丝毫不必担心gbn的大量重传问题,因为重传动作完全是tcp_ack以外的,它将根据sack相关的信息处理重传,而不是根据gbn的原则重传分组。
     正是ack保证了连接的可靠性,同时ack也左右了tcp的拥塞控制以及流量控制动作,进而使得tcp实现带宽的公平性(加增乘减),但是公平性只是针对tcp内部而言的,如果大量疯狂的udp视频传输于骨干网,由于udp没有拥塞控制,它会占去大量资源而不后退,而tcp由于丢包或者延迟已经感觉到了拥塞,于是tcp们纷纷减缓发送,于是就让给udp更大的带宽,虽然这种绥靖不是有意的,但是这个问题却是亟待解决的,目前无法在协议本身找到完美的解决方案,而只能通过诸如路由器的流控或者在linux上使用iptables配置相关策略来实现。

     因此tcp是一个诸多理论的混合体,而linux实现的tcp又是诸多实现建议的混合体。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271787

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Linux 网络安全 iOS开发
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
2490 4
SecureCRT & SecureFX 9.6.3 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输
|
12月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
366 18
|
网络协议
TCP/IP与OPC协议的深度比较
总的来说,TCP/IP和OPC协议各有其优点和应用场景。TCP/IP协议是网络通信的基础,而OPC协议则是工业自动化领域的重要工具。在实际应用中,我们需要根据具体的需求和场景,选择合适的协议。
484 11
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
373 13
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
1523 3
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
XML JSON 网络协议
【TCP/IP】自定义应用层协议,常见端口号
【TCP/IP】自定义应用层协议,常见端口号
644 3
|
网络协议 算法 数据格式
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
2055 3
|
网络协议 网络架构 数据格式
TCP/IP基础:工作原理、协议栈与网络层
TCP/IP(传输控制协议/互联网协议)是互联网通信的基础协议,支持数据传输和网络连接。本文详细阐述了其工作原理、协议栈构成及网络层功能。TCP/IP采用客户端/服务器模型,通过四个层次——应用层、传输层、网络层和数据链路层,确保数据可靠传输。网络层负责IP寻址、路由选择、分片重组及数据包传输,是TCP/IP的核心部分。理解TCP/IP有助于深入掌握互联网底层机制。
2147 2
|
负载均衡 网络协议 Linux
在Linux中,如何理解VRRP协议?
在Linux中,如何理解VRRP协议?

热门文章

最新文章