zoukankan      html  css  js  c++  java
  • TCP三次握手和四次挥手(一)

    (一)什么是三次握手?

    ①为什么要三次握手?

         建立TCP需要三次握手才能建立

    ②过程:

        1.Client端发送连接请求报文,Server端接受连接后回复ACK报文并为连接分配资源; 2.Client端收到ACK报文后也向Server端发送ACK报文,并分配资源【这样TCP连接就建立了】

     图解:

    通俗描述3次握手就是:

    A对B说:我的序号是x,我要向你请求连接;(第一次握手,发送SYN包,然后进入SYN-SEND状态)

    B听到之后对A说:我的序号是y,期待你下一句序号是x+1的话(意思就是收到了序号为x的话,即ack=x+1),同意建立连接。(第二次握手,发送ACK-SYN包,然后进入SYN-RCVD状态)

    A听到B说同意建立连接之后,对A说:与确认你同意与我连接(ack=y+1,ACK=1,seq=x+1)。(第三次握手,A已进入ESTABLISHED状态)

    B听到A的确认之后,也进入ESTABLISHED状态。

    (二)什么是四次挥手?

    ①为什么需要四次挥手?

         断开TCP连接,需要四次挥手

    ②过程:

       中断连接可以是Client端发起:

       也可以是Server端发起:

       图解:

    描述四次挥手就是:

    1.A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(seq=u,FIN=1)。(第一次挥手,A进入FIN-WAIT-1)

    2.B收到A的消息后说:确认,你要关闭连接了。(seq=v,ack=u+1,ACK=1)(第二次挥手,B进入CLOSE-WAIT)

    3.A收到B的确认后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)

    4.B说完了他要说的话(只是可能还有话说)之后,对A说,我要关闭连接了。(seq=w, ack=u+1,FIN=1,ACK=1)(第三次挥手)
    5.A收到B要结束连接的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,然后A进入CLOSED)
    6.B收到A的确认后,也进入CLOSED。

    (三)整个过程:

  • 相关阅读:
    基于WINCE.NET4.2系统的PDA使用PPC2003软件全攻略
    中文语方SQL脚本1(原创)
    debian下NAT的设置
    一个用于 MRTG 自动告警的脚本 (ZT)
    debian 4配置snmpd(有特别注意地方)
    [ZT]半小时精通正则表达式
    怎么把CSDN上的文章及图片导出到本地?
    zookeeper 简介
    Linux之搜索查找类指令
    Java之文档注释基本使用
  • 原文地址:https://www.cnblogs.com/not-alone/p/8476079.html
Copyright © 2011-2022 走看看