三次握手和四次挥手一点自己理解

TCP三次握手是,通讯的双方(客户端和服务端)建立连接的过程。

TCP是可靠的传输协议,为什么说可靠呢?因为在建立连接以后,客户端和服务端都得知道自己和对方都能正常的发送和接收报文。

第一次握手:客户端发送连接报文(syn:表示建立连接,seq:报文序列号)给服务端,服务端收到报文以后。

这个时候,服务端能得出的结论是:客户端能够正常发送和自己能够正常的接收报文。

第二次握手:服务端对第一次报文的确认和连接的请求(syn:表示建立连接,seq:报文序列号,ACK表示有确认信息,Ack表示确认报文的序列号+1),客户端收到报文以后。

这个时候,客户端能得出结论是:服务端可以正常的接收和发送报文,自己也能正常的发送报文。(但是服务端还不确定客户端能不能正常的接收自己的报文)

第三次握手:客户端对服务端建立连接的报文(seq,改报文序列号,ACK表示有确认信息,Ack表示确认报文的序列号+1)进行确认。服务端收到以后。

这个时候,服务端就知道了客户端能正常接收自己的报文。

最后,建立连接。

这个过程:客户端的状态由syn_sent到established;

                  服务端的状态由syn_rcv到establish。

 

 

四次挥手:等数据包传完以后,TCP关闭连接,为了确保可靠,就是客户端都需要知道对方的报文已经传输完成了。

第一次挥手:客户端发送(FIN:断开连接,seq:改报文序列号)断开连接的报文,服务端收到以后。

这个时候,服务端能得出的结论是:客户端的数据报文传完了,客户端也知道自己的数据传完了。

第二次挥手:服务端客户断开连接的请求发送响应报文(ACK有确认信息,Ack:确认报文的序列号+1,seq:改报文序列号),客户数收到以后。

这个时候,客户端只能得出结论是:服务端知道自己数据传完了,但是还不能关闭连接,因为不知道服务端还有没有其他的数据包要传。

第三次挥手:等到服务端的数据传完以后,也发起一个断开连接的报文(FIN:断开连接,seq:改报文序列号),客户端收到以后。

这个时候,客户端就能得出结论是:服务端数据传完了,我也传完了,可以断了

第四次挥手:给服务端发送确认第三次请求的报文(ACK有确认信息,Ack:确认报文的序列号+1,seq:改报文序列号),断开(为了可靠,通知服务端,我收到了断开连接的报文了)。

这个过程,客户端状态:由established >>> FIN_wait_1>>>>>>FIN_wait_2>>>>>>Time_wait>>>>>closed;

客户端状态:由established >>> FIN_wait_1>>>>>>FIN_wait_2>>>>>>Time_wait>>>>>closed;

服务端状态:由established >>> close_wait>>>>>>last_ack>>>>>closed

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值