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 ...
随机推荐
- Java Main如何被执行?
java应用程序的启动在在/hotspot/src/share/tools/launcher/java.c的main()函数中,而在虚拟机初始化过程中,将创建并启动Java的Main线程.最后将调用J ...
- 02、Windows Phone 套接字(Socket)实战之服务器端设计
这里主要写 PC 服务器端的逻辑,UI 使用的是 WPF,因为 WPF 比普通的 WinForm 的流式布局 更容易控制,而且比 WinForm 美观一些,显示截图: 一.页面 UI MainWind ...
- ms17010漏洞复现-2003
先使用Smbtouch模块检测一下是否有漏洞. 然后使用Doublepulsar写一个shellcode到本地. 生成成功后的截图: 再使用EternalRomance植入Doublepulsar后门 ...
- 卖座网一处SQL注射(Http Referer sqlinjection)
漏洞作者: 猪猪侠 漏洞详情 披露状态: 2015-01-13: 细节已通知厂商并且等待厂商处理中2015-01-14: 厂商已经确认,细节仅向厂商公开2015-01-24: 细节向核心白帽子及相关领 ...
- maven配置nexus
setting配置: <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the ...
- signal基础
signal man 7 signal 1.kill -l 显示所有信号 kill -signal PID killall -signal name 2.产生信号 ctrl+c => SIGIN ...
- 基于Gitolite的Git服务架设
如果不是要与他人协同开发,git根本不需要架设服务器,git可以直接使用本地版本库的路径完成git版本间的操作.但是如果需要和他人分享版本库,协作开发,就需要能够通过网络协议操作git库.git支持的 ...
- keep learning
fueling people’s creativity 助长了人们的创造力,燃烧了人们的激情
- ASP.NET MVC4 权限验证
在ASP.NET MVC4 中继承ActionFilterAttribute 类,重写OnActionExecuting方法 /// <summary> /// 权限拦截 /// < ...
- 你真的需要一个jQuery插件吗
jQuery的插件提供了一个很好的方法,节省了时间和简化了开发,避免程序员从头开始编写每个组件.但是,插件也将一个不稳定因素引入代码中.一个好的插件节省了无数的开发时间,一个质量不好的插件会导致修复错 ...