TCP-IP協(xié)議詳解(2) 以太網與WiFi協(xié)議

“小喇叭開始廣播啦”垢袱,如果你知道這個蝇恶,你一定是老一輩的人』掏“小喇叭”是五十年代到八十年代的兒童廣播節(jié)目撮弧。在節(jié)目一開始潘懊,都會有一段這樣的播音:“小朋友,小喇叭開始廣播了贿衍!” 聽到這里授舟,收音機前的小朋友就興奮起來,準備好聽節(jié)目了:這一期的內容是以太網(Ethernet)協(xié)議與WiFi贸辈。

我們在網絡協(xié)議概觀中說到释树,以太網和WiFi是連接層的兩種協(xié)議。在連接層擎淤,信息以幀(frame)為單位傳輸奢啥。幀像信封一樣將數(shù)據(jù)(payload)包裹起來,并注明收信地址和送信地址嘴拢。連接層實現(xiàn)了“本地社區(qū)”的通信桩盲。我們先來看看以太網的幀。

以太網的幀格式

幀本身是一段有限的0/1序列席吴。它可以分為頭部赌结、數(shù)據(jù)(Payload)和尾部三部分:

幀按照上面的順序從頭到尾依次被發(fā)送/接收。我們下面進一步解釋各個區(qū)域孝冒。

頭部

幀的最初7個byte被稱為序言(preamble)柬姚。它的每個byte都是0xAA(這里是十六進制,也就是二進制的10101010)庄涡。通常量承,我們都會預定好以一定的頻率發(fā)送0/1序列(比如每秒10bit)。如果接收設備以其他頻率接收(比如每秒5bit)穴店,那么就會錯漏掉應該接收的0/1信息宴合。但是,由于網卡的不同迹鹅,發(fā)送方和接收方即使預訂的頻率相同卦洽,兩者也可能由于物理原因發(fā)生偏差。這就好像兩個人約好的10點見斜棚,結果一個人表快阀蒂,一個人表慢一樣。序言是為了讓接收設備調整接收頻率弟蚀,以便與發(fā)送設備的頻率一致蚤霞,這個過程就叫做時鐘復原(recover the clock)。

(就像在收聽廣播之前义钉,調整轉鈕昧绣,直到聲音清晰。網卡會在接收序言的過程中不斷微調自己的接收頻率捶闸,直到自己“聽到”是…1010…)

時鐘調整好之后夜畴,我們等待幀的起始信號(SFD, start frame delimiter)拖刃。SFD是固定的值0xAB。這個0xAB就好像“小喇叭開始廣播啦”一樣贪绘,提醒我們好節(jié)目就要上演了兑牡。

Preamble和SFD

緊隨SFD之后的是6 byte的目的地(DST, destination)和6 byte的發(fā)出地(SRC, source)。這就是我們在郵差和郵局中的介紹一樣税灌,為信封寫上目的地和發(fā)出地均函。要注意,這里寫在信封上的是對地址的“本地描述”菱涤,也就是MAC地址苞也。MAC地址是物理設備自帶的序號,只能在同一個以太網中被識別 (正如郵差只熟悉自己的社區(qū)一樣)粘秆。

頭部的最后一個區(qū)域是Type如迟,用以說明數(shù)據(jù)部分的類型。(比如0×0800為IPv4翻擒,0×0806為ARP)

數(shù)據(jù)

數(shù)據(jù)一般包含有符合更高層協(xié)議的數(shù)據(jù)氓涣,比如IP包牛哺。連接層協(xié)議本身并不在乎數(shù)據(jù)是什么陋气,它只負責傳輸。注意引润,數(shù)據(jù)尾部可能填充有一串0(PAD區(qū)域)巩趁。原因是數(shù)據(jù)需要超過一定的最小長度。

尾部

跟隨在數(shù)據(jù)之后的是校驗序列(FCS, Frame Check Sequence)淳附。校驗序列是為了檢驗數(shù)據(jù)的傳輸是否發(fā)生錯誤议慰。在物理層,我們通過一些物理信號來表示0/1序列(比如高壓/低壓奴曙,高頻率/低頻率等)别凹,但這些物理信號可能在傳輸過程中受到影響,以致于發(fā)生錯誤洽糟。如何來發(fā)現(xiàn)我們的數(shù)據(jù)是正確的呢炉菲?

