導(dǎo)讀
作為一名從事多年的軟件開發(fā)人員,還是對于網(wǎng)絡(luò)協(xié)議棧的理解太少。于是,最近抽空瞎鼓搗琢磨一番,重新理解一下網(wǎng)絡(luò)層協(xié)議,本篇主要是對于 OSI(Open System Interconnect) 七層協(xié)議中最底層(絕大多程序員不關(guān)心的一層,可能實(shí)際上也不會用得著)的物理層協(xié)議進(jìn)行一番理解后的梳理和總結(jié)。
(本篇不是嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)性的文章和探討,僅僅幫助理解。如有錯(cuò)誤,還請不吝賜教。)
通信的本質(zhì)
互聯(lián)網(wǎng)的本質(zhì)是將若干臺計(jì)算機(jī)組織在一起,組織在一起干嘛呢?當(dāng)然是通信啦。在分析計(jì)算機(jī)如何通過網(wǎng)絡(luò)協(xié)議通信之前,我們先通過人與人之間的交談這種最直觀的通信方式,來感受整個(gè)過程的要點(diǎn)。

首先說話者經(jīng)過大腦處理信息,然后發(fā)送出去,通過神經(jīng)傳導(dǎo)到喉嚨,控制喉嚨震動、震動在空氣中進(jìn)行傳播、傳遞到耳膜后感受到震動、震動信息最后通過神經(jīng)傳入聽者大腦。
因?yàn)槲覀冎饕芯康氖俏锢韺拥耐ㄐ艆f(xié)議,對于說話本身內(nèi)容,我們并不討論和關(guān)注,因此,只考慮說話內(nèi)容如何傳遞。接下來從以上過程,我們來看看通信的要點(diǎn)有哪些:
1. 兩種角色? ? ?
這里有兩個(gè)角色,一個(gè)發(fā)送者(說話者)一個(gè)接收者(聽者)。這里分為了幾種類型:
【單工通信】比如一個(gè)聾子對一個(gè)啞巴說話,因?yàn)橹荒芤粋€(gè)說,一個(gè)人聽。
【半雙工通信】
?領(lǐng)導(dǎo)跟你說話的時(shí)候,你不準(zhǔn)打斷,你先聽,等領(lǐng)導(dǎo)問你問題后,你再回答領(lǐng)導(dǎo),此時(shí)領(lǐng)導(dǎo)聽你說。這種同一時(shí)間只能一個(gè)人說。?
【全雙工通信】
你說你的,我說我的,兩個(gè)人吵架的時(shí)候就是如此。
除了發(fā)送接收者分類,還有一種在通信里面是按照目的地范圍進(jìn)行分類:
【點(diǎn)對點(diǎn)】
你只跟一個(gè)人說悄悄話,不給其他人聽。
【廣播】
你在街上大喊,大家都能聽得到。
2. 信號規(guī)則
人與人說話是通過震動頻率這種方式來傳遞信息了,說話的通信是基于對震動頻率(音調(diào)高低)和振幅(音量大?。┻M(jìn)行有機(jī)排列組合來達(dá)成的,這種控制是人的本能,異常精妙。
大腦命令喉嚨準(zhǔn)備合適的震動方式,既不能不能尖叫,也也不能低鳴,否則聽不到或者聽的刺耳,更加也不能低于和超過人可接受到的震動頻率范圍,因?yàn)槿硕筛惺艿降恼饎宇l率是20赫玆到20,000赫玆。
3. 傳播介質(zhì)?
只有說話者的嘴巴和聽者的耳朵就能通信了嗎?除非你的嘴巴貼著人家的耳朵,否則,就像這里一樣,需要空氣這種介質(zhì)進(jìn)行傳導(dǎo)。
物理層協(xié)議
好了,到這里,我們基本上明白了通信的要點(diǎn),接下來回到本文的重點(diǎn),圈出來物理層的范圍。

