• 三次握手建立连接


    建立连接的步骤例如以下:
    1. client发送一个SYN段表示发起连接请求,该段中包括一个初始序号ISN。
    2. server也发送一个SYN段并包括它自己的初始序号ISN。同一时候设置ACK标志表示对上一个client的SYN的确认。确认序号为client的ISN值加1,该确认序号表示server希望下一次收到的起始序号

    3. client再发送一个ACK以确认server发来的SYN,确认序号为serverISN加1,含义同上。

    三次握手完毕,连接建立。


    以下以HTTP为例。

    在HTTP发送第一个请求之前,须要建立TCP连接。也就是三次握手,这三个TCP数据包不包括不论什么有效数据字节。通过Wireshark来分析三次握手的详细流程。这里有一点须要记住:确认信号应当是上一次已成功收到数据字节序号加1。


    第一次握手:

    这是client(我的电脑)发出的TCP头。client的port号是59313。server的port号是80,client生成的初始序列号x为0。标志位为SYN表示client请求建立连接。


    第二次握手:

    这是server返回的应答TCP头。

    server也生成一个初始序列号y为0。同一时候将确认序号设为x加1以对client的SYN报文段进行确认,标志位为SYN和ACK。


    第三次握手:

    client收到server的应答后再次发送一个ACK作为应答。响应序号为y+1以响应server的SYN报文段。由于是第二次发送,所以该ACK的序号为1,但由于ACK不消耗序号。在连接建立之后发送第一个数据时,该序号仍然是1.

    注意。Wireshark在这里所显示的序号均为相对序号,相对于某个基准值。该基准值的产生随时间变化。

    基准值加上相对序号才是TCP包真正的序号。


    參考:
    《TCP/IP具体解释》 P174-P176.
  • 相关阅读:
    汇总:unity中弹道计算和击中移动目标计算方法
    Unity3D游戏开发之SQLite让数据库开发更简单
    3DMAX可编辑多边形常用命令-桥
    3dmax沿立方体边扩展出面
    3dmax切割平行线
    Litjson
    使用 Unity 3D 开发游戏的架构设计难点
    Unity T4M 中文讲解
    unity5.5打包
    颜色模式
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6849911.html
Copyright © 2020-2023  润新知