《网络协议》TCP 的成块数据流

在前面的文章中《TCP 的交互数据流》我们可以知道,TCP 的成块数据流是在要求传输效率较高的情况下使用,例如 FTP。对于这些要求传输 TCP 最长报文段的应用,TCP 协议采用了滑动窗口协议,使发送端在等待确认前可以连续发送多个分组。

一般来说,发送端发送一个 TCP 数据报,则接收端就应该发送一个 ACK 数据报。但在实际应用中却并非如此,而是发送端将连续发送数据报保存在接受端的缓冲区中,并且尽量使其填满,接受端对这些连续发送的数据报只发送一个 ACK 报文应答,这就是 ACK 的累积特性,这个特性大大减少了发送端和接收端的负担。

滑动窗口

滑动窗口的滑动是以字节为单位的,窗口是在建立 TCP 连接时,通信双方协商好的接收端的窗口。窗口大小本质上是发送端在等待确认之前所发送数据的最大值。如果发送端收到接受端的窗口大小为 0 的 TCP 数据报,则表示发送端将停止发送数据,等到接受端发送窗口大小不为 0 的数据报的到来。

以下是窗口协议中窗口变化的三种情况:

  1. 窗口合拢,即窗口 左边沿 向 右边沿 靠近。这种现象发生在数据被发送和确认时;
  2. 窗口张开,即窗口 右边沿 向右移动,此时将允许发送更多的数据。这种现象一般发生在另一端的接收进程读取已经确认的数据并释放 TCP 的接收缓存时;
  3. 窗口收缩,即窗口 右边沿 向左移动。一般不建议出现这种现象;

注意:窗口的左边沿受另一端发送的确认序号的控制,因此不能向左边移动。如果接收到一个指示窗口左边沿向左移动的 ACK,则它被认为是一个重复的 ACK,并被丢弃。

在滑动窗口中,发送端只能发送窗口内的数据,并且数据的发送顺序是从左到右。当窗口的 左边沿 达到 右边沿 时,则称其为一个零窗口,表示发送端不能发送任何数据。

慢启动

为了防止网络拥塞,TCP 采用了一种慢启动算法,对发送数据量进行控制。为了调节发送端的数据发送量,引入了拥塞窗口,在慢启动时,将这个拥塞窗口设为 1 个报文段发送数据,之后每收到一次确认应答,拥塞窗口的值就加 1 个报文段。在发送数据包时,将拥塞窗口的大小与接收端主机通知的窗口大小进行比较,然后选择较小的值来控制数据量的发送。拥塞窗口是发送端使用的流量控制,而通告窗口则是接收端使用的流量控制。

紧急方式

TCP 的 紧急方式,它使一端可以告诉另一端有些具有某种方式的
紧急数据 已经放置在普通的数据流中。另一端被通知这个 紧急数据 已被放置在普通的数据流中,由接收方决定如何处理。人紧急数据 并不是 带外数据 。TCP 的紧急方式只是一个从发送方到接收方的通知,该通知告诉接收方 紧急数据 已被发送,并提供该数据最后一个字节的序号,由接收方决定如何处理。应用程序使用的有关 紧急数据 部分的编程接口常常都不是最佳的,从而导致更多的混乱。

参考资料:

《TCP/IP 详解》

时间: 2024-08-04 03:33:50

《网络协议》TCP 的成块数据流的相关文章

TCP/IP协议详解 卷一:协议 20章、TCP的成块数据流

1.引言 该协议允许发送方在停止并等待确认前可以连续发送多个分组,由于发送发不必每发送一个分组就停下来等待确认,因此该协议可以加速数据的传输. 2.正常数据流 数据传输过程中,经受时延的确认.一般来说,发送端发送一个数据报之后,接收端都会发送一个对这个数据报的确认.但是使用TCP的滑动窗口协议的时候,接收方不必对每一个接收的数据报进行确认.我们在上一个章节有提到过,捎带数据的ACK.这里我们要介绍的是,ACK的累积机制.在TCP中,ACK是累积的,它们表现为接收方已经正确接收了一直到确认序号减1

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

