2020-09-01

TCP三次握手、四次挥手

1 三次握手

建立TCP连接时,需要客户端和服务端共发送3个包。步骤为:

  • 客户端向服务器发送SYN=1的连接请求标志和初始序号seq=x;
  • 服务器向客户端发送确认标志ACK=1、请求标志SYN=1,客户端的确认序号ack=x+1以及自己的序号seq=y;
  • 客户端发送ACK确认标志,服务器的确认序号ack=y+1,自己的序号seq=x+1;

第一步:客户端调用connect发送连接请求到服务器,服务器知道:客户端的发送正常,服务器的接收正常;

第二步:服务器向客户端发送表示已经接收,             客户端知道:客户端的发送、接收正常,服务器的发送、接收正常;

第三步:客户端发送给服务器                                      服务器知道:客户端的发送、接收正常,服务器的发送、接收正常

TCP是全双工传输,在发送的同时也可以接收,通过三次握手,客户端和服务器都知道双方的发送和接收能力正常。

2 四次挥手

  • 客户端发送用于释放连接的结束标志FIN=1,自己的序列号seq=u,告诉服务器再不会通过send发送数据;
  • 服务器收到客户端的请求后,发出确认标志ACK=1、客户端确认号ack=u+1、自己的序列号seq=v给客户端,表示自己已收到,关闭接收功能;
  • 服务器的recv解堵塞,调用close来关闭自己的发送功能,发送结束标志FIN=1、确认标志ACK=1、确认序列号seq=u+1和自己的序列号seq=w给客户端;
  • 客户端收到后,发送确认ACK=1、ack=w+1、自己的seq=u+1给服务器,进入时间等待,经过两倍的数据包最长寿命后,客户端关闭,服务器收到确认后,进入关闭状态。

第一次挥手,客户端告诉服务器他不会再向服务器发送数据;第二次挥手,服务器告诉客户端自己知道了并关闭自己的接收功能;到此,客户端关闭了发送功能,服务器关闭了接收功能,服务器不会再傻傻等待来自客户端的消息(数据),从而解堵塞去关闭自己的发送功能,第三次挥手就是服务器告诉客户端自己要关闭发送功能了;客户端接收到后,在第四次挥手中,向服务器表示自己已经收到,并且进入等待状态,等待时间为2*MSL,这是因为万一由于网络等传输问题,服务器在超时后没有收到,会向客户端请求再发,这样客户端资源还在,有时间做出回应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值