TCP状态机、标志位、序列号学习

 

 

很复杂的状态转换,是吧?三次握手,呵呵,理解的过于肤浅了,握手确实只有三步,但是握手之后了,如何说话?通信结束时,如何分手?这都是需要了解的。

      在了解如上的过程前,我们需要理解上图出现的各个状态的意义。

标志位

URG:头部中的紧急指针部分应该被检查
     此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据。

ACK:确认号应该被检查
     此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0。

PSH:接受者应该尽快将数据交给下一层处理
     这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队。

RST:连接应该被重置
     这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。

SYN:初始化一个连接
     表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK =0;连接被相应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功将导致被扫描的机器消耗资源,因此一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手。

FIN:发送方(应该是连接双方)完成数据传送
     表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP 数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。当一个FIN标志的TCP数据包发送到一台计算机的特定端口,如果这台计算机响应了这个数据,并且反馈回来一个RST标志的TCP包,就表明这台计算机上没有打开这个端口,但是这台计算机是存在的;如果这台计算机没有反馈回来任何数据包,这就表明,这台被扫描的计算机存在这个端口。

PS: 还有一种数据包,不包含任何标志位 ,可以称为Null数据包 ,计算机收到NULL的数据包(未试验),将回应一个FIN标志的TCP数据包。

状态机

LISTEN :侦听来自远方的TCP端口的连接请求

SYN-SENT :在发送连接请求后等待匹配的连接请求

SYN-RECEIVED :在收到和发送一个连接请求后等待对连接请求的确认

ESTABLISHED :代表一个打开的连接,数据可以传送给用户

FIN-WAIT-1 :等待远程TCP的连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2 :从远程TCP等待连接中断请求

CLOSE-WAIT :等待从本地用户发来的连接中断请求

CLOSING :等待远程TCP对连接中断的确认

LAST-ACK :等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT :等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED :没有任何连接状态

      好,现在我们可以对照上图来解释下TCP的状态演变过程了,分为三个阶段

阶段一:建立TCP连接
      TCP建立连接,也就是我们常说的三次握手,它需要三步完成。在 TCP 的三次握手中,发送第一个 SYN 的一端执行的是主动打开。而接收这个 SYN 并发回下一个 SYN 的另一端执行的是被动打开。
      结合最上面的TCP状态图,我们提取建立TCP连接的部分出来详细说明:

      详细步骤如下:
       第 1步:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号是客户端随机产生的一个值(假设为J ),确认号是  0 ;参考报文:


      第 2步:服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号是服务器随机产生的一个值(假设为K ),确认号是客户端的初始序列号J+1 ;参考报文:


      第 3步:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值J+1 ,确认号是服务器的初始序列号K+1 。参考报文:

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三次握手和四次挥手是TCP连接建立和断开过程使用的通信机制。三次握手用于建立连接,而四次挥手用于断开连接TCP连接状态机如下所示: 1. 初始状态(CLOSED):这是连接的初始状态,表示没有建立连接。 2. 第一次握手(SYN_SENT):在这个状态下,客户端向服务器发送一个SYN(同步)报文段,请求建立连接。 3. 第二次握手(SYN_RECEIVED):服务器收到客户端的SYN报文段后,会发送一个SYN和ACK(确认)报文段作为回应,表示接受连接请求,并发送一个随机的序列号。 4. 第三次握手(ESTABLISHED):客户端收到服务器的SYN和ACK报文段后,会发送一个ACK报文段作为确认,表示连接已经建立。此时,双方都进入已建立连接的状态。 5. 数据传输(ESTABLISHED):在已建立连接的状态下,双方可以进行数据的传输。 6. 第一次挥手(FIN_WAIT1):任何一方决定关闭连接时,会发送一个FIN(结束)报文段,表示要关闭连接。 7. 第二次挥手(FIN_WAIT2):接收到关闭请求的一方会发送一个ACK报文段作为确认,并进入等待关闭的状态。 8. 第三次挥手(TIME_WAIT):发送关闭请求的一方在收到确认后会进入等待状态,等待一段时间(2MSL)以确保所有报文段都已经从网络消失。 9. 第四次挥手(CLOSED):发送关闭请求的一方在等待时间过后,会发送最后一个ACK报文段作为确认,然后进入关闭状态。接收到最后一个ACK报文段的一方也会进入关闭状态。 这就是三次握手和四次挥手的状态机过程。通过这个过程TCP连接可以在建立和断开时保持可靠和稳定的通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [tcp状态机-三次握手-四次挥手以及常见面试题](https://blog.csdn.net/callinglove/article/details/109316968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [三次握手于四次挥手.docx](https://download.csdn.net/download/u013769717/12815580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [计算机网络③-②:TCP头格式、三次握手、四次挥手、TCP状态机](https://blog.csdn.net/weixin_44478659/article/details/120959782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值