TCP建立连接的三次握手与断开连接的四次握手

要理解三次握手和四次握手,首先要知道一个基本的假设:网络环境是不稳定的,发送出去的消息很可能不能被对方收到。由于生活中的网络环境复杂多变,这种假设是非常合理的。
1. TCP建立连接需要三次握手
客户端请求和服务端通信时首先告知服务端准备接收资源进行第一次握手,客户端发送(伸手)、服务端接收(握手),服务端收到后还好向客户端返回一条消息(第二次握手)告诉客户端“消息已收到”。
如果没有第二次握手,客户端则无法确信自己发送的信息被服务端收到了,如果客户端在发送第一次握手请求后就准备发送数据则很有可能服务端没收到,因此后续发送的数据也没人接收,通信就失败了。
同理,第二次握手后服务端也不确定客户端是否接收到了该信息,因此需要客户端再次确认,进行第三次握手。三次握手过后,客户端和服务端都确信双方已经知道当前的通信需求,进而为通信分配相关的资源,接着传输数据。
三次握手
理论一点,第一次握手时发送的是SYN信号(同步请求信号),第二次握手时发送的是SYN-ACK信号(同步请求应答信号),第三次握手时发送的是ACK(应答信号)信号。如下图所示:
三次握手 图片来自:http://www.inetdaemon.com /img/internet/3-way-handshake.gif
2. TCP释放连接需要四次握手

不同于请求建立,断开/释放连接时需要进行四次握手,这时因为通信时双向的,一方发送完数据请求断开连接的时候要确保对方也发送完数据,如果还没发送完需要接收对方发送的数据,在对方也通知数据全部发送完毕后才能断开连接,因此增加了一次握手。
四次握手

理论一点,第一次握手时发送的是FIN信号,第二次握手时发送的是ACK信号,第三次握手时发送的是FIN信号,第四次握手时发送的是ACK信号。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值