TCP协议可靠性数据传输实现原理分析.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
TCP 协议可靠性数据传输实现原理分析 TCP 协议是一种面向连接的传输层协议,为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议(如 IP 协议)是非可靠的,其自身提供机制保证数据的可靠性传输。在目前的网络栈协议族中,在需要提供可靠性数据传输的应用中,TCP 协议是首选的,有时也是唯一的选择。 TCP 协议被设计成符合分层协议结构,工作在 ISO/OSI 七层网络模型中的传输层中,使用网络层协议(如 IP 协议)提供的服务。网络层协议尽最大努力传输上层提供的数据但并不保证数据传输的可靠性。可靠性保证必须由上层协议(如 TCP 协议)提供。 网络层协议重要完毕的工作有:实现不同网络(主机)间的数据包路由传递、在发送端(或中转站)提供数据包分片功能以使数据包大小满足 PMTU(Path-MTU)、在接受端提供数据包分片重组功能、负责数据包优先级、安全性等问题。 传输层协议(重要针对 TCP 协议而言)重要完毕的工作有:提供多路复用、实现数据基本传输功能、建立通信通道、提供流量控制、提供数据可靠性传输保证。数据可靠性传输保证是其中最为重要的方面,也是 TCP 协议区别于其它协议的最重要特性。 所谓提供数据可靠性传输不仅仅指将数据成功的由本地主机传送到远端主机,数据可靠性传输涉及如下内容:可以解决数据传输过程中被破坏问题、可以解决反复数据接受问题、可以发现数据丢失以及对此进行有效解决、可以解决接受端数据乱序到达问题。 TCP 协议可靠性数据传输实现基本原理是通过数据重传和数据确认应答机制来完毕 TCP 协议的可靠性数据传输。数据超时重传是发送端在某个数据包发送出去,在一段固定期间后假如没有收到对该数据包的确认应答,则(假定该数据包在传输过程中丢失)重新发送该数据包。而数据确认应答是指接受端在成功接受到一个有效数据包后,发送一个确认应答数据包给发送端主机,该确认应答数据包中所包含的应答序列号即指已接受到的数据中最后一个字节的序列号加1,加1 的目的在于指出此时接受端盼望接受的下一个数据包中第一个字节的序列号。 数据确认应答数据包中应答序列号的含义应答序列号并非其表面上所显示的意义,其事实上是指接受端希望接受的下一个字节的序列号。所以接受端在成功接受到部分数据后,其发送的应答数据包中应答序列号被设立为这些数据中最后一个字节的序列号加一。所以从其含义上来说,应答序列号称为请求序列号有时更为合适。应答序列号在 TCP 首部中应答序列号字段中被设立。而 TCP 首部中序列号字段表达包含该 TCP 首部的数据包中所包含数据的第一个字节的序列号(令为 N)。假如接受端成功接受该数据包,之前又无丢失数据包,则接受端发送的应答数据包中的应答序列号应当为:N+LEN。其中 LEN 为接受的数据包的数据长度。该应答序列号也是发送端将要发送的下一个数据包中第一个字节的序列号(由此亦可看出上文中将应答序列号称为请求序列号的因素所在)。 在 TCP 协议中接受端对所接受数据的应答是累积的。累积的含义有二:应答序列号是逐渐递增的,这与发送端数据编号是递增的相吻合。不可进行跨越式数据应答。所谓不可进行跨越式数据应答,可以以数据包乱序到达为例进行说明。假如由于发送端所选择传输途径的不同,较后发送的序列号较大的数据包先到达接受端,而先发送的序列号较小的数据包由于线路问题(或路由器故障)被暂时延迟在网络中,此时接受端不可对这些序列号较大的数据进行应答。假如接受端需要发送一个应答数据包,则应答序列号仍然应当设立成对序列号较小的数据包的请求(注意应答序列号指的是接受端希望接受的下一个字节的序列号,故在数据传输过程中将应答数据包称为数据请求数据包更为合适)。
- 粉丝: 3814
- 资源: 59万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助