《tcp/ip具体解释》读书笔记(20章)-tcp的成块数据流

author author     2022-08-29     518

关键词:

眼下建立在TCP协议上的网络协议特别多,有telnet。ssh,有ftp。有http等等。这些协议又能够依据数据吞吐量来大致分成两大类:(1)交互数据类型,比如telnet,ssh。这样的类型的协议在大多数情况下仅仅是做小流量的数据交换,比方说按一下键盘,回显一些文字等等。(2)数据成块类型。比如ftp。这样的类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大。并尽可能的提高效率。

针对这两种情况,TCP给出了两种不同的策略来进行传输数据。

本章介绍TCP所使用的被称为窗体协议的还有一种形式的流量控制方法。

该协议同意发送方在停止并等待确认前能够连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议能够加速数据的传输。

1.隔一个报文段确认策略

TCP处理一个接收的报文将产生一个经受时延的确定,此ACK并不马上返回。这时分两种情况(隔一个报文或者定时器溢出):

(1)TCP处理下一个报文。然后返回一个ACK确定2个报文段(能够想象成捎带ACK)。

(2)定时器溢出,返回ACK。假设溢出时。TCP接收缓冲区中还有数据没有被应用层读取完,那么返回报文段的窗体值将为初始窗体值减去缓冲区中的值。


2.滑动窗体协议

窗体移动:
(1)窗体左边沿向右边沿靠近为窗体合拢
(2)窗体右边沿向右边移动为窗体张开


(3)窗体右边沿向左边移动为窗体收缩。RFC强烈建议不要使用这样的方式

假设左边沿到达右边沿。则称其为一个0窗体,此时发送方不能够发送不论什么数据。

来自接收方的一个报文段确认数据并把窗体向右边滑动。这是由于窗体的大小是相对于确认序号的。

窗体大小由进程控制。插口API同意进程设置发送和接收缓存的大小。接收缓存的大小是该连接上所能够通告的最大窗体大小。发挥TCP传输性能。


TCP就是用这个窗体。慢慢的从数据的左边移动到右边,把处于窗体范围内的数据发送出去(但不用发送所有,仅仅是处于窗体内的数据能够发送。

)。

这就是窗体的意义。图20-6解释了这一点。窗体的大小是能够通过socket来制定的,4096并非最理想的窗体大小,而16384则能够使吞吐量大大的添加。


滑动窗体是用来加速传输数据。

TCP要保证“可靠”。就须要对一个数据包进行ack确认表示接收端收到(窗体张开)。有了滑动窗体,接收端就能够等收到很多包后仅仅发一个ack包。确认之前已经收到过的多个数据包。

有了滑动窗体,发送端在发送完一个数据包后不用等待它的ack,在滑动窗体大小内能够继续发送其他数据包(窗体合拢)。

发送的数据TCP包都有一个序号。

它是这么计算的:最初发送SYN时,有一个初始序号,依据RFC的定义。各个操作系统的实现都是与系统时间相关的。之后,序号的值会不断的添加,比方原来的序号是100,假设这个TCP包的数据有10个字节,那么下次的TCP包序号会变成110。
滑动窗体用于加速传输,比方发了一个seq=100的包,理应收到这个包的确认ack=101后再继续发下一个包。但有了滑动窗体。仅仅要新包的seq与没有得到确认的最小seq之差小于滑动窗体大小。就能够继续发。

由于窗体的左边沿受还有一端发送的确认序号的控制,因此不可能向左边沿移动。假设接收到一个指示窗体左边沿向左移动的ACK,则它被觉得是一个反复的ACK,并被丢弃。

下图展示了发送窗体与接收窗体滑动:

技术分享


下图展示滑动窗体占满。窗体不能向右滑动。临时不能发送数据包。

技术分享


3.PUSH标志

发送方使用该标志通知接收方将所收到的数据所有提交给接收进程。这里的数据包含与PUSH一起传送的数据以及接收方TCP已经为接收进程收到的其他数据。

(1)发送方将发送缓冲区的数据马上发送给接收方。


(2)接收方将接收缓冲区的数据马上提交给接收进程。

假设待发送数据会清空发送缓冲区,该包将自己主动设置PUSH标志。


4.慢启动(拥塞窗体)

假设发送方和接收方之间存在多个路由器和速率较慢的链路时,一些中间的路由器必须缓存分组,并有可能耗尽存储器的空间,这样的连接方式会严重减少了TCP连接的吞吐量。

拥塞窗体(cwnd)原理:

1)发送方開始发送一个报文。然后等待ACK。

2)当收到该ACK时。拥塞窗体从1添加到2,即能够发送2个报文段。

2)发送方再发送2个报文段,然后等待ACK,当收到这两个报文段的ACK时。拥塞窗体就添加为4。

这是一种指数添加的关系。

如此循环.....

在某些点上可能达到了互联网的容量。于是中间路由器開始丢弃分组,这就通知发送方它的拥塞窗体开得过大。

慢启动算法用于保证新分组进入网络的速率与还有一端返回确定的速率相等。


拥塞窗体是发送使用的流量控制。通告窗体是接收方使用的流量控制。



5.紧急方式

TCP提供了“紧急方式”,它使一端告诉还有一端有些具有某种方式的“紧急数据”已经放置在普通的数据流中。还有一端被通知这个紧急数据已被放置在普通数据流中,由接收方决定怎样处理。

能够设置TCP首部中的两个字段来发出这样的从一端到还有一端的紧急数据已经被放置在数据流中的通知。URG比特被置为1,而且一个16bit的紧急指针放置为一个正的偏移量,该偏移量必须与TCP首部中的序号字段相加,以便得出紧急数据的最后一个字节的序号。

