大數(shù)據(jù)技術建設網(wǎng)站百度地圖人工電話
文章目錄
- 單工、全雙工、半雙工
- 1. 單工
- 2. 半雙工
- 3. 全雙工
- HTTP協(xié)議的工作模式
- TCP協(xié)議的工作模式
本文參考:
圖解網(wǎng)絡傳輸單工、半雙工、全雙工 - 知乎 (zhihu.com)
問:HTTP是單工的還是雙工的還是半雙工的 - 簡書 (jianshu.com)
關于TCP全雙工模式的解釋_忙碌了一天的白師傅的博客-CSDN博客_tcp全雙工
單工、全雙工、半雙工
1. 單工
定義:單工數(shù)據(jù)傳輸只支持數(shù)據(jù)在一個方向上傳輸。
例如:燈塔發(fā)發(fā)出光信號,航船只能接受信號
2. 半雙工
定義:半雙工數(shù)據(jù)傳輸允許數(shù)據(jù)在兩個方向上傳輸,但是在某一時刻,只允許數(shù)據(jù)在一個方向上傳輸,它實際上是一種切換方向的單工通信。
例如:對講機,只能讓一個人說一個人聽
實現(xiàn)原理:半雙工傳輸模式采用載波偵聽多路訪問 /沖突檢測。傳統(tǒng)的共享型LAN以半雙工模式運行 ,線路上容易發(fā)生傳輸沖突。與集線器相連的節(jié)點(即多個節(jié)點連接到集線器,共享一條到交換機端口的連接)必須以半雙工模式運行。因為這種節(jié)點必須能夠沖突檢測,類似于單車道橋梁。
3. 全雙工
定義:全雙工數(shù)據(jù)通信允許數(shù)據(jù)同時在兩個方向上傳輸,因此,全雙工通信是兩個單工通信方式的結合,它要求發(fā)送設備和接收設備都有獨立的接收和發(fā)送能力。
例如:websocket
、打電話,雙方都能說對方也都能聽到
實現(xiàn)原理:全雙工傳輸模式可以用于點到點以太網(wǎng)連接和快速以太網(wǎng)連接,同時不會發(fā)生沖突,因為他們使用雙絞線中兩條不同線路,類似于雙車道橋梁。
HTTP協(xié)議的工作模式
分版本,版本不同,工作模式不同
http1.0
:通常認為http1.1以下是單工,但是我認為是有歧義的,請求方和接收方可以相互交流。http連接為短連接, 每次請求交互都需要建立tcp連接。http1.1
:半雙工。請求應答模型,雖然引入管道傳輸,在請求的響應回來之前可先后發(fā)送多個http請求,不用等待回復,但是是請求-應答模型,對于一次請求-應答的事務來說,服務端回復需要按客戶端發(fā)送的順序返回響應,客戶端在同一個事務等待的過程中是沒辦法做其他事情的。http2.0
:全雙工,引入stream,多個 Stream 復用在一條 TCP 連接,客戶端和服務器雙方都可以建立 Stream,允許服務端主動向客戶端發(fā)送數(shù)據(jù)。
TCP協(xié)議的工作模式
TCP是全雙工的。
可以從TCP選擇重傳中看出來,在每一時刻是同時存在收發(fā)端發(fā)送的幀和ACK信號的。
但是從三次握手看起來又像是半雙工,但是TCP三次握手不能代表平時的數(shù)據(jù)傳輸,三次握手的目的是為了確立連接建立,而在實際TCP傳輸過程中大多情況是收發(fā)端同時發(fā)送數(shù)據(jù)的。
總結:傳輸層TCP是全雙工的,但是其上層應用層可能是半雙工的。每一個層次都有自己的雙工模式,傳輸層有傳輸層的雙工模式,應用層有應用層的雙工模式。下層的雙工模式是支持上層雙工模式的上限。比如下層支持半雙工,上層頂多支持半雙工,不可能支持全雙工。tcp是全雙工的,但它的上層可能支持半雙工,比如http1.1,也有可能支持全雙工,比如http2.0。