首页 > 解决方案 > 通信协议是半双工还是全双工?

问题描述

我知道有很多不同的,comminucation protocals比如:http, tcp, ssh, socks5, SMTP, POP,等等。

我也知道要实现通信,我们需要连接localhost:localportremotehost:remoteport. 例如,如果我们用谷歌搜索某些东西,我们会将随机本地连接portwww.google.com: 80. 如果我们ssh是远程主机,我们将随机连接本地portremotehost: 22.

我的问题是:通信协议是半双工还是全双工

我想答案是Half-duplex。因为我认为在http连接中,首先我们从localhost:localportto发送请求remotehost:80,然后远程服务器从remotehost:80to发送响应localhost:localport。同样,在ssh连接中,我们首先将ssh命令发送给远程主机,远程主机接收到命令后,执行一些操作并将结果发送回本地主机。

localhost:localport所以我认为在and之间的一个连接中remotehost:remoteport,消息要么从localhost:localportto发送remotehost:remoteport,要么从remotehost:remoteportto发送localhost:localport

我对吗?

标签: httpsshnetwork-protocols

解决方案


本文所述

SSH 是一种双向全双工协议,这意味着它不像 HTTP 那样同步,您需要发送消息才能发生响应。
使用 SSH,即使您保持沉默,远程主机也可能想告诉您一些事情。此连接器使用回调流方法将“发送”操作与“接收”操作分离。

本 IETF 草案中所述,大多数实现都允许全双工 HTTP(用于 2xx 响应)。

全双工 HTTP 遵循基本的 HTTP 请求-响应语义,但也允许服务器在客户端向服务器发送请求正文的同时向客户端发送响应正文。

全双工 HTTP 的要求在现有的 HTTP(超文本传输​​协议——HTTP/1.1)规范中没有明确规定,本备忘录旨在在基本 HTTP 协议语义之上阐明全双工 HTTP 的要求。


推荐阅读