计算机网络-nagle算法疑问 tcp/ip nagle 网络

问题描述

nagle算法疑问 tcp/ip nagle 网络

最近在学习tcp/ip,在拥塞控制部分出现了nagle算法,网上看了一些资料
http://b.baidu.com/view/2468335.htm

Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。
 Nagle算法的规则(可参考tcp_output.c文件里tcp_nagle_check函数注释):
(1)如果包长度达到MSS,则允许发送;
(2)如果该包含有FIN,则允许发送;
(3)设置了TCP_NODELAY选项,则允许发送;
(4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;
(5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。

问题:
关于nagle算法的第五点,假设有如下场景
client发送第一个字节package1(200ms超时)后,产生了第一个未确认ack,现假设网络异常,client迟迟未收到对package1的ack,但同时client这边产生了第二个字节需要发送,现在client端总共有2字节的待发送数据<mss(1500),经过一段时间后,package1的ack还未到达,但此时tcp缓冲区的2字节已经再次触发条件5,现在client端会发送新的package吗?如果发送后,未确认的ack数会变成2吗(违反nagle算法)?或者是进行了 tcp重新分组后,即使发送了这个两个字节的package未被确认ack仍然为1(怎么感觉这就是答案呢)?求大神解答,3Q

解决方案

这个应该会触发TCP重传计时器超时而把第一个和第二个放在同一个包里重新传输吧?

时间: 2024-09-30 17:37:24

计算机网络-nagle算法疑问 tcp/ip nagle 网络的相关文章

Linux下套接字详解(补充)--OSI七层与TCP/IP五层网络架构详解

OSI七层模型 OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI七层参考模型的各个层次的划分遵循下列原则: 根据不同层次的抽象分层 每层应当有一个定义明确的功能 每层功能的选择应该有助于制定网络协议的国际标准. 各层边界的选择应尽量节省跨过接口的通信量. 层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大 同一层中的各网络节点都有相同的

我以前没接触过计算机网络,想学习TCP/IP协议,需要先看《计算机网络》这本数吗

问题描述 可以直接看<TCP/IP协议详解>卷一吗?是不是在看卷一前要了解下Lunx编程呢?请大家指点下 解决方案 解决方案二:没有5年编程经验,也没有正规学习过软件专业,最好不要学这个.不需要学习任何linux,学习windows即可.解决方案三:建议还是看下计算机网络,你需要首先有个大致的概念.好比学习初等代数,你应该去看数学教科书,而不是看数学手册.如果i你根本没有电子/计算机科学的基础,最好先看看通讯原理.编码,这些都是计算机网络的基础.解决方案四:该回复于2014-09-12 23:

什么是TCP IP 网络TCP IP协议

什么是TCP.IP协议?概括的说TCP/IP协议是(传输控制协议/网间协议)TCP/IP 协议集确立了 Internet 的技术基础.全称Transmission Control Protocol/Internet Protocol.中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由 网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层

《OSPF网络设计解决方案(第2版)》一1.4 TCP/IP协议簇

1.4 TCP/IP协议簇 OSPF网络设计解决方案(第2版)所谓协议,是指管理网络中设备之间交换信息的规则约定的集合.本节将对最为常用的一个协议簇--TCP/IP进行讨论,但并不涉及TCP/IP深层次的内容.即便如此,为了更好地掌握全面的网络协议原理,你依然需要对TCP/IP有较为深刻地理解:这些深入的内容会在后续OSPF章节中进行穿插. TCP/IP协议簇也被称为TCP/IP栈,它是当今被最为广泛实施的互联网络标准之一.TCP/IP的全称为传输控制协议/互联网络协议,其中TCP和IP是TCP

TCP/IP之TCP交互数据流、成块数据流

建立在TCP协议上的网络协议有telnet,ssh,ftp,http等等.这些协议根据数据吞吐量来分成两大类: (1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等. 交互数据类型在通讯中比例为10%: (2)数据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率.数据成块类型在通讯中比例为90%: 针对这两种情况,TCP给出了两种不同的策略来进行数据传输: 1

面试的时候考官问我,你怎么理解tcp/ip? 话说我得怎么回答呢?

问题描述 面试的时候考官问我,你怎么理解tcp/ip? 话说我得怎么回答呢? 面试的时候考官问我,你怎么理解tcp/ip? 话说我得怎么回答呢?求解!!! 解决方案 http://blog.csdn.net/fysy0000/article/details/6618620 解决方案二: 这个问题,应该没有标准问题吧.考官关注什么,与你面试的岗位有关吧. 参考:TCP/IP 解决方案三: 这个问题比较开放..举个你做过相关的例子好点.. 解决方案四: 它就是一种协议,网络传输就像咱们生活里一样签协

TCP/IP, WebSocket 和 MQTT

按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议.在这三者之间, TCP是HTTP和MQTT底层的协议.大家对HTTP很熟悉,这里简要介绍下MQTT.MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器的通信协议. HTTP的不足 HTTP协议经过多年的使用,发现了

TCP/IP协议 详解

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准.协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到

《CCENT/CCNA ICND1(100-101)认证考试指南(第4版)》——第1章TCP/IP和OSI网络模型

第1章 TCP/IP和OSI网络模型欢迎学习CCENT/CCNA的第1章内容,本章内容主要基于网络.由于网络是按照一定的逻辑规则来请求所有设备,所以我们将首先探讨网络模型,通过它可以更方便理解网络逻辑规则. 网络模型可以被视为房屋的建筑设计图.由于参与建造房屋的人很多,如设计人员.电工.泥瓦匠.油漆工等,如果让他们参考同一张图纸会事半功倍.同样,不参考现有的网络模型,网络设计师也可以组建网络.编写软件.制造网卡.但是倘若购买并使用符合常用网络模型要求的产品来组建网络就会容易得多.由于网络产品制造