zoukankan      html  css  js  c++  java
  • tcp三次握手

     
    1.客户端主动发送 SYN=1,随机产生seq number = x 的数据包到服务器(服务器由SYN=1知道客户端要求建立连接)
     
    2.服务器收到请求后要确认联机信息,向客户端发送SYN=1,ACK=1,随机产生seq number= y ,ack number = 客户端的seq number +1 (x+1)
     
    3.客户端收到后检查ack number 是否正确,即第一次发送的seq number +1 ,以及位码ACK 是否为1,若正确客户端会再次发送 ack number = y+1 (服务端seq number +1) ,seq number =服务端ack number (即x+1,也是第一次seq number +1),服务端收到后确认seq number 值与ACK=1,则连接建立成功。
     
     
     

    实例:

    IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
    IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
    IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

    第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;

    第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;

    第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

     

    图解:
    一个三次握手的过程(图1,图2)

    (图1)

    (图2)
     

    第一次握手的标志位(图3)
    我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)
    3 
     (图3)

    第二次握手的标志位(图4)
    我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)
    4 
    (图4)

    第三次握手的标志位(图5)
    我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)
    5 
     
    (图5)

    一个完整的三次握手也就是 请求---应答---再次确认






  • 相关阅读:
    转:WinCE驱动开发问题精华集锦
    转:WINCE6.0+S3C6410下的DM9000A驱动
    转:WinCE6.0 不重启修改IP地址
    前端小功能:canvas验证码
    前端小功能:canvas签名版
    JavaScript中数组的应用方式
    ES6--Promise
    wepy 语法高亮
    Javascript和JQuery获取浏览器窗口各种尺寸
    图片预加载
  • 原文地址:https://www.cnblogs.com/pangguoping/p/5571443.html
Copyright © 2011-2022 走看看