TCP implements its own acknowledgment scheme to guarantee successful data delivery
wTCP本身已经确保传输的成功性。
HTTP The Definitive Guide
4.2.4 Delayed Acknowledgments
Because the Internet itself does not guarantee reliable packet delivery (Internet routers are free to
destroy packets at will if they are overloaded), TCP implements its own acknowledgment scheme to
guarantee successful data delivery.
Each TCP segment gets a sequence number and a data-integrity checksum. The receiver of each
segment returns small acknowledgment packets back to the sender when segments have been received
intact. If a sender does not receive an acknowledgment within a specified window of time, the sender
concludes the packet was destroyed or corrupted and resends the data.
Because acknowledgments are small, TCP allows them to "piggyback" on outgoing data packets
heading in the same direction. By combining returning acknowledgments with outgoing data packets,
TCP can make more efficient use of the network. To increase the chances that an acknowledgment
will find a data packet headed in the same direction, many TCP stacks implement a "delayed
acknowledgment" algorithm. Delayed acknowledgments hold outgoing acknowledgments in a buffer
for a certain window of time (usually 100-200 milliseconds), looking for an outgoing data packet on
which to piggyback. If no outgoing data packet arrives in that time, the acknowledgment is sent in its
own packet.
Unfortunately, the bimodal request-reply behavior of HTTP reduces the chances that piggybacking
can occur. There just aren't many packets heading in the reverse direction when you want them.
Frequently, the disabled acknowledgment algorithms introduce significant delays. Depending on your
operating system, you may be able to adjust or disable the delayed acknowledgment algorithm.
Before you modify any parameters of your TCP stack, be sure you know what you are doing.
Algorithms inside TCP were introduced to protect the Internet from poorly designed applications. If
you modify any TCP configurations, be absolutely sure your application will not create the problems
the algorithms were designed to avoid.
TCP implements its own acknowledgment scheme to guarantee successful data delivery的更多相关文章
- IP, TCP, and HTTP--reference
IP, TCP, and HTTP Issue #10 Syncing Data, March 2014 By Daniel Eggert When an app communicates with ...
- Method of offloading iSCSI TCP/IP processing from a host processing unit, and related iSCSI TCP/IP offload engine
A method of offloading, from a host data processing unit (205), iSCSI TCP/IP processing of data stre ...
- tcp ESTABLISHED 接收数据
tcp_rcv_established函数的工作原理是把数据包的处理分为2类:fast path和slow path,其含义显而易见.这样分类的目的当然是加快数据包的处理,因为在正常情况下,数据包是按 ...
- HTTP协议用的TCP但是只建立单向连接
作者:IronTech链接:https://www.zhihu.com/question/20085992/answer/71742030来源:知乎著作权归作者所有,转载请联系作者获得授权. 下面的解 ...
- TCP/IP Four Layer Protocol Format Learning
相关学习资料 tcp-ip详解卷1:协议.pdf 目录 . 引言 . 应用层 . 传输层 . 网络层 0. 引言 协议中的网络字节序问题 在学习协议格式之前,有一点必须明白,否则我们在观察抓包数据的时 ...
- WCF - net.pipe vs. net.tcp vs. http Bindings
WCF - net.pipe vs. net.tcp vs. http Bindings 问题: I'm new to WCF and would like to know the differenc ...
- TCP:三次握手、四次握手、backlog及其他
TCP是什么 首先看一下OSI七层模型: 然后数据从应用层发下来,会在每一层都加上头部信息进行封装,然后再发送到数据接收端,这个基本的流程中每个数据都会经过数据的封装和解封的过程,流程如下图所示: 在 ...
- linux tcp调优
Linux TCP Performance Tuning News Linux Performance Tuning Recommended Books Recommended Links Linux ...
- Systemtap examples, Network - 4 Monitoring TCP Packets
http://blog.163.com/digoal@126/blog/static/16387704020131014104256627/ 例子来自tcpdumplike.stp脚本, 当tcp ...
随机推荐
- JVM基础学习之基本概念、可见性与同步
开发高性能并发应用不是一件容易的事情.这类应用的例子包括高性能Web服务器.游戏服务器和搜索引擎爬虫等.这样的应用可能需要同时处理成千上万个请求.对于这样的应用,一般采用多线程或事件驱动的 架构 .对 ...
- wpa_cli 连接 wifi(转)
wpa_cli 连接 wifi 转自:http://hi.baidu.com/yyangjjun/item/9dfe8e175439fc7a1009b5ba 1: run wpa_supplica ...
- SharpDevelop浅析_4_TextEditor_自动完成、代码折叠……
SharpDevelop浅析_4_TextEditor_自动完成.代码折叠…… SharpDevelop浅析_4_TextEditor_自动完成.代码折叠…… Parser及其应用: Code Com ...
- 一款基于HTML5 Canvas的画板涂鸦动画
今天给各网友分享一款基于HTML5 Canvas的画板涂鸦动画.记得之前我们分享过一款HTML5 Canvas画板工具,可以切换不同的笔刷,功能十分强大.本文今天要再来分享一款基于HTML5 Canv ...
- Android多媒体系列2:利用MediaRecorder实现录音
- 实现Easyui 可编辑表格
一.前端框架使用的easyui框架 二.后端使用的是jfinal 三.效果图 四.html代码 <div id="table_tree" class="easyui ...
- Android Studio 工具栏添加图标
本文中 Android Studio 的版本为 Android Studio 2.2 ,操作系统为 Windows,如有操作不同,可能是版本差异.在工具栏中添加一些常用的图标有利于我们开发,举例说明: ...
- 一个 Map 函数、一个 Reduce 函数和一个 main 函数
MapReduce 最简单的 MapReduce应用程序至少包含 3 个部分:一个 Map 函数.一个 Reduce 函数和一个 main 函数.main 函数将作业控制和文件输入/输出结合起来.在这 ...
- Throw是一个语句,用来做抛出例外的功能
当我们自己定义一个例外类的时候必须使其继承excepiton或者RuntimeException. Throw是一个语句,用来做抛出例外的功能. 而throws是表示如果下级方法中如果有例外抛出,那么 ...
- 性能测试工具LoadRunner中进程运行和线程运行区别
loadrunner controller将使用驱动程序mmdrv运行Vuser.用户可以在controller的run-time setting中选择Vuser的运行方式, 是多进程方式or多线程方 ...