TCP协议可靠性数据传输实现原理分析.docx
《TCP协议可靠性数据传输实现原理分析.docx》由会员分享,可在线阅读,更多相关《TCP协议可靠性数据传输实现原理分析.docx(10页珍藏版)》请在第一文库网上搜索。
1、TCP合同是一种面向连接的,为不同主机进程间提供可靠数据传播的合同。TCP合同假定其所使用的网络栈下层合同仅口IP合同)是非可靠的,其自身提供机制保证数据时可靠性传播。在目前的网络栈合同族中,在需要提供可靠性数据传播时应用中,TCP合同是首选的,有时也是唯一的选择。TCP合同是在最早由Cerf和KQhn所提出的有关网络数据包传播合同的概念之上建立的。TCP合同被设计成符合分层合同构造,工作在ISO/OSI七层网络模型中的传播层中,使用网络层合同(如最常见的F合同)提供的服务。网络层合同尽最大努力传播上层提供的数据但并不保证数据传播的可靠性。可靠性保证必须由上层合同(如TCP合同)提供。网络层合
2、同重要完毕的工作有:1实现不同网络(主机)间的数据包路由传递。2在发送端(或中转站)提供数据包分片功能以使数据包大小满足PMTU(Path-MTU)o3在接受端提供数据包分片重组功能。4负责数据包优先级,安全性等问题。传播层合同(重要针对TCP合同而言)重要完毕的工作有(并非所有的传播层合同都需要提供这些功能如UDP合同就不提供可靠性数据传播):1提供多路复用。2实现数据基本传播功能。3建立通信通道。4提供流量控制。5提供数据可靠性传播保证。数据可靠性传播保证是其中最为重要的方面,也是TCP合同区别于其他合同的最重要特性。所谓提供数据可靠性传播不仅仅指将数据成功时由本地主机传送到远端主机,数据
3、可靠性传播涉及如下内容:1可以解决数据传播过程中被破坏问题。2可以解决反复数据接受问题。3可以发现数据丢失以及对此进行有效解决。4可以解决接受端数据乱序达到问题。1 .TCP合同可靠性数据传播实现基本原理TCP合同必须提供对所有这些问题的解决方案方可保证其所声称的数据可靠性传播。TCP合同规范和目前绝大多数TCP合同实现代码均采用数据重传和数据确认应答机制来完毕TCP合同的可靠性数据传播。数据超时重传和数据应答机制的基本前提是对每个传播的字节进行编号,即我们一般所说时序列号。数据超时重传是发送端在某个数据包发送出去,在一段固定期间后如果没有收到对该数据包时确认应答,贝IJ(假定该数据包在传播过
4、程中丢失)重新发送该数据包。而数据确认应答是指接受端在成功接受到一种有效数据包后,发送一种确认应答数据包给发送端主机,该确认应答数据包中所涉及时应答序列号即指已接受到的数据中最后一种字节时序列号加1,加1的目的在于指出此时接受端盼望接受的下一种数据包中第一种字节的序列号。数据超时重传和数据确认应答以及对每个传播的字节分派序列号是TCP合同提供可靠性数据传播的核心本质。D数据确认应答数据包中应答序列号的含义应答序列号并非其表面上所显示的意义,其事实上是指接受端但愿接受时下一种字节时序列号。因此接受端在成功接受到部分数据后,其发送的应答数据包中应答序列号被设立为这些数据中最后一种字节时序列号加一。
5、因此从其含义上来说,应答序列号称为祈求序列号有时更为合适。应答序列号在TCP首部中应答序列号字段中被设立。而TCP首部中序列号字段表达涉及该TCP首部的数据包中所涉及数据的第一种字节的序列号(令为N)O如果接受端成功接受该数据包,之前又无丢失数据包,则接受端发送的应答数据包中的应答序列号应当为:N+1ENo其中1EN为接受的数据包的数据长度。该应答序列号也是发送端将要发送时下一种数据包中第一种字节时序列号(由此亦可看出上文中将应答序列号称为祈求序列号的因素所在)。2)数据确认应答中的累积效应TCP合同中接受端对所接受数据的应答是累积的。累积的含义有二:1应答序列号是逐渐递增时,这与发送端数据编
6、号是递增的相吻合。2 不可进行跨越式数据应答。所谓不可进行跨越式数据应答,可以以数据包乱序达到为例进行阐明。如果由于发送端所选择传播途径的不同,较后发送的序列号较大的数据包先达到接受端,而先发送时序列号较小的数据包由于线路问题(或路由器故障)被临时延迟在网络中,此时接受端不可对这些序列号较大的数据进行应答。如果接受端需要发送一种应答数据包,则应答序列号仍然应当设立成对序列号较小的数据包的祈求(注意应答序列号指的是接受端但愿接受时下一种字节时序列号,故在数据传播过程中将应答数据包称为数据祈求数据包更为合适)O举例来说,如果接受端目前的应答序列号为2O1,表达接受端正在等待发送端发送从201开始编
7、号的数据,之后发送端持续发送了两个数据包,第一种数据包中数据序列号范畴为201-3O0,第二个数据包中数据序列号范畴为301-400。如果由于选择了不同的传播途径导致第二个数据包最先达到接受端,而第一种数据包在网络中延迟了一段时间,则接受端不可对第二个数据包进行应答,即不可发送应答序列号为401的确认应答数据包,而是不断发送应答序列号为201的应答数据包直到该序列号的数据达到。我们一般所说的迅速重传机制即发送端在持续接受到3个相似序列号的应答数据包后需要立即重传应答序列号所示的数据。由于此时表达极有也许浮现了数据包丢失的状况,如上例中第一种数据包如果丢失在网络中并且发送端重传的相似数据包由于选
8、择相似的线路也未能达到接受端,则接受端将不断发送应答序列号为201的应答数据包而不会将应答序列号设立为401。注意此时接受端已接受到序列号从301-400的数据。3)重传应答机制与序列号结合:1可以解决数据在传播过程中被破坏的问题。一方面通过对所接受数据包的校验,确认该数据包中数据与否存在错误。如果有,则简朴丢弃或者发送一种应答数据包重新对这些数据进行祈求。发送端在等待一段时间后,则会重新发送这些数据。本质上,数据传播错误的解决是通过数据重传机制完毕时。2可以解决接受反复数据问题。一方面运用序列号可以发现数据反复问题。由于每个传播的数据均被赋予一种唯一的序列号,如果达到的两份数据具有重叠的序列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP 协议 可靠性 数据传输 实现 原理 分析