《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》 —2.2 T/TCP中的新TCP选项

举报
华章计算机 发表于 2019/11/19 21:05:58 2019/11/19
【摘要】 本节书摘来自华章计算机《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》一书中第2章,第2.2节,作者是[美]W. 理查德·史蒂文斯(W.Richard Stevens) ,胡谷雨 吴礼发 等译 谢希仁 校。

2.2   T/TCP中的新TCP选项

T/TCP协议中有三个新的TCP选项。图2-1给出了目前TCP协议使用的所有选项。其中前3个出自最初的TCP协议规范,即RFC 793 [Postel 1981b]。而窗口宽度和时间戳则是在RFC 1323 [Jacobson, Braden, and Borman 1992]中定义的。最后三个选项(CC、CCnew和CCecho)则是T/TCP协议新引入的,在RFC 1644 [Braden 1994]中定义。最后这几个选项的使用规则如下:

1) CC选项在客户执行主动打开操作时发出的第一个SYN报文段中使用。它也可以在其他一些报文段中使用,但前提是对方发过来的SYN报文段中带有CC或CCnew选项。

2) CCnew选项只能在第一个SYN报文段中使用。当需要执行正常的三次握手操作时,客户端的TCP协议就使用CCnew选项而不用CC选项。

3) CCecho选项仅在三次握手过程中的第二个报文段中使用,通常由服务器发出该报文段,并携带有SYN和ACK。该报文段将CC或CCnew的值返回给客户,告知客户本服务器支持T/TCP协议。

本章以及下一章的例子中我们还会进一步讨论这些选项。

image.png

图2-1  TCP选项

不难发现,T/TCP的3个新选项均为6字节长。为了使这些选项继续按4字节定界(这在某些系统体系结构中有助于提高性能),我们通常在这些选项的前面加上两个单字节的无操作(NOP)。

如果客户既支持RFC 1323,也支持T/TCP协议,这时客户发给服务器的第一个SYN报文段中的TCP选项如图2-2所示。我们特意给出了每个选项的类型值和长度值;NOP用阴影表示,其类型值(kind)为1。第二个选项是窗口宽度(Window Scale),这里用“WS”标记。方格上方的数字是每个选项相对于选项字段起始的字节偏移量。TCP协议选项的最大长度为40字节,本例中的TCP选项共需28字节。从图中可以看出,采用NOP填充以后,所有4个4字节的值都符合4字节定界规则。

image.png

图2-2   同时支持RFC 1323和T/TCP的客户发给服务器的第一个SYN报文段的TCP选项

如果服务器既不支持RFC 1323,也不支持T/TCP协议,它发给客户带有SYN和ACK的应答中就只有报文段最大长度(MSS)选项。但如果服务器既支持RFC 1323,也支持T/TCP协议,那么它给客户的应答中将包含图2-3所示的TCP选项,总长为36字节。

image.png

图2-3   服务器对图2-2所示请求的应答中的TCP选项

由于CCecho选项总是和CC选项一起发送,因此T/TCP协议的设计本可以把这两个选项合二为一,从而为宝贵的TCP协议选项空间节省4字节。或者也可以这样,这种最坏的选项排列只在服务器给出SYN/ACK时出现,而它们的出现无论如何总要使TCP处理速度变慢的,因此索性连NOP字节也省去,则实际上可以节省7字节。

由于报文段的最大长度和窗口宽度选项只在SYN报文段中出现,而CCecho选项只在SYN/ACK报文段中出现,因此,如果连接两端都支持RFC 1323和T/TCP协议,则自此以后的报文段中也都只包含时间戳和CC选项,如图2-4所示。

image.png

图2-4   两端都支持RFC 1323和T/TCP时非SYN报文段所包含的TCP选项

可以看出,一旦连接建立,时间戳和CC选项给所有的TCP报文段都增加了20字节。

当讲到T/TCP协议时,我们常常用一般术语CC选项作为本节所引入的3个TCP选项的统称。

时间戳和CC选项带来了多大的额外开销呢?假设两台主机位于两个不同的网络上,报文段最大长度设为典型值512字节。要传递1MB的文件,如果没有这些选项,则需要1954个报文段;如果使用时间戳和CC选项,则需要2033个报文段,较前者增加了4%。如果报文段最大长度为1460字节,那么报文段数只增加了1.5%。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。