文章目录
- 单工、全双工、半双工
- 1. 单工
- 2. 半双工
- 3. 全双工
- HTTP协议的工作模式
- TCP协议的工作模式
本文参考:
图解网络传输单工、半双工、全双工 - 知乎 (zhihu.com)
问:HTTP是单工的还是双工的还是半双工的 - 简书 (jianshu.com)
关于TCP全双工模式的解释_忙碌了一天的白师傅的博客-CSDN博客_tcp全双工
单工、全双工、半双工
1. 单工
定义:单工数据传输只支持数据在一个方向上传输。
例如:灯塔发发出光信号,航船只能接受信号
2. 半双工
定义:半双工数据传输允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信。
例如:对讲机,只能让一个人说一个人听
实现原理:半双工传输模式采用载波侦听多路访问 /冲突检测。传统的共享型LAN以半双工模式运行 ,线路上容易发生传输冲突。与集线器相连的节点(即多个节点连接到集线器,共享一条到交换机端口的连接)必须以半双工模式运行。因为这种节点必须能够冲突检测,类似于单车道桥梁。
3. 全双工
定义:全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
例如:websocket
、打电话,双方都能说对方也都能听到
实现原理:全双工传输模式可以用于点到点以太网连接和快速以太网连接,同时不会发生冲突,因为他们使用双绞线中两条不同线路,类似于双车道桥梁。
HTTP协议的工作模式
分版本,版本不同,工作模式不同
http1.0
:通常认为http1.1以下是单工,但是我认为是有歧义的,请求方和接收方可以相互交流。http连接为短连接, 每次请求交互都需要建立tcp连接。http1.1
:半双工。请求应答模型,虽然引入管道传输,在请求的响应回来之前可先后发送多个http请求,不用等待回复,但是是请求-应答模型,对于一次请求-应答的事务来说,服务端回复需要按客户端发送的顺序返回响应,客户端在同一个事务等待的过程中是没办法做其他事情的。http2.0
:全双工,引入stream,多个 Stream 复用在一条 TCP 连接,客户端和服务器双方都可以建立 Stream,允许服务端主动向客户端发送数据。
TCP协议的工作模式
TCP是全双工的。
可以从TCP选择重传中看出来,在每一时刻是同时存在收发端发送的帧和ACK信号的。
但是从三次握手看起来又像是半双工,但是TCP三次握手不能代表平时的数据传输,三次握手的目的是为了确立连接建立,而在实际TCP传输过程中大多情况是收发端同时发送数据的。
总结:传输层TCP是全双工的,但是其上层应用层可能是半双工的。每一个层次都有自己的双工模式,传输层有传输层的双工模式,应用层有应用层的双工模式。下层的双工模式是支持上层双工模式的上限。比如下层支持半双工,上层顶多支持半双工,不可能支持全双工。tcp是全双工的,但它的上层可能支持半双工,比如http1.1,也有可能支持全双工,比如http2.0。