zoukankan      html  css  js  c++  java
  • TCP窗口扩大选项

    TCP窗口扩大选项(TCP Window Scale Option)

    TCP窗口扩大选项 TCP Window Scale Option (WSopt)

    窗口扩大选项用于扩大TCP通告窗口,使TCP的窗口定义从16bit增加为32bit。

    1、RFC 1323中关于窗口扩大选项的图示如下:

          TCP Window Scale Option (WSopt):
             Kind: 3 Length: 3 bytes
                    +———+———+———+
                    | Kind=3  |Length=3 |shift.cnt|
                    +———+———+———+

    2、要启用窗口扩大选项,通讯双方必须在各自的SYN报文中发送这个选项。主动建立连接的一方在SYN报文中发送这个选项;而被动建立连接的一方只有在收到带窗口扩大选项的SYN报文之后才能发送这个选项。

    3、这个选项只在一个SYN报文中有意义(<SYN>或<SYN,ACK>),包含窗口扩大选项的报文如果没有SYN位,则会被忽略掉。当连接建立起来后,在每个方向的扩大因子是固定的。注意:在SYN报文本身的窗口字段始终不做任何的扩大(The Window field in a SYN (i.e., a <SYN> or <SYN,ACK>) segment itself is never scaled.)。

    4、在启用窗口扩大选项的情况下,若发送一个窗口通告,要将实际窗口大小右移shift.cnt位,然后赋给TCP首部中的16bit窗口值;而当接收到一个窗口通告时,则将TCP首部中的16bit窗口值左移shift.cnt位,以获得实际的通告窗口大小。

    5、shift.cnt取值范围为0~14,即最大TCP序号限定为2^16 * 2^ 14  = 2^30 < 2^31。该限制用于防止字节序列号溢出。

  • 相关阅读:
    18_异常机制和File类
    20个简洁的 JS 代码片段
    在 Python 中实现延迟调用
    停止 Goroutine 有几种方法?
    图解Python中深浅copy
    Python 自制简单实用的日志装饰器
    Go 里的错误得这样写才优雅~
    推荐8个炫酷的 Python 装饰器!
    两个 Django 插件( django_extensions,django_toolbar)
    一文看懂Python系列之装饰器(decorator)
  • 原文地址:https://www.cnblogs.com/zafu/p/8695576.html
Copyright © 2011-2022 走看看