读书笔记十三:TCP/IP详解之TCP的交互数据流
TCP的交互数据流介绍
在TCP进行数据传输时,可以分为成块数据流和交互数据流两种,且处理的算法不同.
交互式输入
Rlogin连接上键入一个交互命令的数据流如下图所示。
每一个交互按键都会产生一个数据分组,每次从客户传到服务器的是一个字节的按键。而Rlogin需要远程系统回显客户键入的字符,这样就会产生4个报文段:
(1)来自客户的交互按键
(2)来自服务器的按键确认
(3)来自服务器的按键回显
(4)来自客户的按键回显确认
延时确认
通常TCP在接收到数据之后不会立即发送ACK,相反,它推迟发送,以便ACK和需要沿该方向发送的数据一起发送(捎带ACK)。绝大多数实现采用的时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据一起发送。如果200ms之后依然没有等到发往对方的数据,则单独发送ACK。如果定时器溢出时,TCP接收缓冲区中还有数据没有被应用层读取完,则返回报文段的窗口大小为初始窗口大小减去缓冲区的数据大小。
窗口大小通告
TCP连接中,通告的窗口大小会因为缓冲区中的数据大小实时进行调整。
在代码的世界尽情的翱翔吧!