[读书笔记]TCP/IP详解V1读书笔记- 19 & 20

经受时延的ACK, T C P在接收到数据时并不立即发送A C K;相反,它推迟发送,以便将A C K与需要沿该方向发送的数据一起发送

-------------------------------------------

Nagle算法T C P连接上最多只能有一个未被确认的未完成的小分组,在该分组的确
认到达之前不能发送其他的小分组。相反, T C P收集这些少量的分组,并在确认到来时以一
个分组的方式发出去。该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发
送得越快

-------------------------------------------

滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。

------------------------------------------------

使用T C P的滑动窗口协议时,接收方不必确认每一个收到的分组。在T C P中,A C K是累积的—它们表示接收方已经正确收到了一直到确认序号减1的所有字节。

当接收方接到一个报文时,发现接受时延标识为1,则其先不发送确认,而是等下一个报文处理完毕,也需要发送确认时,将两个报文的确认一并发送。

如果超时,只发送第一个的确认。

------------------------

如果接收方的接收速率小于发送速率,接收方在TCP缓冲为满时会发一个win为0的ACK,当缓冲区有空间时,会单独发送一个ACK,告诉发送方此时缓冲区已经有位置。

-------------------------------------------------

---------------------------

1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发
生在另一端的接收进程读取已经确认的数据并释放了T C P的接收缓存时。(对方ACK中窗口大小变大)
3) 当右边沿向左移动时,我们称之为窗口收缩。Host Requirements RFC强烈建议不要使
用这种方式。但T C P必须能够在某一端产生这种情况时进行处理。

----------------------------------------------------------

1) 发送方不必发送一个全窗口大小的数据。
2) 来自接收方的一个报文段确认数据并把窗口向右边滑动。这是因为窗口的大小是相对
于确认序号的。3) 正如从报文段7到报文段8中变化的那样,窗口的大小可以减小,但是窗口的右边沿却
不能够向左移动。
4) 接收方在发送一个A C K前不必等待窗口被填满。在前面我们看到许多实现每收到两个
报文段就会发送一个A C K。

----------------------------------------------------

收、发双方的窗口都由接收方控制,接收方能使发送方的发送窗口变小,但其左、右边沿不会向左移动。

------------------------------

可以发现,ACK有时只是为了单纯更新窗口大小而发送重复的ACK。

--------------------------------------

我们都看到了P U S H标志,但一直没有介绍它的用途。发送方使用
该标志通知接收方将所收到的数据全部提交给接收进程,许多T C P实现在窗口大小增加了
两个最大报文段长度(本例中为2 0 4 8字节,因为M S S为1 0 2 4字节)或者最大可能窗口的5 0 %
(本例中为2 0 4 8字节,因为最大窗口大小为4 0 9 6字节)时发送这个窗口更新,SOCKET API没有暴露这个接口,但是

当接收方的窗口满时,发送方一般都会发送一个带push标识的报文。

----------------------------------------------------------------------------

“慢启动(slow start)”的算法。该算法通过观察到新分组
进入网络的速率应该与另一端返回确认的速率相同而进行工作。

-------------------------------------------------------------------------------

建立T C P连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文
段大小)。每收到一个A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动
以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。

---------------------------------------------------------------------------------

发送方开始时发送一个报文段,然后等待A C K。当收到该A C K时,拥塞窗口从1增加为2,
即可以发送两个报文段。当收到这两个报文段的A C K时,拥塞窗口就增加为4。这是一种指数
增加的关系。在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方
它的拥塞窗口开得过大。

-------------------------------------------------------

往返时
间RT T(R o u n d - Trip T i m e)。

---------------------------------------

可以计算通道的容量为:
c a p a c i t y (bit) = b a n d w i d t h (b/s) × ro u n d-trip time ( s )
一般称之为带宽时延乘积。这个值依赖于网络速度和两端的RT T,可以有很大的变动。

注意:容量不是速率,是单们时间内线路上的信息容量的度量。

-----------------------

典型的拥塞情形。

-------------------------------------------------

T C P提供了“紧急方式( u rgent mode) ”,它使一端可以告诉另一端有些具有某种方式的
“紧急数据”已经放置在普通的数据流中。另一端被通知这个紧急数据已被放置在普通数据流
中,由接收方决定如何处理。
可以通过设置T C P首部(图1 7 - 2)中的两个字段来发出这种从一端到另一端的紧急数据
已经被放置在数据流中的通知。U R G比特被置1,并且一个1 6 b i t的紧急指针被置为一个正的
偏移量,该偏移量必须与T C P首部中的序号字段相加,以便得出紧急数据的最后一个字节的
序号。

posted @ 2011-09-22 16:24  lifengzhong  阅读(257)  评论(0编辑  收藏  举报