三次握手和四次挥手

三次握手:

        第一次握手:

        首先客户端给服务端发送连接请求报文,在这个报文中,有SYN,seq=任意值i,发送之后就处于SYN-SENT状态。

        第二次握手:

        服务端接收到了这个请求,这个时候服务端确认了客户端的发送和自己的接收是没有问题的,之后返回给客户端SYN和ACK报文,且小ack=i+1,这个时候处于SYN-RCVD状态。

        第三次握手:

        客户端收到了服务端发送的ACK信息之后,确认了自己的发送。自己的接收、服务端的发送和服务端的接收是没有问题的,之后回给服务端一个ACK报文,之后建立连接,进established状态。且服务器收到客户端的ACK之后确认了客户端的接收和自己的发送没有问题的。

 

四次挥手

        第一次挥手:

        当客户端没有数据要发送给服务端的时候,就会给服务端发送一个FIN报文,告诉服务端:“我已经没有数据要发送了,但是你要是还想给我发数据的话,就接着发,但是要告诉我你接收到了FIN我关闭的消息”,之后,客户端进入了FIN_WAIT1状态。

        第二次挥手:

        当服务端收到了客户端发送来的FIN报文之后,就会回给客户端一个ACK消息,并且ack=seq+1,这是第二次挥手,挥手完之后服务端进入CLOSE_WAIT阶段,而客户端处于FIN_WAIT2状态。

        第三次挥手:

        当服务端发送完所有的数据时,他会给客户端发送一个FIN报文,告诉客户端“我已经传完所有数据,现在要关闭连接”,然后服务端编程LAST_ACK状态,等待着客户端最后的ACK信息。这是第三次挥手。

        第四次挥手:

        当客户端收到这个FIN报文时,就会给服务端发送ACK信息,之后进入TIME_WAIT状态,这是为了防止最后一次FIN报文丢失,保证服务器没收到ACK消息可以重传。而当服务端收到这个ACK信息之后就正式关闭了tcp连接,处于CLOSED状态。而客户端等待了2MSL之后还是没有收到消息就知道服务端已经关闭了,于是他自己就断开,这是第四次挥手。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值