socket关于三次握手,四次挥手的理解

参考:https://blog.csdn.net/whuslei/article/details/6667471/#commentsedit

socket的建立是全双工的,所以会有三次握手,但是四次挥手的区别。

         客户端<------------------------------------------->服务器

握手1,客户端请求服务器建立连接(客户端发);

握手2,服务器同意客户端的请求(客户端发),并要求和客户端也建立连接(客户端收);

握手3,客户端同意服务器的请求(客户端收);

然后,客户端和服务器直接进行数据的收发,

(挥手是客户端和服务器端都可以主动发起的,这里以客户端主动发起为例)

挥手1,客户端告诉服务器要中断客户端发往服务器的这条线(客户端发);

挥手2,服务器应答客户端的中断请求(客户端发),此刻可能存在服务器依旧要给客户端发送数据的可能,所以不能中断服务器发往客户端这条线,因此这里就形成了“三次四次的差别”;

然后,服务器发送数据到客户端,

挥手3,服务器告诉客户端要中断服务器发往客户端的这条线(服务器发);

挥手4,客户端应答服务器的中断请求(服务器发);

四次挥手之后,不是立即断开连接,客户端要等待确认服务器收到了应答信息,即TIME_WAIT。

写过socket程序的人都遇到过,客户端的可执行程序运行结束之后,立刻去再执行这个可执行程序时,会提示这个socket正在被用,过两分钟左右,再执行,就不会有提示了,正是TIME_WAIT的原因。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值