计算机网络--tcp字段说明
来源:互联网 发布:sem优化思路 编辑:程序博客网 时间:2024/05/16 01:03
1.Windows Scale窗口扩大因子
窗口扩大选项使TCP的窗口定义从16位增加为32位。这并不是通过修改TCP首部来实现的,TCP首部仍然使用16位,而是通过定义一个选项实现对16位的扩大操作(scaling operation)来完成的。于是TCP在内部将实际的窗口大小维持为32位的值。
[img]http://www-128.ibm.com/developerworks/cn/linux/cluster/cluster_system/balance/part7/images/image010.gif[/img]
这个选项只能够出现在一个SYN报文段中,因此当连接建立起来后,在每个方向的扩大因子是固定的。为了使用窗口扩大,TCP通信的两端必须在它们的SYN报文段中发送这个选项。主动建立连接的一方(这里一般是客户端)在其SYN中发送这个选项,但是被动建立连接的一方(负载均衡器和服务节点)只能够在收到带有这个选项的SYN之后才可以发送这个选项。每个方向上的扩大因子可以不同。
TCP根据接收缓存的大小自动选择移位计数。也就是说,扩大因子的数值自动产生。当然也可以通过特定的接口由应用层进行修改。
客户端可以在发起SYN握手的时候向均衡器协商窗口扩大因子,数值可以是从0到16之间的任一值(用于表示扩大窗口的位移量,实际的窗口大小为:(16bit的windows大小)×2 (扩大因子))。当均衡器向服务节点发起SYN握手请求后,会将先前对应客户端的窗口扩大选项值传递到服务节点进行协商。如果服务节点支持该选项,将会使用该扩大因子与客户端进行splicing通信,尽管客户端仅仅是简单的把服务节点以0位移扩大因子看待。其实,作为典型的客户-服务通信模式,从服务端->客户端的返回数据量往往比较大,在客户端使用较大的窗口扩大因子也便于客户端接收大量数据,提高通信的效率。
窗口扩大选项使TCP的窗口定义从16位增加为32位。这并不是通过修改TCP首部来实现的,TCP首部仍然使用16位,而是通过定义一个选项实现对16位的扩大操作(scaling operation)来完成的。于是TCP在内部将实际的窗口大小维持为32位的值。
[img]http://www-128.ibm.com/developerworks/cn/linux/cluster/cluster_system/balance/part7/images/image010.gif[/img]
这个选项只能够出现在一个SYN报文段中,因此当连接建立起来后,在每个方向的扩大因子是固定的。为了使用窗口扩大,TCP通信的两端必须在它们的SYN报文段中发送这个选项。主动建立连接的一方(这里一般是客户端)在其SYN中发送这个选项,但是被动建立连接的一方(负载均衡器和服务节点)只能够在收到带有这个选项的SYN之后才可以发送这个选项。每个方向上的扩大因子可以不同。
TCP根据接收缓存的大小自动选择移位计数。也就是说,扩大因子的数值自动产生。当然也可以通过特定的接口由应用层进行修改。
客户端可以在发起SYN握手的时候向均衡器协商窗口扩大因子,数值可以是从0到16之间的任一值(用于表示扩大窗口的位移量,实际的窗口大小为:(16bit的windows大小)×2 (扩大因子))。当均衡器向服务节点发起SYN握手请求后,会将先前对应客户端的窗口扩大选项值传递到服务节点进行协商。如果服务节点支持该选项,将会使用该扩大因子与客户端进行splicing通信,尽管客户端仅仅是简单的把服务节点以0位移扩大因子看待。其实,作为典型的客户-服务通信模式,从服务端->客户端的返回数据量往往比较大,在客户端使用较大的窗口扩大因子也便于客户端接收大量数据,提高通信的效率。
如果服务节点不支持窗口扩大因子选项,均衡器需要忽略所有客户端的窗口扩大因子选项,使之无效,这一点和其他的扩展TCP选项的处理模式相同,主要是为了兼容更旧的TCP/IP协议栈实现系统。在后续的通信中,客户端将自动调整扩大因子,仅使用16位窗口大小选项来与服务节点通信。
2.;ts选项含三个32bit,其中后两个分别记录着tsval和tsecr;(注意,ts_recent并不在此处更新,在后面的tcp_store_ts_recent中更新)
struct tcp_options_received: 定义在tcp.h中,其中saw_tstamp表明timestamp选项是否有效,ts_recent_stamp是我们最近一次更新ts_recent的时间,ts_recent是下一次回显的时戳一般等于下次发包中的rcv_tsecr;rcv_tsval是该data从发端发出时的时戳值,rcv_tsecr是回显时间戳(即该ack对应的data或者该data对应的上次ack中的ts_tsval值)
0 0
- 计算机网络--tcp字段说明
- 计算机网络 Tcp
- 计算机网络---TCP
- 计算机网络 TCP/IP简介
- 计算机网络的TCP连接
- 计算机网络 TCP/IP协议
- 计算机网络学习 - TCP
- 计算机网络TCP/IP小结
- 计算机网络学习--tcp学习
- 计算机网络之TCP
- 计算机网络笔记-TCP层
- 【计算机网络】:tcp报文详解
- 【计算机网络】TCP简单实践
- 计算机网络----- TCP协议
- 计算机网络---TCP/IP协议
- 计算机网络-TCP/UDP区别
- 【计算机网络】TCP与UDP
- 计算机网络TCP探究
- permission和uses-permission的区别
- 细微处的FILE结构体
- ios应用接入微信开放平台
- a different object with the same identifier value was already associated with the session
- UIPickerView选择器
- 计算机网络--tcp字段说明
- 使用hostent结构:
- 远程连接MySQL,防火墙阻止访问,解决方法
- fseek
- 将字符串添加到指定的文件中去 AppendAllText ;WriteAllText ;----------------判断指定路径的文件是否存在File.Exists(Path)
- java多线程共享数据和数据并发
- CCNA认证培训
- 测试以来的挣扎
- [有明信息]科目导向,精耕细作 ——浅谈房地产开发成本管理