资料下载

TCP协议 协议 快速概述

由管理员撰写。发表于 TCP协议 协议 协议分析

4.7333333333333 1 1 1 1 1 评分4.73(30投票)
 压住他

如前所述,TCP是位于传输层的两个协议之一,用于将数据从一台主机传输到另一台主机。使TCP如此流行的原因是它在发送和接收数据时的工作方式。与UDP不同,TCP将不停地努力避免收到的每个数据包中的错误,以避免数据损坏。

一些使用TCP的常见协议是:FTP,Telnet,HTTP,HTTPS,DNS,SMTP和POP3。让我们仔细看一下这个出色协议的主要特征。

人们提到“ TCP协议 / IP”时,请记住,他们所谈论的是一套协议,而不仅仅是大多数人认为的一种协议。 TCP协议 / IP不是一种协议。请看 规约 部分以获取更多信息。

主要特点

这是我们要分析的TCP的主要功能:

  • 可靠的运输
  • 面向连接
  • 流量控制
  • 加窗
  • 致谢
  • 更多开销

可靠的运输

由于它使用不同的技术来确保接收到的数据没有错误,因此它是一种可靠的传输方式。 TCP协议 是一种健壮的协议,用于文件传输,其中不允许发生数据错误。当您决定从网站上下载50MB的文件时,您不想在下载完成后就发现该文件有错误!即使实际上确实发生了这种情况,但这只是表明您不能总是对某些事情保持完美。

此图显示了以太网II帧内的TCP标头。在此框的正下方,您将找到第二个图,该图放大到TCP头,显示协议包含的字段:

tcp-quick-overview-1

  tcp-quick-overview-2左图显示了TCP标头中每个字段的单独细目以及其长度(以位为单位)。

请记住,8位等于1个字节。

TCP协议 协议 头中最受欢迎的字段是“源端口”,“目标端口”和“代码”位。这些代码位也称为“标志”。

其余字段可帮助确保所有TCP段都到达目的地并以正确的顺序重新组装,同时提供了一种无错误机制,以防止少数段丢失并且永远不会到达目的地。

请记住,在接下来的页面中,我们将对每个可用字段进行详细的介绍,现在我们仅提供它们的概述。

 

 

 

 

 

 

 

 

面向连接

这基本上意味着在传输任何数据之前,在两台主机之间,或者说两台计算机之间建立了连接。当使用术语“建立连接”时,这意味着两台计算机彼此了解并已同意交换数据。这也是著名的三向握手发生的地方。您会在“代码位”字段中找到用于执行三向握手的SYN和ACK位。由于三向握手,TCP是面向连接的。

下图说明了三向握手的过程:

tcp-quick-overview-3

步骤1: 主机A将初始数据包发送到主机B。此数据包启用了“ SYN”位。主机B接收到数据包,并看到值为“ 1”的“ SYN”位(二进制,表示为ON),因此它知道主机A正在尝试与其建立连接。

第2步: 假定主机B有足够的资源,它将向主机A发送一个数据包,并使能“ SYN和ACK”位(1)。在此步骤中,主机B发送的SYN表示“我想与您同步”,ACK表示“我确认您先前的SYN请求”。

步骤3: 因此...毕竟,主机A向主机B发送了另一个数据包,并将“ ACK”位置1(1),它有效地告诉主机B:“是,我确认您先前的请求”。

一旦三向握手完成,就建立连接(虚拟电路)并开始数据传输。

 

流量控制

流控制用于控制连接之间的数据流。如果两台主机中的任何一台由于某种原因无法跟上数据传输的速度,它就可以向另一端发送特殊信号,要求它停止或减速以使其能够跟上。

例如,如果主机B是一个人们可以从其下载游戏的Web服务器,那么显然主机A并不是从该Web服务器下载的唯一计算机,因此,主机B必须调节流向从该Web服务器下载的每台计算机的数据流。这意味着它可能会转向主机A,并让它等待一段时间,直到有更多资源可用为止,因为它有另外20个用户试图同时下载。

下图说明了两个主机之间的简单流控制会话。至此,我们只需要了解流控制的概念即可:

tcp-quick-overview-4

一般而言,当机器收到大量数据以至于无法对其进行处理时,它会将其存储在称为“内存”的内存部分中。 缓冲 。仅当数据突发很小且持续时间不长时,此缓冲操作才能解决该问题。

但是,如果数据突发继续,它将最终耗尽接收端的内存,这将导致丢弃到达的数据。因此,在这种情况下,接收端将向发件人或洪灾源简单地发出“未就绪”或“停止”指示符。接收器处理完其内存中的数据后,发送“就绪”或“执行”传输指示符,发送方机器接收“执行”指示符并恢复其传输。

 

加窗

