关于TCP三次握手和四次挥手的个人理解

三次握手

首先TCP是为了建立稳定的连接,所以双方都需要确认对方的接收能力和发送能力。

  • 第一次握手:由客户端发送报文给到服务端

    报文内容:SYN=1 seq=x
    SYN是给服务端用来确认客户端的发送能力
    seq是用来标记数据段的顺序,由本地随机生成的,这里用x代替

    客户端状态:已发送
    服务端状态:监听

  • 第二次握手:由服务端发送给客户端

    报文内容:SYN=1 ACK=1 seq=y ack=x+1
    SYN是给客户端用来确认服务端的发送能力
    ACK是给客户端确认服务端的接收能力
    seq是服务端本地随机生成的
    ack是期待收到对方下一个报文段的第一个数据字节的序号

    客户端状态:已建立连接
    服务端状态:已接收

  • 第三次握手:有客户端发送给服务端

    报文内容:ACK=1 seq=x+1 ack=y+1

    客户端状态:已建立连接
    服务端状态:已建立连接

简单来说就是

客户端:“能听见我说话吗”
服务端:“我听到了,你听到了吗”
客户端:“我也听到了”

好了,双方开始交流数据了

四次挥手

  • 第一次挥手:客户端发送结束报文(客户端服务端都可以发起)
    报文内容:FIN=1 seq=u
    FIN用于通知服务端关闭连接
    seq是用来标记数据段顺序

客户端状态:终止等待
服务端状态:数据传送

  • 第二次挥手:服务端发送给客户端
    报文内容:ACK=1 seq=v ack=u+1
    ACK用于告知客户端,服务端已经接收到了
    ack是指期待接收的下一个数据段序号

客户端状态:终止等待
服务端状态:关闭等待

  • 第三次挥手:服务端发送给客户端
    报文内容:FIN=1 seq=w ACK=1 ack=u+1
    FIN用于告知客户端可以关闭连接了

客户端状态:时间等待
服务端状态:最终确认

  • 第四次挥手:客户端发送给服务端
    报文内容:ACK=1 seq=u+1 ack=w+1

客户端状态:时间等待(两个最大报文段生存时间之后关闭连接)
服务端状态:关闭连接

简单来说就是:

客户端:“不说了”
服务端:“等我说完先“
客户端:等待中
服务端:“我说完了”,挂电话了
客户端:“好嘞”,听一会,没声音了,挂电话

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值