zoukankan      html  css  js  c++  java
  • TCP三次握手及四次四次释放协议解析

    上图是TCP的三次握手,从图中我们可以看到:

    第一次:客户端向服务器发送链接请求SYN_SENT,发送的内容的主要包含SYN(synchronize)同步请求和SEQ(sequence number)序列号X.(注意:这里的X是随机生成的)

    第二次:服务器向客户端回复的确认收到应答SYN_RECV,主要内容包括可以同步的和确认应答的SYN+ACK,服务器随机产生的序列号Y,确认应答ACK的值为第一次客户端给服务器请求连接的确认值X在加1,意在告诉客户端我下次期望收到你发送的序列号的值是X+1。rwnd(就是我们在上一章中讲到的窗口)窗口为5000,也即我服务器告诉客户端我一次最大能接受5000个字节的数据。通过第二次握手就可以告诉客户端A我已经收到你的连接请求了,并且你可以和我之间可以建立连接。

    第三次:客户端向服务器发送建立连接确认,同样的这次客户端向服务器发送了序列号(序列号的值为第二次握手时,服务器告诉客户端“我下次期望收到你发送的序列号为X+1” ),确认值为第二次握手时服务器向客户端发送的序列号的值Y加1,同样的客户端也告诉服务器,我一次最大能接受大字节是1000,你可不要发的超过了我这个最大值。

    TCP通过这三次握手就能建立起一个安全,可靠的连接了。

    下面我们通过抓包软甲wireshark来做一个抓包的实验,验证一下上述机制。试验中我们打开了www.hao123.com的网址,然后通过抓包软件我们得到了如下的结果

    从上图我们能看到,抓取的结果。值得注意的是在34那行的服务器端口从80变成了443.这是为什么呢?是因为在我们访问服务器的时候http协议变成了https,即服务器给该端口加密了,所以给出的不是真正的端口

    我们简单的介绍一下上诉结果,每一列的表示的含义。

    29,34,36,37这些代表序号;

    2.571389代表时间;

    10.10.10.101表示客户端,即我们的电脑的IP地址;

    61.135.162.10表示的是目标服务器的IP地址,即hao123网址解析的服务器的IP;

    TCP:表示的是协议;

    66:表示的是字节长度;

    52137:表示的是客户端的所用的动态端口;

    80:表示的是目标服务器所用的端口;

    后面的一些内容就是TCP首部的详细信息了,我们看下面的图

    下图为编号34的详细内容:

    这里我们从图中主要看我们在三次握手中所讲的几个值的变化,具体不再详细解释

    下图为编号为36的详细内容

     下图为37的详细内容

    注意:在此图中有三个值需要解释一下,即:

    Window Size Value : 258    窗口值大小

    Window size scaling value:   256    窗口系数值

    Caculated Window size :66048   计算窗口大小。   这个值是上述两个值的乘积(258X256)得来的.

    下面我们在来看一下四次释放连接

    由上面的三次握手协议的解释,就能知道四次释放协议的每一次所发送值的含义了,这里不再赘述。

  • 相关阅读:
    mysql索引最左匹配的理解(转载于知乎回答)
    mysql深度优化与理解(迄今为止读到最优秀的mysql博客)
    PHP数组函数总结与使用
    进程(process)和线程(thread)
    联合索引使用规则(转载)
    mysql优化大全(转自别人 )
    HTTP隧道解决的问题
    HTTP代理协议 HTTP/1.1的CONNECT方法
    vant弹窗提示
    vue获取验证码倒计时
  • 原文地址:https://www.cnblogs.com/Lovis/p/10066491.html
Copyright © 2011-2022 走看看