- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章节传输层协议 第七章节传输层协议 超时定时器计算 TimeOut = β× EstimatedRTT 当β接近1时,TCP能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起不必要的重传。当β太大时,重传报文的数目减少,但等待确认的时间太长。作为折衷,原始的TCP协议规范一般推荐β取2。 第七章节传输层协议 2、Karn/Partridge算法 第七章节传输层协议 产生超时后 当重传一个报文时,TCP停止计算机RTT采样值;TCP只为没有重传的报文测量RTT采样值。 即每当TCP有超时重传时,它下次的超时定时器的值设置成上次的两倍,而并不以上次的EstimatedRTT为基础。 第七章节传输层协议 7.3.6 流量控制 1、滑动窗口机制 2、坚持定时器 3、保持定时器 第七章节传输层协议 1、滑动窗口机制 与数据链路层不同的是:TCP不是使用一个固定大小的滑动窗口,而是由接收方通过TCP报文头部的通告窗口AdvertisedWindow字段向发送方通告它的窗口大小。 发送方在任意时刻没有确认的字节数不能超过通告窗口AdvertisedWindow的值。 接收方根据分配的缓冲区的大小来为通告窗口AdvertisedWindow选择一个合适的值。 第七章节传输层协议 发送和接收缓冲区(1) 发送方的TCP维护一个发送缓冲区。发送缓冲区用来保存那些已经发送出去但是还没有收到对方确认的数据以及发送方应用进程写入但尚未发送的数据。 而接收方的TCP也同样维护着一个接收缓冲区。接收缓冲区保存那些保留那些乱序到达接收方的数据以及那些按顺序到达接收方(即该字节流前面的字节都没有丢失)但接收进程来不及读出的数据。 第七章节传输层协议 发送和接收缓冲区(2) 第七章节传输层协议 发送方TCP 维持着3个指针,分别是:LastByteAcked、LastByteSent和LastByteWritten。 LastByteAcked表示已经应答的字节编号 LastByteSent表示已经发送但尚未收到确认的字节编号 LastByteWritten表示发送方应用进程写到发送方TCP但还没有发送的字节编号 在LastByteAcked左边的缓冲区可以释放了,因为这些字节是已经发送出去而且已经收到确认了。 第七章节传输层协议 接收方TCP 维持着3个指针,分别是LastByteRead、NextByteExpexcted和LastByteRcvd。 LastByteRead表示接收方应用进程一定读走的字节编号 NextByteExpexcted表示接收方TCP期望接收的字节编号 LastByteRcvd表示到目前已经接收到最大字节编号。 在LastByteRead左边的缓冲区可以释放了,因为这些字节是已经被接收方应用进程读出了。 第七章节传输层协议 流量控制机制 发送方TCP和接收方TCP的缓冲区大小是有限的,我们分别用MaxSendBuffer和MaxRcvBuffer表示 。 第七章节传输层协议 接收方的通告窗口 接收方的通告窗口 AdvertisedWindow = MaxRcvBuffer –(LastByteRcvd – LastByteRead) 这个值就代表接收方TCP缓冲区剩下的可用缓冲区的大小 第七章节传输层协议 发送方的发送窗口 发送方的发送窗口 EffectiveWindow = AdvertisedWindow -(LastByteSend – LastByteAcked)发送方计算 只有EffectiveWindow大于0,发送方才能发送数据。 第七章节传输层协议 发送方的动作 首先,由于接收方应用进程处理速度慢,最终导致接收方TCP缓冲区满,这就意味着接收方发给发送方的通告窗口为0。发送方TCP一看到通告窗口为0,就立即停止发送数据。 但是,发送方应用进程会一直往发送方TCP缓冲区里填入数据,最终会将发送方TCP缓冲区填满,从而导致发送方TCP将发送方应用进程阻塞。 第七章节传输层协议 接收方的动作 而在接收方,一旦接收方应用进程开始从接收方TCP的接收方缓冲区读取数据,那么接收方TCP就可以打开它的窗口,亦即接收方TCP缓冲区可用空间不再为0,从而允许发送方TCP把数据从它的发送缓冲区发送出去。 而当发送方收到返回的确认后,就可以释放部分发送缓冲区的空间,从而发送方TCP不再阻塞发送方应用进程并允许发送方应用进程继续往发送缓冲区里写入数据。 第七章节传输层协议 2、坚持定时器(1) 因为,一旦接收方的通告窗口变为0,就不允许发送方发送任何数据,直到接收到接收方TCP的确认,并宣告非零窗口值。但是这个确认可能丢失。需要引起注意的是,在TCP中,对确认是不需要确认
文档评论(0)