TCP 传输控制协议( 八 )


个希望接收到的序列号 。窗口比较大会提高传送速度,假如传送过来的数据超过的窗口
大小,数据会被抛弃 。这样会加重网络负担 。假如TCP开始时的接收窗口比较大,而到最
后这个窗口缩小了,这种作法可不是好办法 。对于健壮的TCP来说,最好不要自己缩小窗
口,但要做要预备对方的TCP缩小窗口 。
即使发送窗口大小为零,发送TCP也必须做好预备接收数据并且可以发送至少一位新数据
。即使接收窗口为零,发送方也会重发,重发间的间隔时间一般为两分钟 。当接收TCP的
接收窗口为零时,在它接收到数据时,它依然会返回确认,其中包括希望收到的序列码
和当前窗口大小(为零) 。
发送TCP将数据打成符合当前大小的包,但在重新传送队列中可能重新打包 。这种重新打
包并不是必须的,但是会很有好处 。假如一个连接只有单向数据流,窗口信息可以在确
认信息中得到,这些的序列号都是一个,因此没法区别出谁先谁后 。但这并不是一个严
重的问题 。改进的方法是在数据段中加入最新的期待序列号,这样就可以区别出谁先谁
后了 。窗口治理对传送效率有很大影响,下面是一些建议:
当使用更少的大数据而要获得高效率时分配非常小的窗口使数据以许多小段传送 。对于
发送者来说要避免在发送小数据段时必须等到窗口大到一定程度再进行 。确认不要被延
时 。接收窗口假如大小为零时,要传送的数据段可能被分成越来越小的段 。假如发送TC
P仅仅发送窗口答应大小的数据段,可能这些数据段会被换成比这个段大(或者小)的数
据段发送 。接收方时不时地进行窗口大小调整会使大数据段分为小段,而不成对 。尽量
把小的窗口合成大的窗口 。
3.8. 接口
网络协议的分层结构决定了TCP有两个接口,向上的用户接口和下面的接口 。对下层接收
口的描述不是很清楚,这个工作由下层协议来描述,但是这里我们也描述一些TCP要使用
要的参数 。
用户/TCP接口
下面描述一些TCP命令,这些命令是功能性的,因各系统不同具体实现可能不同 。最后,
我们必须清楚,不同的TCP实现可能有不同的用户接口,但是有一些功能是最基本的,本
节描述的功能便是这个基本功能集 。
TCP用户命令
下面定义的命令与其它高级语言中定义的方法差不多,但有些陷井操作需要的,如SVC,
UUO,EMT 。下面只是一个功能介绍,具体实现可能大为不同,如有些系统会把这里的多
条命令结合成一条命令使用 。为了实现通信功能,TCP不能只会接收命令,而且能够返回
消息给它服务的进程,这些消息包括:
(a) 关于连接的通常消息,如中断,远程关闭等等;
(b) 对用户命令做出应答,是成功还是失败 。
Open
格式:OPEN (local port, foreign socket, active/passive [, timeout] [, preced
ence] [, security/compartment] [, options]) -> local connection name
我们假定本地TCP注重到它所服务的进程标记,而且将检查进程的认证 。因实现不同,本
地网络和源地址的TCP认证可能由TCP进行也可以由下层协议进行(如IP协议) 。这些考
虑主要是基于安全性的考虑 。
假如active/passive标记设置为passive,TCP会检测到达的连接请求,它是被动的,被
动的连接可以有一个完全指定的外套接字用于等待特定的连接或未指定的外套接字来等
待任何呼叫 。一个完全定义的被动呼叫可以通过执行一系列的SEND命令而变为主动的 。

推荐阅读