TCP/IP的三次握手和四次挥手

TCP/IP的三次握手和四次挥手

TCP协议是传输层的协议,在TCP/IP协议中提供可靠的连接服务,三次握手是建立连接的过程,四次挥手则是断开连接的过程。

三次握手

TCP/IP三次握手原理图
TCP建立连接前需要进行三次握手。

  • 第一次握手:客户端向服务端发送连接请求,告诉服务端“我要和你建立连接,你听得到我吗?”,SYN=1表示连接请求,seq是随机生成的一个序列,用于之后的接收检验。
  • 第二次握手:服务端收到了客户端的消息后,会发送一个确认消息,告诉客户端“我听到你了,你能听到我吗?”,ACK=1表示确认收到,服务端的seq也会随机生成一个序列,用于之后的接收检验,ack=x+1代表了确认收到了客户端的seq=x这个序列,表示期望下一次收到的序列为x+1。
  • 第三次握手:客户端收到了服务端的消息后,会发送一个确认消息,告诉服务端“我能听到你,我们可以开始传输数据了。”,ACK=1表示确认收到,seq=x+1表示服务端期待收到的序列,ack=y+1表示确认收到了服务端的seq=y这个序列,表示期望下一次收到的序列为y+1。然后就建立起了连接。

四次挥手

TCP/IP的四次挥手原理图
TCP断开连接前需要进行四次挥手。

  • 第一次挥手:客户端发送一个断开连接的请求给服务端,告诉服务端“我要断开连接了,你能听到吗?”,FIN=1表示已经没有数据要发送给服务端了,seq=u是随机生成的一个序列,用于之后的接受检验。
  • 第二次挥手:服务端收到客户端的消息后,发送一个确认消息,告诉客户端“我能听到,我知道你没有数据发给我了。”,ACK=1表示确认,seq=v是随机生成的一个序列,用于之后的接受检验。ack=u+1表示期望下一次收到的seq。(注意:此时服务端还没有发送FIN,所以服务端在这之后仍然可以向客户端发送数据。)
  • 第三次挥手:客户端收到了服务端的确认消息后知道了服务端已经收到自己的消息了,于是继续等待。然后服务端发送一个断开连接的消息给客户端,告诉客户端“我也要断开连接了,你能听到吗?”,FIN=1表示已经没有数据要发送给客户端了,生成一个新的随机序列seq=w,ack仍然是u+1。
  • 第四次挥手:客户端收到服务端的消息后,知道了服务端已经没有数据要发过来了,于是发送一个确认消息给服务端,告诉服务端“我能听到,我们可以断开连接了。”ACK=1表示确认收到了服务端的消息,seq=u+1表示服务端希望收到的序列,ack=w+1表示期望下一次收到的seq。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值