- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载
第9章 T/TCP 的实现:TCP输出
9.1 概述
本章介绍为了支持T / T C P而对t c p _ o u t p u t函数所做的修改。在T C P 中有许多程序段都要
调用该函数来决定是否应该发出一个报文段,并且如果必要就发出一个。在 T / T C P 中作了以
下修改:
• 两个隐藏的状态标志可以打开 T H _ S Y N和T H _ F I N标志。
• T/TCP可以在S Y N _ S E N T状态下发出多个报文段,但其前提是确知对等端也支持 T / T C P 。
• 发送程序糊涂窗口避免机制必须考虑到新的 T F _ N O P U S H标志,这个标志我们在 3 . 6节中
讨论过。
• 可以发出新的T / T C P选项( C C、C C n e w和C C e c h o ) 。
9.2 t c p _ o u t p u t函数
9.2.1 新的自动变量
在t c p _ o u t p u t中说明了两个新的自动变量:
其中第一个变量是一个指针,指向相应对等端的 TA O 缓存记录项。如果 TA O 缓存记录项不存
在(这种情况不应该发生 ) ,则t a o p指向t a o _ n o n c a c h e d,并且将这个结构初始化为 0 (这样
它的t a o _ c c值就是未定义的) 。
9.2.2 增加隐藏的状态标志
在t c p _ o u t p u t的开头,要从t c p _ o u t f l a g s向量中读取说明当前连接状态的T C P标志。
图2 - 7给出了每个状态的相关标志。图 9 - 1 中的代码用于在相应的隐藏状态标志处于开状态时,
对T H _ F I N标志和T H _ S Y N标志执行逻辑或。
图9-1 t c p _ o u t p u t :增加隐藏状态标志
78计计第一部分 TCP事务协议
下载
图9-1 (续)
这些代码位于卷2第6 8 1 ~ 6 8 2页。
9.2.3 在S Y N _ S E N T状态不要重传S Y N
图9 - 2 中的程序读取对等端的TA O缓存内容,并且查看是否已经发出了 S Y N 。这段代码位
于卷2 中图2 6 - 3 的开头。
1. 读取TA O 缓存记录项
1 1 7 - 1 1 9 读取对等端的 TA O 缓存内容,如果不存在,则改用自动变量 t a o _ n o n c a c h e d,
其初始值置为0 。
如果使用了全0 的记录项,它的值永远不变。这样, t a o _ n o n c a c h e d结构就可
以静态分配并初始化为0 ,而不必用b z e r o将其设置为0 。
2. 检查客户请求是否超过M S S
1 2 1 - 1 3 3 如果状态标志表明需要发送 S Y N ,并且如果已经发出 S Y N ,那么T H _ S Y N标志就
要关闭。当一个应用程序用 T / T C P 向对等端发送多倍M S S数量的数据时可能发生这种情况 (见
3 . 6节) 。如果对等端支持T / T C P协议,这时可以分多个报文段发送,但只有第一个报文段应该
设置S Y N标志。如果我们不能确定对等端是否支持 T / T C P (t a o _ c c s e n t值为0 ) ,这时我们必
须在三次握手过程完成以后才可以发送多个报文段。
图9-2 t c p _ o u t p u t :在S Y N _ S E N T状态不重传 S Y N
9.2.4 发送器的糊涂窗口避免机制
发送器的糊涂窗口避免机制有两处作了修改 (卷2第7 1 5页) ,如图9 - 3所示
第 9章 T / T C P的实现:T C P输出计计 79
下载
图9-3 t c p _ o u t p u t :糊涂窗口避免机制中,确定是否发送报文段
1. 发送最
文档评论(0)