TCP握手挥手

三次握手

当客户端向服务端发起连接的时候,会先发送一包连接请求数据,过去询问一下能否建立连接,这包数据我们称之为SYN包,如果服务端同意连接,则服务端向客户端回复SYM+ACK包,客户端收到后再发送一个ACK包,连接建立

为什么三次握手而不是两次握手

为了防止已失效的请求报文再传到服务端引起错误

四次挥手

处于数据连接状态的客户端和服务端都可以发起关闭连接请求,假设客户端主动发起关闭连接请求,它需要向服务端发送一个SYN包,表示要关闭连接,客户端自己则进入中止等待1状态,这是第一次挥手。

服务端收到SYN包,发送一个ACK包给客户端,表示自己进入了关闭等待状态,客户端收到后进入中止等待2状态,这是第二次挥手,服务端此时还可以发送未发送的数据,客户端还可以接受数据。

服务端发送完数据后,就给客户端发送一个FIN包,而后服务端进入最后确认状态,这是第三次挥手。

客户端收到后,给服务端发送一个ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后立即关闭连接,这是第四次挥手

为什么客户端需要设置超时等待时间

为了确认服务端已经收到ACK包,假设客户端发送最后一个ACK包后就释放了连接,一旦ACK因为网络原因不小心丢失,服务端就会一直停留在最后确认状态。如果服务端没有收到ACK包,那么服务端会重发一个FIN包并刷新客户端的超时时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值