TCP 三次握手客户端服务端应答过程

该文档只是记录个人学习中对TCP握手的理解,如有不对,多多担待。 
我觉得TCP 三次握手就像 男女相亲.
                  男的发了一个消息给女的,说:你觉得咱俩合适不?
                  女的觉得可以呢,就又发了一个消息给男的, 说:合适,但是我有要求 ,有房有车
                  男的收到呢,觉得可以,就说:行
TCP 三次握手客户端服务端应答过程
  首先,客户端和服务端都打开端口.此时,服务端处于监听状态.

  1.客户端第一次发送报文信息,我理解为第一次握手,
    其中,报文中 SYN=1, seq=x,
    SYN 我个人理解是建立连接的标志,seq代表初始化序列号,个人理解为客户端给服务端发送了一个序号x。
    注意:TCP协议人家规定了,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。

  2.服务端第一次收到报文信息后,也就是第一次握手信息后,
    服务端一看,哦,SYN=1,seq=x,只有SYN,seq,代表这是TCP建立第一次握手连接
    说明这是第一次握手连接。

  3.服务端说我得给个回应,于是,服务端给了一个回应报文,此时,这是第二次握手。
    其中,报文里,SYN=1,ACK=1,seq=y,ack=x+1 ,
    好的,我们来说下,其中SYN=1,SYN咱们说过了,是建立连接的标志
    ACK=1,ACK是确认序号的标志,为1时表示确认序号有效,为0时表示报文中不含序号确认信息,忽略该字段
    seq=y,咱们说过了,seq是初始化序列号,那么seq=y我的理解为服务端给客户端发送了一个序号y,
    ack=x+1,(注意,此时ack为小写)这个也好理解,ack是服务端给客户端的回应,说,我收到你的序号X了,我给你回应一个X+1给你,
    小写ack是对客户端小写seq的回应。
    注意啊,同志们,我的理解是,在报文里,大写ACK和小写ack是不一样的,大写ACK代表确认对方的序号,
    小写ack代表对方传过来的序号(seq)+1.
     综上所述,
        客户端发送   SYN=1, seq=x
        服务端回应   SYN=1,ACK=1(代表告诉客户端,你发的我收到了),seq=y(服务端的初始化序号),
                     ack=x+1(ack=客户端的seq+1)。
  4. 客户端收到第二次握手信息后, SYN=1,ACK=1,seq=y,ack=x+1 ,
     客户端一看,哦,SYN=1,握手信息,然后根据 ACK=1, ack=x+1(其中ack=客户端的seq+1),
     判断出这是第二次握手信息,
         其中ACK=1是服务端告诉客户端,你上次发的握手信息,我收到啦
         ack=x+1,客户端用第一次的seq=x,  ack-seq=1,判断出这是第一次握手的回应,也就是第二次握手
     此时,客户端也要给个回应,
     这是为啥呢?
        因为客户端发送握手信息给服务端,服务端给回应了,
        但是人家服务端给你客户端发送握手信息,你也得回应下啊?
        礼尚往来,也就是说,客户端和服务端大家都得心里有底啊,
     这时,客户端发送ACK=1,seq=x+1,ack=y+1,这是第三次握手,此时,客户端状态为ESTABLISHED(已建立连接)
     ACK=1,代表客户端告诉服务端,你上次发的握手信息,我收到了,
     seq=x+1,代表客户端说,我第一次发送的序号是x,第二次我发送的序号是x+1,seq是握手序号
     ack=y+1,其实就是根据服务端发过来的seq=y,然后加1,  ack=(服务端seq+1),ack是对上次握手的回应
     注意:此事不需要SYN=1了,因为SYN=1是建立连接过程的标志。此时已建立连接
   6.服务端收到第三次握手信息。
    经过检查,ACK=1,seq=x+1,ack=y+1,哦,这是第三次握手,OK,服务端状态也设置为ESTABLISHED(已建立连接)。
           
以上只是我个人的理解,肯定有些地方不对,而且我文笔很差,博君一笑。
  我理解的不管客户端还是服务端,当收到ACK=1,ack=自己发的序号+1后,服务端的状态改为ESTABLISHED(已建立连接)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值