当前位置:   article > 正文

介绍TCP三次握手、传输数据、四次挥手标志为确认号变化规律

介绍TCP三次握手、传输数据、四次挥手标志为确认号变化规律

TCP协议的三次握手是一个关键过程,用于在客户端和服务器之间建立可靠的连接。以下是三次握手的详细过程,包括标志位、序列号以及ACK的变化规律:

第一次握手

  • 客户端
    • 标志位:SYN=1(表示请求建立连接)
    • 序列号:随机生成一个初始序列号seq=x
    • 发送数据包给服务器,并进入SYN_SENT状态,等待服务器确认

第二次握手

  • 服务器
    • 收到客户端的数据包后,从标志位SYN=1知道客户端请求建立连接
    • 标志位:SYN=1(表示同意建立连接),ACK=1(表示确认客户端的序列号)
    • 确认号:ack=x+1(表示期望收到的下一个字节的序列号)
    • 随机生成一个自己的初始序列号seq=y
    • 发送数据包给客户端,并进入SYN_RCVD状态

第三次握手

  • 客户端
    • 收到服务器的数据包后,检查ACK是否为1以及ack是否为x+1,以确保服务器已确认自己的序列号
    • 标志位:ACK=1(表示确认服务器的序列号)
    • 确认号:ack=y+1(表示期望收到的下一个字节的序列号)
    • 发送数据包给服务器
  • 服务器
    • 收到客户端的数据包后,检查ACK是否为1以及ack是否为y+1,以确保连接建立成功
    • 客户端和服务器均进入ESTABLISHED状态,完成三次握手

随后,客户端和服务器之间可以开始传输数据。在整个过程中,序列号和确认号的变化规律确保了数据的顺序性和可靠性。每次发送数据包时,发送方都会将当前序列号加1,并在接收方确认后,接收方会发送一个带有下一个期望序列号的确认包。这种机制确保了数据的正确传输和接收。

二、传输3包数据

假设客户端向服务器发送3个数据包,序列号分别为seq=x+2, seq=x+3, seq=x+4。

服务器接收到每个数据包后,会回复一个ACK包进行确认。

三、四次挥手

当数据传输完成后,任何一方都可以发起四次挥手来关闭连接。

第一次挥手(假设由客户端发起):

  • 客户端
    • 发送一个FIN包,标志位FIN=1,序列号seq=x+n(n为之前发送的数据包数量+1)

第二次挥手

  • 服务器
    • 收到FIN包后,发送ACK包确认,标志位ACK=1,确认号ack=x+n+1

第三次挥手(服务器关闭连接):

  • 服务器
    • 发送一个FIN包,标志位FIN=1,序列号seq=y+m(m为服务器之前发送的数据包数量+1)

第四次挥手

  • 客户端
    • 收到FIN包后,发送ACK包确认,标志位ACK=1,确认号ack=y+m+1

至此,四次挥手完成,TCP连接关闭。

在整个过程中,序列号和确认号的变化始终保持着连续性,确保了数据的正确顺序和可靠性。每个数据包都有一个唯一的序列号,接收方在发送确认包时,会指定下一个期望接收的序列号。这种机制保证了数据的完整性和顺序性,使得TCP成为一个可靠的传输协议。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/501044?site
推荐阅读
相关标签
  

闽ICP备14008679号