📜  TCP

📅  最后修改于: 2020-11-10 04:44:38             🧑  作者: Mango

TCP协议

TCP代表传输控制协议。它是一种传输层协议,有助于将数据包从源传输到目标。这是一种面向连接的协议,意味着它在网络中计算设备之间发生通信之前先建立连接。该协议与IP协议一起使用,因此一起称为TCP / IP。

TCP的主要功能是从应用程序层获取数据。然后它将数据分成几个数据包,为这些数据包编号,最后将这些数据包传输到目的地。另一方面,TCP将重组数据包并将其传输到应用程序层。我们知道TCP是一种面向连接的协议,因此连接将保持建立状态,直到发送方和接收方之间的通信未完成为止。

TCP协议的特点

以下是TCP协议的功能:

  • 传输层协议

TCP是一种传输层协议,因为它用于将数据从发送方传输到接收方。

  • 可靠

TCP是可靠的协议,因为它遵循流和错误控制机制。它还支持确认机制,该机制检查数据的状态和声音到达。在确认机制中,接收方向发送方发送肯定或否定确认,以便发送方可以知道数据包是否已被接收或需要重新发送。

  • 数据顺序保持

该协议确保数据以发送的相同顺序到达预期的接收者。它对每个段进行排序和编号,以便目标端的TCP层可以根据其顺序重新组合它们。

  • 面向连接

这是一种面向连接的服务,这意味着数据交换仅在建立连接之后才发生。数据传输完成后,连接将终止。

  • 全双工

全双工意味着数据可以同时在两个方向上传输。

  • 面向流

TCP是一种面向流的协议,因为它允许发送方以字节流的形式发送数据,并且还允许接收方以字节流的形式接受数据。 TCP创造了一个环境,在该环境中,发送方和接收方都通过一个称为虚拟电路的虚拟管连接。该虚拟电路在互联网上传输字节流。

需要传输控制协议

在网络模型的分层体系结构中,整个任务分为较小的任务。每个任务都分配给处理该任务的特定层。在TCP / IP模型中,五个层是应用程序层,传输层,网络层,数据链路层和物理层。传输层在为直接应用程序提供端到端通信方面起着至关重要的作用。它创建了65,000个端口,以便可以同时访问多个应用程序。它从上层获取数据,然后将数据分成较小的数据包,然后将其传输到网络层。

TCP的工作

在TCP中,使用三向握手建立连接。客户端发送带有序列号的段。反过来,服务器将使用自己的序列号和确认序列发送其网段,该确认序列比客户端序列号大一。客户端收到其段的确认后,便将确认发送到服务器。这样,可以在客户端和服务器之间建立连接。

TCP的优点

  • 它提供了面向连接的可靠服务,这意味着它保证了数据包的传递。如果数据包在网络上丢失,则TCP将重新发送丢失的包。
  • 它提供了使用滑动窗口协议的流控制机制。
  • 它使用校验和提供错误检测,并使用Go Back或ARP协议提供错误控制。
  • 它通过使用网络拥塞避免算法来消除拥塞,该算法包括各种方案,例如加性增加/乘性减少(AIMD),慢速启动和拥塞窗口。

TCP的缺点

由于每个段都有自己的TCP标头,因此增加了大量的开销,因此路由器的分段会增加开销。

TCP标头格式

  • 源端口:它定义了正在发送数据的应用程序的端口。因此,此字段包含源端口地址,它是16位。
  • 目标端口:它定义接收方应用程序的端口。因此,此字段包含目标端口地址,它是16位。
  • 序列号:此字段包含特定会话中数据字节的序列号。
  • 确认号:设置ACK标志时,它包含数据字节的下一个序列号,并用作对先前接收到的数据的确认。例如,如果接收方接收到段号“ x”,则其将“ x + 1”作为确认号进行响应。
  • HLEN:指定标头中由4字节字表示的标头长度。标头的大小在20到60个字节之间。因此,此字段的值将在5到15之间。
  • 保留:这是一个4位字段,供将来使用,默认情况下,所有字段均设置为零。
  • 标志有六个控制位或标志:
    1. URG:它表示紧急指示器。如果已设置,则将紧急处理数据。
    2. ACK:如果ACK设置为0,则表示数据包不包含确认。
    3. PSH:如果设置了此字段,则它将请求接收设备将数据推送到接收应用程序,而不对其进行缓冲。
    4. RST:如果已设置,则请求重新启动连接。
    5. SYN:用于在主机之间建立连接。
    6. FIN:它用于释放连接,并且不会进行进一步的数据交换。
  • 窗口大小这是一个16位字段。它包含接收器可以接受的数据大小。该字段用于发送方和接收方之间的流控制,并且还确定接收方为段分配的缓冲区数量。该字段的值由接收方确定。
  • 校验和这是一个16位字段。在UDP中,此字段是可选的,但在TCP / IP的情况下,此字段是必填的。
  • 紧急指针如果URG标志设置为1,它是指向紧急数据字节的指针。它定义一个值,该值将添加到序列号中以获得最后一个紧急字节的序列号。
  • 选项它提供其他选项。可选字段以32位表示。如果此字段包含的数据少于32位,则需要填充以获取剩余的位。