计算机网络基础 课件 6.3 TCP协议.pptx
;;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议报文;TCP协议是面向字节的。TCP将所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,并使每一个字节对应于一个序号。
TCP的确认是对接收到的数据的最高序号(即收到的数据流中的最后一个序号)表示确认。但接收端返回的确认序号是已收到的数据的最高序号加1。
TCP有三种基本机制来控制报文段的发送。
第一种机制是TCP维持一个变量,它等于最大报文段长度MSS,只要发送缓存从发送进程得到的数据达到MSS字节时,就组装成—个TCP报文段,然后发送出去。
第二种机制是发送端的应用进程指明要求发送报文段,即TCP支持的推送(push)操作。
第三种机制是发送端的一个计时器时间到了,这时就把当前已有的缓存数据装入报文段发送出去。;在TCP的实现中广泛使用Nagle算法。
若发送端应用进程将欲发送的数据逐个字节地达到发送端的TCP缓存,则发送端就将第一个字符(—个字符的长度是一个字节)发送出去,将后面到达的字符将都缓存起来。
当接收端收到对第一个字符的确认后,再将缓存中的所有字符装成一个报文段发送出去,同时继续对随后到达的字符进行缓存。
只有在收到对前一个报文段的确认时才继续发送下一个报文段。当字符到达较快而网络速率较慢时,用这样的方法可明显地减少所用的网络带宽。
因为Nagle算法在某一个时刻只有一个报文在传输,会导致数据传递的不够及时;傻窗口综合症。
设想这种情况:接收端的缓存已满,而交互的应用进程一次只从缓存中读取一个字符(这样就在缓存产生1个字节的空位),然后向发送端发送确认,并将窗口设置为1个字节(但发送的数据报是40字节长)。接着,发送端又传来1个字符(但发来的IP数据报是41字节长)。接收端发回确认,仍然将窗口设置为一个字节。这样进行下去,网络的效率将会很低。这种状况称之为傻窗口综合症。
要解决这个问题,可让接收端等待一段时间,使得或者缓存已能有足够的空间容纳—个???长的报文段,或者缓存已有一半的中间处于空的状态。只要出现这两种情况之一,就发出确认报文,并向发送端通知当前的窗口大小。此外,发送端也不要发送太小的报文段,而是将数据积累成足够大的报文段,或达到接收端缓存的空间的—半大小。
;为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。
在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方为发送窗口(可增大或减小)
在TCP中接收端的接收窗口总是等于发送端的发送窗口(因为后者是由前者确定的),因此—般就只使用发送窗口这个词汇。;(a)发送端要发送900字节长的数据,划分为9个100个节长的报文段,对方确定的发送窗口为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送端的TCP要维护一个指针。每发送一个报文段,指针就向前移动—个报文段的距离。当指针移动到发送窗口的最右端(即窗口前沿)时就不能再发送报文段了。
(b)表示发送端已发送了400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变,注意到,现在发送端还可发送300字节。
(c)表示发送端收到了对方对前400字节数据的确认,但窗口减小到400字节,于是,发送端还可发送400字节的数据。;设主机A向主机B发送数据。双方确定的窗口值是400。再设每一个报文段为100字节长,序号的初始值为1。图6-10中右边的注释可帮助理解整个的过程。应注意到,主机B进行了3次流量控制。第一次将窗口减小为300字节,第二次又减为200字节,最后减至0,即不允许对方再发送数据了。这种暂停状态将持续到主机B重新发出一个新的窗口值为止。;实现流量控制并非仅仅为了使接收端来得及接收。如果发送端发出的报文过多会使网络负荷过重。由此会引起报文段的时延增大。
为了避免发生拥塞,主机应当降低发送速率。
发送端的主机在发送数据时,既要考虑到接收端的接收能力,又要使网络不要发生拥塞。因而发送端的发送窗口应按照以下方式确定:
;为了更好地进行拥塞控制,因特网标准推荐使用以下三种技术,即慢启动(slow-start)、加速递减(MultiplicativeDecrease)和拥塞避免(CongestionAvoidance)。;TCP每发送一个报文段,就设置一次计时器。只要计时器设置的重传时间已经到了但还没有收到确认,就要重传这一报文段。;?;?;传输连接的管理就是使传输连接的建立和释放都能正常地进行。
在连接建立过程中要解决以下三个问题。
1)要使每一方能够确知对方的存在。
2)