TCP协议中的三次握手和四次挥手

为什么要进行三次握手?(是为了建立连接)

       答:三次握手的目的是建立可靠的通信信道,简单来说就是数据的发送和接收,而三次握手的主要目标就是双方确认自己与对方的发送和接收都正常。

            第一次握手:客户端给服务器发送请求沟通的信息,服务器接收到信息(就类似于拨电话给服务器)

            第二次握手:服务器给客户端发送接收到信息的确认信息,(类似于服务器接通电话了,然后给客户端说了个你好;)

            第三次握手:客户端给服务器发送他可以接受到服务器的信息,确认了一下双方的沟通正常。(类似于客户端给服务器说我是谁,我要干嘛,通过这一次握手,服务器才和客户端真正的确认了对方的身份)


为什么要四次挥手?(是为了释放连接)

          答:一方发送FIN只表示自己发完了所有要发的数据,但还允许对方继续吧没发完的数据发过来。

            第一次挥手:A和B通电话,马上结束了,A对B说:我说完了要挂电话了,(本次通话A为晚辈,b为 前辈)

            第二次挥手:B收到A的消息以后,给A说我知道了 确认要挂电话了(从计算机的角度来说,收到信息以后发一个确认信息过去,但是还以需要在发送一个自己要关闭连接的请求给对方)

            第三次挥手:B给A在上次挥手给A发送了回应对方请求连接的信息以后,还要再发一次自己要断开连接的请求给对方

            第四次握手:A接受到B的请求断开连接以后,发出同意的信息,这是第四次,这样他们就算双方都知道对面要断线的信息,才彻底断开连接。

官方定义:三次握手

            

第一次

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

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

第三次

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

官方定义:四次挥手

1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
  (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
 (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
  (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。


    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值