TCP三次握手和四次挥手的全过程

TCP三次握手和四次挥手的全过程


     TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:


位码即tcp标志位,6种表示:

SYN(synchronous建立连接)

ACK(acknowledgement 表示响应、确认)

PSH(push表示有DATA数据传输)

FIN(finish关闭连接)

RST(reset表示连接重置)

URG(urgent紧急指针字段值有效)


三次握手:

第一次握手:客户端发送syn(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYNack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

      握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

      确认号:其数值等于发送方的发送序号+1(即接收方期望接收的下一个序列号)

四次挥手:

与建立连接的三次握手类似,断开一个TCP连接则需要四次挥手

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。


TCP挥手过程简言之主动关闭方被动关闭方发送不会再给你发数据了的信息被动关闭方对收到的主动关闭方的报文段进行确认;被动关闭方向主动关闭方发送我也不会再给你发数据了的信息;主动关闭方再次对被动关闭方的确认进行确认。

 TCP三次握手和四次挥手的全过程如下图:



TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

1TCP的三次握手过程:主机AB发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。

2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。

3)采用两次握手不行,原因就是上面说的效的连接请求的特殊情况,因此采用三次握手刚刚好,两次可能出现失效,四次甚至更多次则没必要,反而复杂了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三次握手和四次挥手的对象分别是客户端和服务器。在TCP三次握手中,客户端向服务器发送连接请求报文段,服务器接收到请求后发送确认报文段给客户端,然后客户端再发送确认报文段给服务器,完成连接的建立。这里客户端和服务器是互相通信的对象。而在TCP四次挥手中,一个已经建立的连接要关闭时,主动关闭连接的一方发送连接释放报文段给对方,对方接收到后发送确认报文段,然后对方再发送连接释放报文段给主动关闭连接的一方,最后主动关闭连接的一方再发送确认报文段,完成连接的关闭。也同样是客户端和服务器互相通信的对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [TCP三次握手四次挥手全过程,为什么需要三次握手四次挥手](https://blog.csdn.net/qq_45795744/article/details/123043490)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [两张动图-彻底明白TCP三次握手四次挥手](https://blog.csdn.net/qzcsu/article/details/72861891)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值