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又是诸多实现建议的混合体。
分享到:
相关推荐
tcp协议ACK机制在opnet中实现代码
第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_...
ack用法:http://blog.bccn.net/%E9%9D%99%E5%A4%9C%E6%80%9D/13430
Accelnet Micro Module is a digital servodrive that combines CAN open networking with 100% digital control of brush or brushless motors in a pc board mounting package with power options to 5 Adc ...
在TCP协议中RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。 其实...
本书同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。本书适用于希望理解TCP/IP如何工作的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。本书的特点是内容丰富,...
第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_...
对网络传输的PPT 对与网络的理解 英文版
ACK3116驱动程序 the USB to Virtual Serial ports device driver 串口转USB
与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。 目 录 译者序 前言 第一部分 TCP事务协议 第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 ...
ACK70N-W ACK70N-T 官方中文说明书PDF 大金空气净化器 日本进口
2.6.3 m_pullup函数和连续的协议首部 36 2.6.4 m_pullup和IP的分片与重组 37 2.6.5 TCP重组避免调用m_pullup 39 2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇...
第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_...
第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend函数 56 5.4 小结 58 第6章 T/TCP的实现:路由表 59 6.1 概述 59 6.2 代码介绍 59 6.3 radix_node_head结构 60 6.4 rtentry结构 61 6.5 rt_...
2.6.3 m_pullup函数和连续的协议首部 36 2.6.4 m_pullup和IP的分片与重组 37 2.6.5 TCP重组避免调用m_pullup 39 2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇...
《TCP/IP详解·卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。适用于希望理解TCP/IP如何工作的人,包括编写网络应用程序的程序员以及利用TCP/IP维护...
ack-etcd备份资源
具体讲述阻止TCP中ACK的攻击方法 很好
2.6.3 m_pullup函数和连续的协议首部 36 2.6.4 m_pullup和IP的分片与重组 37 2.6.5 TCP重组避免调用m_pullup 39 2.6.6 m_pullup使用总结 40 2.7 mbuf宏和函数的小结 40 2.8 Net/3联网数据结构小结 42 2.9 m_copy和簇...