三次握手和四次挥手

TCP连接:

    三次握手:建立连接;四次挥手:断开连接。


直接上图:


符号解释:

SYN:表示发起一个新连接;(标志位)

Seq序号:用来标识从TCP源端向目的端发送的字节流,发送方发送数据时对此进行过标记;

ACK:确认序号有效,ACK=Seq+1;(标志位)

FIN:表示释放一个链接;(标志位)


三次握手

第一次握手:客户端(Client)发送SYN=1,随机产生Seq=X,将数据包发送给服务器(Server),并进入SYN_SENT状态,等待服务器确认;

第二次握手:服务器接收到数据包后,由SYN=1知道客户端请求建立连接,服务器将SYN和ACK都置为1,ack=X +1,随机产生Seq=Y,将数据包发送给客户端以确认连接请求,服务器端进入SYN-RCVD状态;

第三次握手:客户端收到确认后,检查ACK=1?ack=X+1?如果是,则将ACK置为1,ack=Y+1,Seq=X+1,并将数据包发送给服务器。服务器接收到数据包后,确认ACK=1?ack=Y+1?如果是,则连接建立成功,客户端和服务器端都进入ESTABLISHED状态,也即完成了三次握手。


四次挥手(由于TCP连接是全双工的,需要对每个方向单独进行关闭,也即需要客户端和服务器端分别发送FIN来关闭连接。首先进行关闭的一方将执行主动关闭,另一方则执行被动关闭。客户端和服务器端都可以是主动关闭的那一方。)

第一次挥手:客户端发送FIN=1(为了简便,图中其余标志位和符号这里略,和三次握手的原理是一样的),用来关闭客户端到服务器端的数据传送,客户端进入FIN-WAIT-1状态;

第二次挥手:服务器接收到数据包后,由FIN=1知道客户端请求断开连接,将ACK置为1,ack=X+1,服务器端进入CLOSE-WAIT状态(注意:这里服务器端还是可以正常发送数据,只是客户端不再发送数据);客户端受到确认后,检查ACK和ack,如果正确,进入FIN-WAIT-2状态;

第三次挥手:服务器端发送FIN=1,用来关闭服务器端到客户端的数据传送,进入LAST-ACK状态;

第四次挥手:客户端接收到数据包后,进入TIME-WAIT状态,然后发送数据包(ACK=1,ack=Z+1)给服务器,服务器端进入CLOSED状态,即完成四次挥手。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值