TCP建立过程(三次握手)详解以及为什么三次握手?



客户端先向服务器发送一个请求报文,标志位SYN置为1,序号位X置为0,客户端进入SYN_SEND状态,等待服务器确认。服务器接收到客户端的请求报文后,通过标志位SYN==1得知,发送这个报文的客户端需要连接,服务器就向客户端发送一个确认报文,标志位ACK置为1,序号位Y置为0,并为此次连接分配资源,服务器进入SYN_RECV状态。客户端收到服务器的确认报文后,如果ACK的值等于客户端序位号的值加一,那么客户端就向服务器发送一个确认报文,ACK标志位=Y+1,序号位=X+1,并为此次连接分配资源。服务器收到确认报文后,确定ACK=Y+1。客户端和服务器都进入ESTABLISH状态。三次握手完成
为什么是三次握手?
第一次握手成功:客户端能发送消息,服务器能接收客户端发来的消息
第二次握手成功:服务器能够对客户端发来的消息做出正确的应答,客户端能够接收信息
第三次握手成功:客户端能够对服务器发来的信息做出正确的应答
有一种想法,第二次握手之后,客户端能发能收,服务器能发能收,这样的话客户端和服务端沟通已经没有障碍了,为什么还要第三次握手?举个例子,客户端向服务器发送了一条请求报文,过了一会,客户端没有收到服务器的确定报文,客户端重新发一次请求报文,服务器收到,并与客户端完成三次握手,通信,断开连接。之后,服务器又收到了之前没有收到的请求报文,按照两次握手,这时候服务器确定客户端请求建立连接,并向客户端发送确定报文,等待与客户端的通信,这时候客户端其实并没有请求连接,但是服务器一直在等待,如果是三次握手,服务器在一段时间内没有收到客户端发送的确定报文,服务器就知道了客户端没有要请求连接,节省了等待时间。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值