TCP协议__释放连接__四次挥手实现的方式和原理(保姆级)

第一次参加1024程序员节,借此机会解释一下TCP协议的释放连接的四次挥手的原理过程吧

在四次挥手中,实际是两两为一组的,每组都是一次FIN结束发送数据,一次ACK确认,并且客户端和服务器都可以自己提出释放连接的要求,在此处我们以客户端提出释放连接来解释四次挥手。

首先由客户端发送一个FIN标志位为1的数据包,代表告诉服务器,我已经没有数据想发送给你了,想要关闭连接。这次是一次挥手

然后服务器接收到客户端的FIN数据包,得知了客户端已经没有数据发送过来了,然后返回一个ACK确认包,但是此时服务器可能并没有关闭数据发送,因为只是客户端没有数据发送给服务器了,但是服务器可能还有数据发送给客户端,所以这个时候服务器只是发送一个确认包,告诉客户端我知道了你没有数据了。

接着直到服务器发送完所有数据之后,会发送一个FIN标志位为1的数据包给客户端,告诉客户端我也没有数据发送了。

最后客户端知道了服务器也没数据发送了就返回一个确认包,接着等待一定时间,双方就结束了连接,以上就是四次挥手的过程

最后我们来详细刨析一下二者的状态,在一开始二者都是连接建立状态,客户端发FIN包之后就进入终止等待一的状态,直到收到确认包就进入终止等待二的状态,这两种状态没有很大的差别,就是单独的等待,并且大部分时间很快就会收到服务器的确认

客户端在收到服务器的FIN包后会进入时间等待状态,并返回一个确认包,但是时间等待与终止等待不同,其含义是等待两倍数据包在网络上的存活时间,这样的目的就是防止服务器没有收到确认包,然后又重传FIN包,这个时候客户端如果关闭了的话,就无法正常的关闭服务器端的连接,并造成其他的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值