一個方法是將數(shù)據(jù)發(fā)送兩遍,然后對比一下是否一樣坤溃。但這樣就大大降低了網絡的效率拍霜。FCS采用了CRC(Cyclic Redundancy Check)算法。這就好像是一家飯店的老板雇傭了一個收銀員薪介,但他又擔心收銀員黑錢祠饺。可是每天營業(yè)額很大汁政,老板即使坐在旁邊看道偷,也不能用記住收到的總數(shù)缀旁。所以他采取了一個聰明的辦法:只記住收到錢的最后一位?(比如收到19元,老板記住9)。當有新的進賬(比如13疮绷,尾數(shù)為3)两蟀,他就將新的尾數(shù)和舊的尾數(shù)相加,再記住和的尾數(shù)(也就是2)履澳。當收銀員交給老板錢的時候,老板只用看總額的最后一位是否和自己記的最后一位相同怀跛,就可以知道收銀員是否誠實了距贷。如果說我們的數(shù)據(jù)是收銀的總額的話,我們的FCS就是老板記錄的尾數(shù)吻谋。如果兩者不相符忠蝗,我們就知道數(shù)據(jù)在傳輸?shù)倪^程中出現(xiàn)錯誤,不能使用漓拾。

有FCS在盯著

上面的比喻實際上是用營業(yè)總額不斷的除以10阁最,獲得最終的尾數(shù)。CRC算法也相類似骇两。n位CRC算法取一個n bit的因子速种,比如下面的1011。數(shù)據(jù)序列結尾增加n-1個0低千。因子與數(shù)據(jù)序列的不斷進行XOR運算配阵,直到得到n-1位的余數(shù),也就是100示血。該余數(shù)各位取反(011)棋傍,然后存儲在FCS的位置。

```

11010011101100 000 <--- 數(shù)據(jù)序列末尾增加3位0

1011?????????????? <--- 因子

01100011101100 000 <--- XOR結果

1011??????????????<--- 因子

00111011101100 000

??1011

00010111101100 000

?? 1011

00000001101100 000

?????? 1011

00000000110100 000

????????1011

00000000011000 000

???????? 1011

00000000001110 000

??????????1011

00000000000101 000

?????????? 101 1

-----------------

00000000000000 100 <--- 3位余數(shù)

```

上面例子用的是4位CRC难审。在Ethernet中使用的因子為32位的瘫拣,以達到更好的檢測效果。

集線器(Hub) vs. 交換器(Switch)

以太網使用集線器或者交換器將幀從發(fā)出地傳送到目的地告喊。一臺集線器或交換器上有多個端口麸拄,每個端口都可以連接一臺計算機(或其他設備)。

集線器像一個廣播電臺葱绒。一臺電腦將幀發(fā)送到集線器感帅,集線器會將幀轉發(fā)到所有其他的端口。每臺計算機檢查自己的MAC地址是不是符合DST地淀。如果不是失球,則保持沉默。集線器是比較早期的以太網設備。它有明顯的缺陷:

1) 任意兩臺電腦的通信在同一個以太網上是公開的实苞。所有連接在同一個集線器上的設備都能收聽到別人在傳輸什么豺撑,這樣很不安全∏#可以通過對信息加密提高安全性聪轿。

2)?不允許多路同時通信。如果兩臺電腦同時向集線器發(fā)信猾浦,集線器會向所有設備發(fā)出“沖突”信息陆错,提醒發(fā)生沖突〗鹕猓可以在設備上增加沖突檢測算法(collision detection):一旦設備發(fā)現(xiàn)有沖突音瓷,則隨機等待一段時間再重新發(fā)送。

交換器克服集線器的缺陷夹抗。交換器記錄有各個設備的MAC地址绳慎。當幀發(fā)送到交換器時,交換器會檢查DST漠烧,然后將幀只發(fā)送到對應端口杏愤。交換器允許多路同時通信。由于交換器的優(yōu)越性已脓,交換器基本上取代了集線器珊楼。但比較老的以太網還有可能在使用集線器。

