《TCP/IP具体解释》读书笔记(19章)-TCP的交互数据流

在TCP进行传输数据时。能够分为成块数据流和交互数据流两种。假设按字节计算。成块数据与交互数据的比例约为90%和10%,TCP须要同一时候处理这两类数据,且处理的算法不同。

书籍本章中以Rlogin应用为例观察交互数据的传输过程。提示经受时延的确认是如何工作以及Nagle算法如何降低了通过广域网络传输的小分组的数目。

交互式输入

上图为没有优化的字符输入回显的传输数据过程。一共须要四个报文段。

经受时延的确认
上图第二,三个报文段能够合并---按键确认和按键回显一起发送。这样的技术叫做经受时延的确认。

通常TCP在接收到数据时并不马上发送ACK,相反,它推迟发送,以便将ACK与须要沿该方向发送的数据一起发送(有时这样的现象为数据捎带的ACK)。

绝大数实现採用的时延为200ms,也就是说。TCP将以最大200ms的时延等待是否有数据一起发送。
ACK延时等待时间不大于TCP定时器的原因:
假如TCP使用200ms的定时器。该定时器将相对于内核引导的200ms固定时间溢出,由于将要确定的数据随机到达,TCP将在下一次内核的200ms定时器溢出时得到通知,所以ACK实际等待的时间为1~200ms中任一刻。

Nagle算法
Nagle算法要求TCP连接上最多仅仅有一个未被确认的未完毕小分组。在该分组确认到达之前不能发送其它的小分组。相反。TCP收集这些少量的分组。并在确认到达时以一个大的分组发出去。

该算法的长处在于它是自适应的:确认到达得越快。数据也就发送得越快。能够降低网络上的微小分组数目,降低拥塞出现的可能(局域网这些小分组通常不会引起麻烦,但在较慢的广域网则存在拥塞的可能)。但对应的,由于不是马上ACK,也会添加很多其它的时延。

有时我们也须要关闭Nagle算法,比如鼠标移动必须无时延地发送,以便为用户的交互提供实时的反馈。

流程:
(1)发送端TCP将从应用进程接收到的第一数据块马上发送。无论其大小。哪怕仅仅有一个字节。
(2)发送端输出第一块数据后開始收集数据,并等待确认。
(3)确认未达到时,若收集数据达到窗体的一半或一个MSS段,马上发送。
(4)确认到达后。把缓冲区中的数据组成一个TCP段,然后发送。

窗体大小通知

在图19-4。client与server端的通告窗体分别为4096与8192。

但报文5通告的窗体大小为4095个字节,这意味着在TCP缓冲区中仍然有一个字节等待应用程序读取。

作者原创。转载请标明原处:http://blog.csdn.net/xifeijian/article/details/44260601

时间: 2024-11-06 12:12:29

《TCP/IP具体解释》读书笔记(19章)-TCP的交互数据流的相关文章

TCP/IP详解学习笔记

TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 TCP/IP详解学习笔记(6)-UDP协议 TCP/IP详解学习笔记(7)-广播和多播,IGMP协议 TCP/IP详解学习笔记(8)-DNS域名系统 TCP/IP详解学习笔记(9)-TCP协议概述 TCP

【转】TCP/IP详解学习笔记(二)

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface192.168.11.0    *               255.

TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

TCP/IP详解学习笔记   这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器 TCP/IP详解学习笔记(12)-TCP的超时与重传TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着

TCP/IP详解学习笔记(1)

这里是<TCP/IP详解>卷一的一些笔记以及自己对书中的理解,我会结合抓包软件Wireshark来分析,但由于条件有限,无法模拟出书中作者的网络,只能简单的分析,如果发现错误,请帮忙指正.   首先我们讲什么是TCP/IP协议: 两台主机要通信必须遵循相同的规范,对互相发送的报文要知道该如何处理,就像发送XML和JSON数据一样,他们需要按照预先规定的格式组织进行发送,而接收端也要按照这种格式来解读.网络通信协议做的就是这个,而tcp/ip就是协议中用的最广泛的一种. TCP/IP的分层使得协

TCP/IP详解学习笔记(9)-TCP协议概述

终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个"拨打电话"的过程,等到通信准备结束才开始传输数据,最后结束通话.所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就

TCP/IP详解学习笔记(一) 概述

生活中有舒适区,借口成为懒惰的护身符,学习也有舒适区,逃避便是阻止进步的最大障碍. 经过半年多嵌入式方面的工作和学习,我提高了很多,但同时我也对自己所面临的问题逐渐清晰: 1. 偏于实践,理论基础不牢固 2. 对算法,数据结构认知太浅 3. 对界面程序以及GUI相关学习比较排斥 我也一直主观上逃避对这些知识的学习,这也是为什么我写的内容都是以实践为主了.从本系列开始,我尝试离开大脑的舒适区,巩固自己理论相关的知识. TCP/IP作为整个现代互联网社会的基础,有着至关重要的作用,因此学习掌握协议栈

TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节

1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. 对于一个给定的路由器,可以打印出五种不同的flag. 1.         U表明该路由可用. 2.         G表明该路由是到一个网关.如果没有这个标志,说明和Destination是直连的,而相应的Gateway应该直接给出Destination的地址. 3.         H

TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

转http://blog.csdn.net/goodboy1881/article/details/668556 —————————————————————————————————————————————————————— 把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UD

TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议

把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息. 1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输.要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情.所以这也就出现了TCP是一个可靠的协议

TCP/IP详解学习笔记(2)-数据链路层

转http://blog.csdn.net/goodboy1881/article/details/665061 ———————————————————————————————————————————— 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请 求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议,在tcp/