如果发送机在发送每个数据包后必须等待确认,则数据吞吐量或传输效率会很低(正确的术语是 分割 正如我们将在下一页中看到的)。因为在发送方发送数据段之后和完成接收方机器的确认之前有空闲时间,所以发送方使用中断来发送更多数据。如果我们想简单地定义 加窗 我们可以这样声明:这是允许发送机发送的数据段数,而没有收到对它们的确认。

窗口控制从一端到另一端传输多少信息。虽然某些协议通过观察数据包的数量来量化信息,但是TCP / IP通过计数字节数来对其进行测量。

tcp-quick-overview-5

让我们解释一下上图中发生了什么。

主机B正在使用等于1的窗口大小将数据发送到主机A。这意味着主机B期望它发送给主机A的每个数据段都具有“ ACK”。一旦发送了第一个数据段,主机A就会收到它并向主机B发送“ ACK 2”。您可能想知道为什么“ ACK 2”,而不仅仅是“ ACK”?

主机B将“ ACK 2”翻译为:“我确认(ACK)您刚刚发送给我的数据包,并且我准备接收第二(2)段”。因此,主机B准备好第二个数据段并将其发送给主机A,期望主机A发出“ ACK 3”响应,因此它可以发送第三个数据段,如图所示,它接收到“ ACK 3” 。

但是,如果再次接收到“ ACK 2”,则意味着先前的传输出现了问题,主机B将重新传输丢失的段。我们将在稍后的“致谢”部分中了解其工作原理。现在让我们尝试不同的Window大小,以更好地了解..假设3!

请记住“ ACK”的工作方式,否则您可能会发现以下示例有些混乱。如果您听不懂,请再次阅读前面的示例,其中“窗口大小”等于1。

tcp-quick-overview-6

在上面的示例中,我们的窗口大小等于3,这意味着主机B在期望返回“ ACK”之前可以向主机A发送3个数据段。主机B发送前3个段(发送1,发送2和发送3),主机A接收它们的状态良好,然后将“ ACK 4”发送到主机B。这意味着主机A确认了主机B的3个数据段发送并等待下一个数据段,在这种情况下为4、5和6。

 

致谢

可靠的数据传递可确保通过功能齐全的数据链路从一台机器发送到另一台机器的数据流的完整性。这样可以确保数据不会重复或丢失。实现此目的的方法称为 重传的肯定确认。该技术要求接收方通过在接收方接收到数据时将确认消息发送回发送方来与发送方进行通信。发送方记录其发送的每个段,并在发送下一个段之前等待此确认。发送段时,发送机启动计时器,如果在接收方返回确认之前到期,则重新发送。

tcp-quick-overview-7

此图显示了确认的工作方式。如果仔细查看该图,您将看到此传输的窗口大小等于3。首先,主机B向主机A发送3个数据段,并且它们处于完美状态,因此根据我们了解到的信息,主机A发送“ ACK 4”以确认3个数据段,并请求接下来的3个数据段,即4、5、6。结果,主机B发送数据段4、5、6,但是5在途中丢失了,主机A没有收到它,因此,在稍作等待之后,它意识到5丢失了,并向主机B发送“ ACK 5”,表明它希望重新传输数据段5。现在您知道为什么将此方法称为“重传的肯定确认 ”。

此时,主机B发送数据段5,并等待主机A发送“ ACK”,以便它可以继续发送其余数据。主机A接收到第5个数据段,并发送“ ACK 7”,这表示“我收到了前一个数据段,现在请给我发送下一个3”。下一步未在图中显示,但将是主机B发送数据段7、8和9。

 

更多开销

如您所见,TCP框架下有一个非常巧妙的机制,可以使数据无错误地传输。协议支持的所有功能都是有代价的,这是与TCP相关的开销。

在讨论开销时,我们指的是TCP头中包含的所有不同字段,并且进行错误检查以确保数据的任何部分都不会损坏。虽然对于大多数人来说这是一个公平的折衷,但有些人根本无法节省TCP事务所需的额外处理能力,带宽和增加的时间,因此,我们拥有替代的UDP协议,您可以在 UDP协议 部分。

至此,我们对TCP的快速概述已经得出结论。从下一页开始,我们开始更深入地潜水,因此请深呼吸并直接跳入其中!

 
下一页: TCP协议 协议 标头/段

 压住他

文章 阅读下一篇:

CCENT / CCNA

思科公司 路由器

  • SSL WebVPN
  • 保护路由器
  • 基于策略的路由
  • 棒上路由器

虚拟专用网 安全

  • 了解DMVPN
  • GRE / IPSec配置
  • 站点到站点IPSec 虚拟专用网
  • IPSec模式

思科公司 救命

  • 视窗 8 虚拟专用网 客户端
  • 视窗 7的VPN客户端
  • CCP显示问题
  • 思科支持应用程序。

视窗 2012

  • 新的功能
  • 发牌
  • Hyper-V / VDI
  • 安装Hyper-V

的Linux

  • 文件权限
  • Webmin
  • 群组-用户
  • Samba设置