我知道有很多不同的comminucation protocals,比如:http, tcp, ssh, socks5, SMTP, POP,等等。
我还知道,要实现通信,我们需要将localhost:localport连接到remotehost:remoteport。例如,如果我们搜索某个内容,我们会将一个随机的本地port连接到www.google.com: 80。如果我们ssh一个远程主机,我们将连接一个随机的本地port到remotehost: 22。
我的问题是:通信协议是半双工还是全双工?
我想答案是Half-duplex。因为我认为在http连接中,首先我们将请求从localhost:localport发送到remotehost:80,然后远程服务器将响应从remotehost:80发送到localhost:localport。类似地,在ssh连接中,首先我们将ssh命令发送到远程主机,接收到命令后,远程主机执行一些操作并将结果发送回本地主机。
因此,我认为在localhost:localport和remotehost:remoteport之间的一个连接中,消息要么从localhost:localport发送到remotehost:remoteport,要么从remotehost:remoteport发送到localhost:localport。
我说的对吗?
发布于 2021-01-03 00:49:41
正如在这篇文章中所解释的
SSH是一种双向全双工协议,这意味着它与HTTP不同步,在HTTP中,需要发送消息才能发生响应。 使用SSH,即使您一直保持沉默,远程主机也可能想告诉您一些事情。此连接器使用回调流方法将“发送”操作与“接收”操作分离。
作为文档化的在IETF草案中,大多数实现都允许全双工HTTP (对于2xx响应)。
全双工HTTP遵循基本的HTTP请求响应语义,但也允许服务器在客户端向服务器发送请求体的同时向客户端发送响应体。 在现有的HTTP (超文本传输协议-- HTTP/1.1)规范中,对全双工HTTP的要求低于-指定,这份备忘录旨在澄清在基本HTTP协议语义之上的全双工HTTP的需求。
https://stackoverflow.com/questions/65545577
复制相似问题