WiFi

WiFi的工作方式與集線器連接下的以太網類似摆舟。一個WiFi設備會向所有的WiFi設備發(fā)送幀亥曹,其它的WiFi設備檢查自己是否符合DST邓了。由于WiFi采取無線電信號恨诱,所以很難像交換器一樣定向發(fā)送,所以WiFi的安全性很值得關注骗炉。WiFi采用加密的方法來實現(xiàn)信息的安全性照宝。

(早期的WEP加密方法非常脆弱,建議使用WPA或者WPA2加密方法句葵。隱藏WiFi設備ID的方法不是很有用厕鹃。)

總結

我們深入了連接層協(xié)議的一些細節(jié)。連接層是物理與邏輯的接口乍丈,它的設計兼顧了物理需求(比如時鐘復原剂碴,CRC)和邏輯需求(比如地址、數(shù)據(jù))轻专。由于連接層處于網絡邏輯的底層忆矛,有許多基于連接層的攻擊手法,這需要我們對連接層的工作方式有一定的了解,以設計出更好的網絡安全策略催训。


【TCP/IP詳解】系列教程

互聯(lián)網協(xié)議入門 1

互聯(lián)網協(xié)議入門 2

TCP-IP協(xié)議詳解(1)網絡協(xié)議概觀

TCP-IP協(xié)議詳解(2) 以太網與WiFi協(xié)議

TCP-IP協(xié)議詳解(3) IP/ARP/RIP/BGP協(xié)議

TCP-IP協(xié)議詳解(4)IPv4與IPv6地址

TCP-IP協(xié)議詳解(5)IP協(xié)議詳解

TCP-IP協(xié)議詳解(6) ICMP協(xié)議

TCP-IP協(xié)議詳解(7) UDP協(xié)議

TCP-IP協(xié)議詳解(8) TCP協(xié)議與流通信

TCP-IP協(xié)議詳解(9) TCP連接

TCP-IP協(xié)議詳解(10) TCP滑窗管理

TCP-IP協(xié)議詳解(11) TCP重傳

TCP-IP協(xié)議詳解(12) TCP堵塞控制

TCP-IP協(xié)議詳解(13) DNS協(xié)議

TCP-IP協(xié)議詳解(14) CIDR與NAT

TCP-IP協(xié)議詳解(15) HTTP協(xié)議概覽

圖解TCP-IP協(xié)議

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末洽议,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漫拭,更是在濱河造成了極大的恐慌亚兄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件采驻,死亡現(xiàn)場離奇詭異审胚,居然都是意外死亡,警方通過查閱死者的電腦和手機礼旅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門菲盾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人各淀,你說我怎么就攤上這事懒鉴。” “怎么了碎浇?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵临谱,是天一觀的道長。 經常有香客問我奴璃,道長悉默,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任苟穆,我火速辦了婚禮抄课,結果婚禮上,老公的妹妹穿的比我還像新娘雳旅。我一直安慰自己跟磨,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布攒盈。 她就那樣靜靜地躺著抵拘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪型豁。 梳的紋絲不亂的頭發(fā)上僵蛛,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音迎变,去河邊找鬼充尉。 笑死,一個胖子當著我的面吹牛衣形,可吹牛的內容都是我干的驼侠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泪电!你這毒婦竟也來了般妙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤相速,失蹤者是張志新(化名)和其女友劉穎碟渺,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體突诬,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡苫拍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旺隙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绒极。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蔬捷,靈堂內的尸體忽然破棺而出垄提,到底是詐尸還是另有隱情,我是刑警寧澤周拐,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布铡俐,位于F島的核電站,受9級特大地震影響妥粟,放射性物質發(fā)生泄漏审丘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一勾给、第九天 我趴在偏房一處隱蔽的房頂上張望滩报。 院中可真熱鬧,春花似錦播急、人聲如沸脓钾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惭笑。三九已至侣姆,卻和暖如春生真,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捺宗。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工柱蟀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚜厉。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓长已,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子术瓮,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容