速读原著-TCP/IP(交互式输入)

第19章 TCP的交互数据流

19.2 交互式输入

首先来观察在一个 R l o g i n连接上键入一个交互命令时所产生的数据流。许多 T C P / I P的初学者很吃惊地发现通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行)。而且,R l o g i n需要远程系统(服务器)回显我们(客户)键入的字符。这样就会产生4个报文段:
(1)来自客户的交互按键;
(2)来自服务器的按键确认;
(3)来自服务器的按键回显;
( 4)来自客户的按键回显确认。图 1 9 - 1表示了这个数据流。

然而,我们一般可以将报文段 2和 3进行合并—按键确认与按键回显一起发送。下一节将描述这种合并的技术(称为经受时延的确认)。
在这里插入图片描述
本章我们特意使用 R l o g i n作为例子,因为它每次总是从客户发送一个字节到服务器。在第 2 6章讲到Te l n e t的时候,将会发现它有一个选项允许客户发送一行到服务器,通过使用这个选项可以减少网络的负载。图1 9 - 2显示的是当我们键入5个字符d a t e \ n时的数据流(我们没有显示连接建立的过程,并且去掉了所有的服务类型输出。 B S D / 3 8 6通过设置一个R l o g i n连接的TO S来获得最小时延)。

第1行客户发送字符d到服务器。第2行是该字符的确认及回显(也就是图 1 9 - 1的中间两部分数据的合并)。第3行是回显字符的确认。与字符a有关的是第4 ~ 6行,与字符t有关的是第7 ~ 9行,第1 0 ~ 1 2行与字符e有关。第3 ~ 4、6 ~ 7、9 ~ 1 0和1 2 ~ 1 3行之间半秒左右的时间差是键入两个字符之间的时延。

注意到1 3 ~ 1 5行稍有不同。从客户发送到服务器的是一个字符(按下 R E T U R N键后产生的U N I X系统中的换行符),而回显的则是两个字符。这两个字符分别是回车和换行字符(C R / L F),它们的作用是将光标回移到左边并移动到下一行。

第1 6行是来自服务器的d a t e命令的输出。这3 0个字节由2 8个字符与最后的C R / L F组成。紧接着从服务器发往客户的7个字符(第1 8行)是在服务器主机上的客户提示符: svr4 % 。第1 9行确认了这7个字符。
在这里插入图片描述
注意T C P是怎样进行确认的。第 1行以序号0发送数据字节,第 2行通过将确认序号设为 1,也就是最后成功收到的字节的序号加 1,来对其进行确认(也就是所谓的下一个期望数据的序号)。在第2行中服务器还向客户发送了一序号为 1的数据,客户在第 3行中通过设置确认序号为2来对该数据进行确认。

发布了1526 篇原创文章 · 获赞 1448 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/104768264