• TCP协议的三次握手和四次挥手


    TCP报文段格式图:

    序号:seq序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

    确认号:ack序号,只有ACK标志位为1时,确认序号字段才有效,Ack=seq+1。

    标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等.
                        ACK:确认序号有效。
                        SYN:发起一个新连接。
                        FIN:释放一个连接。

    三次握手:TCP协议是稳定的、可靠的、面向连接的协议,在建立TCP连接的时候需要经过三次握手的过程

    1.Client端:发送SYN(标志位SYN=1)到服务端,表示请求互联(该报文段携带了一个序列号seq);

    2.Server端:当接受到SYN时,表明有客户端在请求连接。这时向Client端发送SYN+ACK,标志位SYN=1,ACK=1(该报文段携带了确认号ack=seq+1,同时也有一个序列号seq`);

    3.Client端:在接受到SYN+ACK后,再向Server端发送ACK,标志位ACK=1(该报文段携带了确认号ack=seq`+1)

          

    帮助理解的例子:

    Client: 你听得见我说话吗?

    Server:嗯,听得见。

                你听得见我说话吗?

    Client:我也能听见。

    成功建立连接。

    四次挥手:

    1.Client端:发送一个FIN.

    2.Server端:在接受到FIN之后,表明客户端想断开连接了。这时先发送ACK回客户端,客户端在接受到后将处于FIN-WAIT状态。

    3.Server端:再发送FIN到客户端。

    4.Client端:发送ACK到服务端,之后客户端进入Time-wait状态。如果Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了

     

    帮助理解的例子:

    1.Client端:我不想说话了。

    2.Server端:好的,我知道了,但是我还有些话没有说完,稍等哈

    3.Server端:我说完了

    4.Client端:好的。(为什么会有这一次握手呢?因为客户端不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传)

  • 相关阅读:
    Windows通过DOS命令进入MySQL的方法
    php使用phpqrcode生成二维码
    js字符串转换为Json对象的三种写法
    Linux系统中RPM软件包安装语法
    Linux系统中软件安装方式以及特点
    vue-生存周期
    echart力导向图
    css样式,高斯模糊
    某布局
    跨浏览器兼容
  • 原文地址:https://www.cnblogs.com/james111/p/7120456.html
Copyright © 2020-2023  润新知