眼下建立在TCP协议上的网络协议特别多,有telnet.ssh,有ftp.有http等等.这些协议又能够依据数据吞吐量来大致分成两大类:(1)交互数据类型,比如telnet,ssh.这样的类型的协议在大多数情况下仅仅是做小流量的数据交换,比方说按一下键盘,回显一些文字等等.(2)数据成块类型.比如ftp.这样的类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大.并尽可能的提高效率. 针对这两种情况,TCP给出了两种不同的策略来进行传输数据. 本章介绍TCP所使用的被称为窗体协议的还有一

《TCP/IP详解》读书笔记(20章)-TCP的成块数据流

目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又v金金ZGTERRF可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等.(2)数据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率.针对这两种情况,TCP给出了两种不同的策略来进行数据传输. 本章介绍TCP所使用的被称为窗口

TCP/IP详解 卷1 第二十章 TCP的成块数据流

先补充一个知识: 1.停止等待协议:是tcp保证传输可靠的重要途径,"停止等待"就是指发送完一个分组就停止发送,等待对方确认之后,才能继续发送下一个分组 停止等待协议的优点是简单,缺点就是信道的利用率太低,一次只发送一个消息,信道大部分时间都是空闲的. 2:超时重传有一下三种情况: 1)  分组丢失:发送方发出来了,接收方没有收到 2)  确认丢失:接收方收到了,也发送了确认分组,但是确认分组丢失了 3)  确认延时:确认分组没有丢失,由于传输太慢,发送方在规定时间内没有收到接收方发的

TCP/IP详解 卷一(第二十章 TCP的成块数据流)

本章将介绍TCP所使用的被称为滑动窗口协议的一种流量控制方法. 该协议允许发送方在停止并等待确认前可以连续发送多个分组,这样就可以加速数据的传输. 滑动窗口 下图用可视化的方法显示了滑动窗口协议 我们使用三个术语来描述窗口左右边缘的运动: 1.称窗口左边沿右边缘靠近为窗口合拢.这种现象发生在数据被发送和确认时. 2.当窗口右边沿右移动将允许发送更多的数据,我们称之为窗口张开. 3.当右边沿向左移动时,我们称之为窗口收缩.

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

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

【网络协议】TCP的交互数据流和成块数据流

前言 建立在TCP协议上的应用层协议有很多,如FTP.HTTP.Telnet等,这些协议根据传输数据的多少可以分为两类:交互数据类型和成块数据类型. 交互数据类型,如:Telnet,这类协议一般只做小流量的数据交换,比如每按下一个键,要回显一些字符. 成块数据类型,如:FTP,这类协议需要传输的数据比较多,一般传输的数据量比较大. 针对这两种不同的情况,TCP采用不同的策略进行数据传输. 交互数据流 针对交互性要求比较高的应用,比如Rlogin远程登录中,需要回显客户端输入的字符,每发送一个字节

网络协议|TCP/IP协议相关

双方会发送保活报文,当一方断开连接时,超过一定次数的保活报文没有被收到,就会停止发送. 在浏览器敲入URL并且按回车之后会发生什么: http状态码 post和get的区别 cookie和session的区别 原文地址:https://www.cnblogs.com/cykfory/p/10353501.html

【网络协议】TCP交互数据流和数据流成块

前言 建立在TCP协议上的应用层协议有非常多,如FTP.HTTP.Telnet等,这些协议依据数据传输的多少能够分为两类:交互数据类型和成块数据类型. 交互数据类型,如:Telnet,这类协议一般仅仅做小流量的数据交换.比方每按下一个键,要回显一些字符. 成块数据类型.如:FTP,这类协议须要传输的数据比較多.一般传输的数据量比較大. 针对这两种不同的情况,TCP採用不同的策略进行数据传输. 交互数据流 针对交互性要求比較高的应用,比方Rlogin远程登录中,须要回显client输入的字符,每发