然后,我們來總結(jié)一下,這個(gè)人聯(lián)網(wǎng)中的物理層協(xié)議,可以看出它關(guān)注什么:?
包括: 誰能發(fā)送; 什么時(shí)候可以發(fā)送;什么時(shí)候該閉嘴;誰能聽;什么時(shí)候該接收;不想聽了怎么屏蔽等。
既然是物理層,我們必須從生理上(物理硬件)支持這種能力,比如我們可以想象有一根神經(jīng)控制喉嚨此時(shí)是否該震動,另外一根神經(jīng)控制喉嚨震動多少頻率,還有一根神經(jīng)控制振幅多大。再有一根神經(jīng),控制耳朵打開和關(guān)閉(實(shí)際上人做不到,但計(jì)算機(jī)可以做到)
計(jì)算機(jī)中的物理層協(xié)議
此前,我們已經(jīng)通過人與人的交談來理解物理層,接下來,我們看看計(jì)算機(jī)中的物理層是如何的通信的。
【物理介質(zhì)】
現(xiàn)代計(jì)算機(jī)體系基本都是采用馮諾依曼體系,以二機(jī)制為計(jì)算基礎(chǔ),計(jì)算機(jī)只能處理0/1。這里只討論主流的電子計(jì)算機(jī),在計(jì)算機(jī)內(nèi)部,0/1是通過可區(qū)別的電信號來識別,比如某個(gè)電壓范圍為0,謂之低電平,某個(gè)電壓范圍為1,稱之為高電平。以上,是電子計(jì)算機(jī)內(nèi)部的信號處理方式,那計(jì)算機(jī)之間呢?用什么介質(zhì)來進(jìn)行傳導(dǎo)信號呢?
說到這里,大家基本上都知道,有電線(網(wǎng)線),空氣(4g、wifi、藍(lán)牙),光導(dǎo)纖維(光信號)。
當(dāng)然,這里涉及到一些轉(zhuǎn)換,外部信號不一定直接能被內(nèi)部使用,比如光信號,需要轉(zhuǎn)換為內(nèi)部電信號,這就需要調(diào)制解調(diào)器了,如光貓(光電轉(zhuǎn)換)。
【通信規(guī)則】
我們以最簡單的 “網(wǎng)線” 為例,傳遞的實(shí)際還是0/1電平,但不要以為兩臺計(jì)算機(jī)之間,只有”一根線“連接,那只是外部絕緣包裹看起來是一根,但內(nèi)部是有多條線(芯)的。為什么需要這么多線,首先,一臺計(jì)算機(jī)要支持全雙工的方式,就至少要有兩根線,一根發(fā)送0/1,一根接收0/1,夠了嗎?顯然不夠,就像上文講的,我們還需要更多的線來控制 “允許接受”,“允許發(fā)送” 等行為。
另外,不光是規(guī)定一臺計(jì)算機(jī)需要連接幾根線,還需要明確兩臺計(jì)算機(jī)之間的這多根線互相之間怎么。比如,a計(jì)算機(jī)的發(fā)送線需要連到b計(jì)算機(jī)的接收線上等等。
最后,我們來總結(jié)一下,看看這里的物理層協(xié)議它定義了什么:
1. 有幾根線,每根線有什么作用(比如同軸電纜)

2. 兩臺計(jì)算機(jī)之間的線(觸點(diǎn))該怎么連。(實(shí)際是定義了插頭和插座的規(guī)范,畢竟線不是直接扭在一起)
3. 輸出電壓是多少,不能爆炸了呀
4. 對上提供流程控制邏輯接口(暫定接收、允許發(fā)送,發(fā)送等,發(fā)送和接收微電路控制)
5. 最終發(fā)送的是 0/1 流
6. 一些數(shù)據(jù)校驗(yàn)(容錯(cuò))
【點(diǎn)對點(diǎn)和廣播】
要能實(shí)現(xiàn)點(diǎn)對點(diǎn),很容易想象直接用網(wǎng)線把兩臺電腦一連即可,如果需要廣播呢?除了我們知道無線電波這種直觀的廣播方式,還能使用集線器、路由器這種設(shè)備,可以支持相當(dāng)于將一臺計(jì)算機(jī)的網(wǎng)線連入多臺計(jì)算機(jī),從而實(shí)現(xiàn)廣播。
寫在最后
以上是基于個(gè)人理解的一點(diǎn)總結(jié),有興趣的同學(xué)可以選一種早期簡單的物理層協(xié)議進(jìn)行深入研究,加深理解。
另外拋出一個(gè)話題,物理層實(shí)際上是解決建立好了0/1的比特流通道,支持點(diǎn)對點(diǎn)和廣播的方式,但一般計(jì)算機(jī)都是處在網(wǎng)絡(luò)中(廣播)。因此,它并沒有解決在廣播網(wǎng)絡(luò)中,想要明確指向發(fā)給誰的能力。而這,便是由更上層協(xié)議數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層協(xié)議來解決,有興趣的可以深入了解,后續(xù)有空也會補(bǔ)上相應(yīng)內(nèi)容。