TCP/IP卷一:79---TCP数据流与窗口管理之(交互式通信概念及ssh演示案例)
发布日期:2021-06-29 22:33:37 浏览次数:2 分类:技术文章

本文共 1864 字,大约阅读时间需要 6 分钟。

一、交互式概念

  • “交互式” TCP连接是指,该连接需要在客户端和服务器之间传输用户输人信息,如接键操作、短消息、操作杆或鼠标的动作等
  • 如果采用较小的报文段来承载这些用户信息,那么传输协议需要耗费很高的代价,因为每个交换分组中包含的有效负载字节较少。反之,报文段较大则会引人更大的延时,对延迟敏感类应用(如在线游戏、协同工具等)造成负面影响。因此我们需要权衡相关因素,找到折中方法

大批量数据、交互式数据

  • 在一定时间内,互联网的不同部分传输的网络流量(通常以字节或包来计算)也存在相当大的差异。例如,局域网与广域网以及不同网站之间的流量都会有所不同
  • TCP流量研究表明,通常90%或者更多的TCP报文段都包含大批量数据(如Web、文件共享、电子邮件、 备份),其余部分则包含交互式数据(如远程登录、网络游戏)。批量数据段通常较大(1500字节或更大),而交互式数据段则会比较小(几十字节的用户数据)

二、演示案例

  • 对于使用相同协议以及封包格式的数据,TCP都会处理,但执行的算法有所不同。在本节中我们会讨论TCP如何传输交互式数据,以ssh(安全外壳)应用为例。安全外壳协议是具备较强安全性(基于密码学的加密和认证)的远程登录协议。它已经基本取代了早期的UNIX rlogin和Telnet,因为这些远程登录服务都存在安全隐患
  • 通过对ssh的探讨,我们会了解延时确认是怎样工作的,以及Nagle算法怎样实现减少广域网中较小包的数目。同样的算法也可以用于其他远程登录应用,如Telnet、 rlogin和微软终端服务
  • 对一个ssh连接,观察当我们输入一个交互命令后的数据流。客户端获取用户输入信息,然后将其传给服务器端。服务器对命令进行解释并生成响应返回给客户端。客户端对其传输数据加密,意味着用户输人的信息在通过连接传送前已经进行了加密。 即使传输数据被截获,窃听者也很难获得用户输入信息的明文。客户端支持多种加密算法和认证方法。它也支持一些新的特性,如隧道技术实现对其他协议的封装

数据交互图示

  • 许多TCP/IP的初学者会惊奇地发现,每个交互接键通常都会生成一个单独的数据包。 也就是说,每个接键是独立传输的(每次一个字符而非每次一行)。另外,ssh会在远程系统(服务器端)调用一个shell,对客户端的输入字符做出回显
  • 因此,每个输入的字符会生成4个TCP数据段:客户端的交互击键输入、服务器端对击键的确认、服务器端生成的回显、客户端对该回显的确认(下图a)
  • 通常,第2和第3段可以合并,如下图b所示,可将对击键的确认与回显一并传送。 后面一篇文章会介绍这种方法(称为捎带延时确认)

ssh交互过程

  • 我们以ssh为例的原因在于,对从客户端到服务器键入的每个字符都会生成一个独立的包。然而,若用户的输入速度较快,每个包可能包含多个字符。下图显示了在ssh连接至Linux服务器中输人date命令,利用Wireshatk获得的数据流:
    • 包1包含了客户端到服务器端的命令字符d。包2为对字符d的确认和回显(如上图b所示将两段结合传送)。包3为对回显字符d的确认。同理,包4 - 6对应字 符a,包7-9对应字符t,包10-12对应字符e。包13-15则对应回车键。在包3-4、6 - 7、 9 - 10和12 - 13之间的时间差为人工输人每个字符的延迟,这里特意设置得较长(约1.5秒)

  • 注意到包16 - 19与前面的包稍有差异,包长度从48字节变为64字节。包16包含了服务器端对date命令的输出。这64字节的数据是对下面28个明文(未加密)字符的加密结果:

  • 加上最后的回车和换行符。下一个从服务器端发送至客户端的包(包18)包含了服务器主机对客户的命令提示符:Linux%。包19为对该数据的确认
  • 下图描述与上图相同的传输情况,只是细化了TCP层的信息,可以更清晰地看到TCP怎样进行确认以及ssh使用的包大小。包1(包含字符d)的相对序列号从0开始。包2是对图中包1的确认,ACK号设为48,为上次成功接收字节的序列号加10包2也包含了服务器至客户端的对d字符的回显,字节序列号为0。包3为客户端对该回显的确认,ACK号设为480可以看到,该连接包含了两个序列号流一个是从客户端至服务器,另一个为相反方向。在后面介绍窗口通告时将会详细讨论这一问题

  • 另外我们也发现,每个带数据(长度不为0)的包都将PSH置位。之前提到过,该标志位通常表示发送端缓存为空。也就是说,当PSH置位的数据包发送完成后,发送端没有其他数据包需要传输

转载地址:https://dongshao.blog.csdn.net/article/details/104121395 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:TCP/IP卷一:80---TCP数据流与窗口管理之(延时确认(延迟ACK)、Nagle算法)
下一篇:TCP/IP卷一:78---TCP超时与重传之(目的度量、重新组包)

发表评论

最新留言

很好
[***.229.124.182]2024年04月23日 00时25分20秒