TCP的三次握手与四次挥手过程

TCP的三次握手

TCP的三次握手与四次挥手过程_第1张图片

第一次握手
源主机发送一个同步标志位 SYN=1的 TCP数据段。此段中同时标明初始序号(InitialSequenceNumber,ISN)。ISN是一个随时间变化的随机值,即SYN=1,SEQ=x。源主机进入SYN-SENT状态
第二次握手
目标主机接收到 SYN包后,发回确认数据报文。该数据报文 ACK=1,同时确认序号字段,表明目标主机期待收到源主机下一个数据段的序号,即 ACK=x+1(表明前一个数据段已收到并且没有错误)。
此外,此段中设置 SYN=1,并包含目标主机的段初始序号 y,即 ACK=l,确认序号ACK=x+1,SYN=1,自身序号 SEQ=y。此时目标主机进入 SYN-RCVD 状态,源主机进入ESTABLISHED 状态
第三次握手

源主机再回送一个确认数据段,同样带有递增的发送序号和确认序号(ACK=1,确认序号ACK=y+1,自身序号SEQ,TCP 会话的三次握手完成。接下来,源主机和目标主机可以互相收发数据。

TCP的四次挥手

TCP的三次握手与四次挥手过程_第2张图片

 前提:双方通信之前均处于ESTABLISHED状态

第一步
源主机发送一个释放报文(FIN=l,自身序号SEQ=x),源主机进入FIN-WAIT 状态

第二步
目标主机接收报文后,发出确认报文 (ACK=1,确认序号为ACK=x+1,序号 SEQ=y),目标主机进入CLOSE-WAIT 状态。这个时候,源主机停止发送数据,但是目标主机仍然可以发送数据,此时 TCP连接为半关闭状态(HALF-CLOSE)
源主机接收到 ACK 报文后,等待目标主机发出 FIN报文,这可能会持续一段时间。
第三步
目标主机确定没有数据,向源主机发送后,发出释放报文 (FIN=1,ACK=1,确认序号ACK=x+1,序号SEQ=z)目标主机进入LAST-ACK状态。
注意:这里由于处于半关闭状态 (HALF-CLOSE),目标主机还会发送一些数据,其序号不一定为y+1,因此设为Z。而且,目标主机必须重复发送一次确认序号ACK=x+1。
第四步
源主机接收到释放报文后,对此发送确认报文(ACK=1,确认序号ACK=z+1,自身序号SEQ=x+1),在等待一段时间确定确认报文到达后,源主机进入CLOSED状态
目标主机在接收到确认报文后,也进入CLOSED状态

TCP作为面向连接的协议,使用了3种机制实现了面向连接的服务

•使用序号对数据报进行标记。
这种方式便于TCP接收服务在向高层传递数据之前调整失序的数据包。
•TCP使用确认、校验和定时器系统提供可靠性。
当接收者按照顺序识别出数据报未能到达或者发生错误时,接收者将通知发送者:或者接收者在特定时间没有发送确认信息,那么发送者就会认为发送的数据报并没有到达接收方。这时发送者就会考虑重传数据。
•TCP使用窗口机制调整数据流量。
窗口机制可以减少因接收方缓冲区满而造成丢失数据报文的可能性。

你可能感兴趣的:(计算机网络,tcp/ip,网络,服务器,网络协议,计算机网络,计算机组成原理)