紧急方式最常见的样例是Telnet和Rlogin,从server到client使用紧急方式是由于在这个方向上的数据流非常可能要被客户的TCP停止(即,client通告了一个大小为0的窗体)可是假设server进程进入紧急方式,虽然它不能够发送不论什么数据,serverTCP也会马上发送紧急指针和URG标志。当客户TCP接收到这个通知时就会通知客户进程,于是客户能够从server读取其输入、打开窗体并使数据流动。

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


























《tcp/ip具体解释》读书笔记(21章)-tcp的超时与重传

TCP提供可靠的运输层。它使用的方法之中的一个就是确认从还有一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这样的问题。假设当定时器溢出时还没有收到确认,它就重传该数据。对于... 查看详情

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

在TCP进行传输数据时。能够分为成块数据流和交互数据流两种。假设按字节计算。成块数据与交互数据的比例约为90%和10%,TCP须要同一时候处理这两类数据,且处理的算法不同。书籍本章中以Rlogin应用为例观察交互数据的传输过... 查看详情

tcp/ip具体解释学习笔记--tcp数据流

1.TCP的交互数据流(1)基本概念所谓交互数据流,其对TCP而言,就是他们所产生的大多数的TCP报文段中所包括的数据不超过10个字节。比如聊天等telnet的软件的TCP数据流就属于TCP交互数据流(2)经受时延的确认TCP收到数据时并不会立... 查看详情

《tcp/ip具体解释卷2:实现》笔记--协议控制块

协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。Internet协议维护Internet协议控制块(internetprotocolcontrolblock)和TCP控制块(TCPcontrolblock)。由于UDP是无连接的。所以一个端结点须要的全部信息都在InternetPCB中... 查看详情

《图解tcp/ip》读书笔记

...用放心的网络环境。  同时,这本书也是我的2016年度读书计划中的一本,下面我将会 查看详情

tcp/ip具体解释学习笔记--tcp的坚持和保活定时器

TCP的坚持定时器1.基本概念TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0。那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那么假设接收方发送的这... 查看详情

tcp/ip知识总结(tcp/ip协议族读书笔记四)

  参考:http://blog.chinaunix.net/uid-26275986-id-4109679.html  继续!TCP的流量控制和拥塞控制。  TCP相对UDP可靠的地方在于它的拥塞控制、流量控制。一.流量控制:  如果发送方把数据发送得过快,接收方可能会来不及接收,... 查看详情

tcp/ip具体解释学习笔记——地址解析协议arp

一概述我们知道,IP协议是用来在不同的物理网络之间数据传输的。要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址。一般来说。就是将IPv4地址转换为mac地址。要想与一个特定的设... 查看详情

《tcp/ip具体解释卷2:实现》笔记--接口层

接口层包含在本地网上发送和接收分组的硬件与软件。我们用设备驱动程序来表示与硬件及网络接口通信的软件,网络接口是指在一个特定网络上硬件与设备驱动器之间的接口。Net/3接口层试图在网络协议和连接到一个系统的网... 查看详情

《tcp/ip具体解释卷2:实现》笔记--选路请求和选路消息

内核的各种协议并不直接使用前面提供的函数来訪问选路树,而是调用几个函数:rtalloc和rtallocl是完毕路由表查询的两个函数;rtrequest函数用于加入和删除路由表项;另外大多数接口在接口连接或断开时都会调用函数rtinit。选路... 查看详情

tcp/ip具体解释--tcp的分段和ip的分片

写在前面:   分组能够发生在运输层和网络层。运输层中的TCP会分段,网络层中的IP会分片。IP层的分片很多其它的是为运输层的UDP服务的,因为TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会发生分片的现象。... 查看详情

《图解http》读书笔记

《图解HTTP》读书笔记第一章:了解Web及网路基础TCP/IP协议把互联网想关联的协议集合起来总称为TCP/IP协议TCP/IP协议族按层次分为:应用层,传输层,网络层,数据链路层应用层决定了向用户提供应用服务时通... 查看详情

《图解http》读书笔记

《图解HTTP》读书笔记第一章:了解Web及网路基础TCP/IP协议把互联网想关联的协议集合起来总称为TCP/IP协议TCP/IP协议族按层次分为:应用层,传输层,网络层,数据链路层应用层决定了向用户提供应用服务时通... 查看详情

大话存储学习笔记(11章),tcp/ip

TCP/IP协议以太网的出现,给系统的互联带来方便的方式,每个节点安装一块以太网适配器,上层程序只要将发送的数据以及目的MAC地址告诉以太网卡,就可以完成通信过程。但是实际上,以太网不能直接被应用程序用来收发数据... 查看详情

tcp/ip具体解释--icmp报文分析

一.概述:1.   ICMP同意主机或路由报告差错情况和提供有关异常情况。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。通常ICMP报文被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用... 查看详情

tcp/ip协议族——ip工作原理及实例具体解释(上)

??IP协议具体解释       本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包。来观察IP数据报传送过程中IP的格式,以及分片的过程。IP头部信息:IP头部信息出如今每一个IP数据报... 查看详情

tcp/ip学习笔记章二链路层

一、数据链路层当需要在一条线路上传递数据时,除了必须使用一条物理设备时,还需要一些必要的通信协议来控制数据的传输,若把实现这些协议的硬件和软件的加到链路上,就叫做数据链路;最常用的是-----网络适配器。一... 查看详情

tcp/ip卷一读书笔记为什么既要有ip地址又要有mac地址

网络层首先明确一点,并不是所有的网络之间传输数据都需要mac地址和ip地址,比如说点对点线路之间的通信就没有MAC地址,网络层使用ipx协议时就没有ip地址,但是在当前的主流网络中,我们都使用ip地址和mac地址既然mac地址唯... 查看详情