传输控制协议TCP 6
3 TCP 的数据编码与确认 TCP 协议采用了许多与数据链路层类似的机制来保证可靠的数据传输,如采用序列号、确认、滑动窗口协议等
只不过TCP 协议的目的是为了实现端到端结点之间的可靠数据传输,而数据链路层协议则为了实现相邻结点之间的可靠数据传输
首先,TCP 要为所发送的每一个报文段加上序列号,保证每一个报文段能被接收方接收,并只被正确地接收一次
其次,TCP 采用具有重传功能的积极确认技术作为可靠数据流传输服务的基础
这里,“确认”是指接收端在正确收到报文段之后向发送端回送一个确认(ACK)信息
发送方将每个已发送的报文段备份在自己的发送缓冲区里,而且在收到相应的确认之前是不会丢弃所保存的报文段的
“积极”是指发送方在每一个报文段发送完毕的同时启动一个定时器,假如定时器的定时期满而关于报文段的确认信息尚未到达,则发送方认为该报文段已丢失并主动重发
为了避免由于网络延迟引起迟到的确认和重复的确认,TCP 规定在确认信息中捎带一个报文段的序号,使接收方能正确地将报文段与确认联系起来
第三,采用可变长的滑动窗口协议进行流量控制,以防止由于发送端与接收端之间的不匹配而引起数据丢失
这里所采用的滑动窗口协议与数据链路层的滑动窗口协议在工作原理上是完全相同的,惟一的区别在于滑动窗口协议用于传输层是为了在端到端结点之间实现流量控制,而用于数据链路层是为了在相邻结点之间实现流量控制
TCP 采用可变长的滑动窗口,使得发送端与接收端可根据自己的CPU 和数据缓存资源对数据发送和接收能力来作出动态调整,从而灵活性更强,也更合理
4 传输效率与流量控制 6
1 滑动窗口机制 TCP 采用大小可变的滑动窗口进行流量控制
窗口大小的单位是字节
在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限
发送窗口在连接建立时由双方商