竟然把通訊協議講的如此通俗?

語言: CN / TW / HK

本文轉載自微信公眾號「混說Linux」,作者Linux_Daily。轉載本文請聯絡混說Linux公眾號。

通訊協議類似於交通規劃,就是在規劃路上的司機怎麼走。

假如你在某寶上買了一個東西,商家就會把你買的東西發一個快遞給你,那麼要如何通過網路投遞到你的手上?

1. 要有交通道路或者說交通路線。

2. 要有你家的通訊地址。

3. 要有運輸工具(貨車、飛機) 。

4. 要有快遞員 。

這四點滿足了不就可以通訊了,而這四點不就是tcp/ip模型嗎?

1. 那麼交通道路是不是會發生堵車(congestion),是不是就會有一些辦法去減少堵車:

1). 避開高峰期(CSMA/CD),對於996或者通宵加班的打工人來說是不是完全避開。

CSMA/CD即載波偵聽多路訪問/衝突檢測。

2). 限行(Token),比如深圳在工作日7時至9時、17時30分至19時30分限行。

Token通俗點可以叫暗號,在一些資料傳輸之前,要先進行暗號的核對,不同的暗號被授權不同的資料操作。

3). 設定專用車道(虛擬專用網路 ),比如深圳上下班期間就有公交專用車道,其他車輛不能行駛。

它是一種虛擬專用網路,在公用網路上建立專用網路,比如你去外地出差,然後你可以遠端訪問公司內網的服務資源。

4). 上下班乘坐公交或者地鐵(CDMA),使更多的人既可以正常上下班,又能減少車輛出行。

CDMA一般指分碼多重進接,分碼多重進接是指以不同的偽隨機碼來區別基站,各基站使用同一頻率並在同一時間進行資訊傳輸。

5). 工廠裡面工人比較多,下班時間工廠附近交通就容易癱瘓,那麼就拆遷(Proxy),把廠房和工人都趕到郊區去,在郊區建一個工廠。

Proxy指的是代理軟體或代理伺服器,也可以認為是一種網路訪問方式。

6). 將道路擴寬(Frame Relay、ATM)

Frame Relay是一種有效的資料傳輸技術,它可以在一對一或者一對多的應用中快速而低廉的傳輸數字資訊。

ATM為一種交換技術,在傳送資料時,先將數字資料切割成多個固定長度的資料包傳送。

2. 通訊地址就會比較麻煩了,遇到有的小區保安不讓進,而且有些地方會走錯路,甚至有有的收件人重名。

1). 小區保安不讓進(防火牆)怎麼辦?

a. 給保安發支菸,叫保安要稱呼靚仔或者帥哥,不要叫人叼毛,說不定保安聽著舒服就讓你進去了(ACL)。

ACL指訪問控制列表,是一種基於包過濾的訪問控制技術,它可以根據設定的條件對介面上的資料包進行過濾,允許其通過或丟棄。

b. 讓保安廣播通知或貼出告示快遞到了保安室(ARP),讓大家來保安室認領自己的快遞,但是容易發生被別人冒充認領(ARP欺騙)。

ARP是地址解析協議,主機發送資訊時將包含目標IP地址的ARP請求廣播到區域網絡上的所有主機,並接收返回訊息,以此確定目標的實體地址;收到返回訊息後將該IP地址和實體地址存入本機ARP快取中並保留一定時間,下次請求時直接查詢ARP快取以節約資源。

ARP欺騙:主機收到應答報文時不會檢測該報文的真實性,由此攻擊者就會向主機發送偽ARP應答報文,這就構成了一個ARP欺騙。也就是說有人來冒領快遞保安並不會檢查是不是本人來領的,冒領者就會通過這個方式來冒領,造成真實快遞主人的快遞被別人拿走了。

2). 有些地方會走錯路怎麼辦?

a. 小城市(RIP)要學會抄近道(OSPF),小地方交通比較順暢。

RIP是一種分散式的基於距離向量的路由選擇協議,主要適用於小規模的網路環境。

OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部閘道器協議。

b. 大城市(比如深圳)要學會使用地圖導航(BGP),因為各種立交橋和高架橋讓你找不著北。

BGP是自治系統間的路由協議,BGP交換的網路可達性資訊提供了足夠的資訊來檢測路由迴路並根據效能優先和策略約束對路由進行決策。

3). 收件人重名怎麼辦?

a. 縮小區域確認收件人,將區域區分到某個街道(subnet mask),確認收件人在哪一個區域,重名收件人在別的區域就不管。

Subnet Mask指子網掩碼,它用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。

b. 給每一位住戶門口貼好門牌號(內網IP),每個人收件人即使重名但是門牌號是不會重名的。

內網IP就是區域網網路地址。

3. 運輸的貨車可能在路上會發生交通事故,貨車運輸時間決定快遞幾天能夠送到收件人手裡。

1). 貨車發生交通事故怎麼辦?

a. 貨車發生交通事故,導致快遞破損,如果快遞公司賠付商家,但是商家還是得重發(TCP),因為收件人並沒有收到快遞(ACK),只要收件人沒有收到快遞,商家就得一直重新發貨(SYN)。

TCP是一種面向連線的、可靠的通訊服務,需要經歷三次握手才能建立連線。

ACK是確認字元,需要收件人收到快遞並且在某寶上確認收貨。

SYN是同步序列編號,也就是商家發貨的資訊。

2). 收件人幾天可以收到快遞?

a. 貨車運輸速度決定快遞什麼時候可以送達,如果路比較寬闊,紅路燈比較少,不堵車,車速就可以越快,收件人就可以更早收到快遞,這就是夏農定理。

4. 到了快遞這裡又會發生一些情況,快遞員送快遞給收件人,收件人發現快遞包裹已經破損。

1). 收件人發現快遞包裹已經破損,收件人在快遞員派送快遞給自己的時候當場驗貨拒收(CRC校驗)。

整個通訊協議利用一個快遞的從商家手裡發出到收件人收件的過程進行了非常通俗易懂的描述,應該是比較好理解了。

本文轉載自微信公眾號「混說Linux」,可以通過以下二維碼關注。轉載本文請聯絡混說Linux公眾號。