学习记录:三次握手四次挥手

TCP三次握手与四次挥手详解

三次握手与四次挥手

  • 三次握手

三次握手是客户端与服务端建立连接的过程。

目的:解决网络信道不可靠的问题。

第一次握手:客户端向服务端发送一个SYN包,目的为询问是否同意链接。

第二次握手:若对端同意连接,则回复一个SYN+ACK包。

第三次握手:若客户端收到,则回复一个ACK包。

连接建立。
客户端与服务端进入数据传输状态。

问题:为什么需要三次握手而不是两次?

三次握手可用防止已失效的请求报文突然传到服务器引起错误,导致两端状态不一致的问题,而二两次握手不能。

  • 四次挥手

目的:在不可靠的网络链路中,进行可靠的连接断开。

处于连接状态的服务端和客户端都可以发起关闭连接请求。此时需要四次挥手来进行连接关闭

假设客户端要发起关闭连接请求则:

第一次挥手:向客户端发送一个FIN包,表示要关闭连接。客户端进入终止等待一状态(FIN-WAIT-1)。

第二次挥手:当服务端接收到FIN包,发送一个ACK包表示自己进入关闭等待状态(CLOSE-WIAIT),客户端进入终止等待二状态(FIN-WAIT-2)。

此时服务端还可以发送未发送的数据,客户端还能接收数据。

第三次挥手:当服务端发送完数据后,发送一个FIN包,进入最后确认状态(LAST-ACK)。

第四次挥手:客户端收到FIN包后,回复一个ACK包进入超时等待状态(TIMEE-WAIT),经过超时等待之后关闭连接。当服务端收到ACK包的时候立即关闭连接。

客户端需要超时等待的原因

保证对端收到ACK包,若没有超时等待且ACK包丢失,服务端将一直处于最后确认状态。

若有超时等待,当ACK包丢失服务端未收到,则服务端将重发FIN包,客户端相应FIN包后将重发ACK包并刷新超时时间。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值