TCP中的服务和段结构

传输控制协议是最常见的传输层协议。它与IP一起工作,并使用IP协议提供的网络层服务在进程之间提供可靠的传输服务。
TCP向应用层提供的各种服务如下: 
 

  1. 流程间通信- 
    TCP提供了一种进程到进程的通信,即在终端系统上执行的各个进程之间发生的数据传输。这是使用端口号或端口地址完成的。端口号为16位长,有助于识别主机上哪个进程正在发送或接收数据。
     
  2. 流导向- 
    这意味着数据以字节流的形式发送和接收(不像UDP或IP将位划分为数据报或数据包)。然而,为TCP提供服务的网络层发送的是信息包而不是字节流。因此,TCP将多个字节一起分组为一个,并将报头添加到这些段中的每一个,然后将这些段传递到网络层。在网络层,这些数据段中的每一个都封装在IP数据包中进行传输。TCP报头具有控制目的所需的信息,这些信息将与段结构沿着讨论。
     
  3. 全双工服务- 
    这意味着通信可以同时在两个方向上进行。
     
  4. 面向连接的服务-
    与UDP不同,TCP提供面向连接的服务。它定义了3个不同的阶段:
    • 连接建立
    • 数据传输
    • 连接终止
  5. 可靠性- 
    TCP是可靠的,因为它使用校验和进行错误检测,尝试通过重传、确认策略和计时器来恢复丢失或损坏的数据包。它使用字节号、序列号和确认号等特征,以确保可靠性。此外,它使用拥塞控制机制。
     
  6. 复用- 
    TCP分别在发送端和接收端进行复用和解复用,因为可以通过物理连接在端口号之间建立多个逻辑连接。
     

字节号、序列号和确认号: 
要传输的所有数据字节都被编号,并且该编号的开始是任意的。序列号被赋予段,以便在接收器端重新组装字节,即使它们以不同的顺序到达。段的序列号是发送的第一个字节的字节号。由于TCP提供全双工服务,因此需要确认号。确认号是接收器期望接收的下一个字节号,其还提供用于接收先前字节的确认。
范例: 

图片[1]-TCP中的服务和段结构-可能资源网

在这个例子中,我们看到A发送了确认号1001,这意味着它已经接收到数据字节,直到字节号1000,并期望接下来接收1001,因此B接下来从1001开始发送数据字节。类似地,由于B在从A到B的第一次数据传输之后已经接收到数据字节直到字节号13001,因此B发送确认号13002,即它期望接下来从A接收的字节号。

TCP段结构- 
TCP数据段由要发送的数据字节和TCP添加到数据的报头组成,如图所示: 

图片[2]-TCP中的服务和段结构-可能资源网

TCP数据段的报头可以是20-60字节。40字节用于选项。如果没有选项,则头是20字节,否则它最多可以是60字节。
标题字段: 
 

  • 源端口地址- 
    一个16位字段,保存发送数据段的应用程序的端口地址。
     
  • 目标端口地址- 
    一个16位字段,用于保存接收数据段的主机中应用程序的端口地址。
     
  • 序号- 
    一种32位字段,保存序列号,即在该特定数据段中发送的第一个字节的字节号。它用于在接收端重新组装乱序接收的段的消息。
     
  • 确认编号- 
    一个32位的字段,它保存确认号,即接收方希望下一次接收的字节号。它是对成功接收到先前字节的确认。
     
  • 报头长度(HLEN)- 
    这是一个4位字段,通过报头中的4字节字的数量来指示TCP报头的长度,即如果报头是20字节(TCP报头的最小长度),则该字段将保存5(因为5 X 4 = 20)和最大长度:60字节,那么它将保存值15(因为15 x 4 = 60)。因此,该字段的值始终在5和15之间。
     
  • 控制标志-
    这些是6个1位控制位,它们控制连接建立、连接终止、连接中止、流控制、传输模式等。它们的功能是:
    • URG:紧急指针有效
    • ACK:确认号有效(在累积确认的情况下使用)
    • PSH:请求推送
    • RST:重置连接
    • 同步序列号
    • FIN:终止连接
  • 窗口大小- 
    此字段以字节为单位告知发送TCP的窗口大小。
     
  • 校验和- 
    此字段保存用于错误控制的校验和。它在TCP中是强制性的,而不是UDP。
     
  • 紧急指示- 
    该字段(仅在URG控制标志被设置时有效)用于指向迫切需要的、需要最早到达接收过程的数据。此字段的值与序列号相加,以获得最后一个紧急字节的字节号。
     

TCP连接- 
TCP是面向连接的。TCP连接通过三次握手建立。

THE END
抢沙发

请登录后发表评论

    暂无评论内容