日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TCP/IP(一):数据链路层

發(fā)布時(shí)間:2023/12/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP/IP(一):数据链路层 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

這一系列的文章主要是為一般的、非專業(yè)開發(fā)崗位(如移動(dòng)端)的工程師準(zhǔn)備,一方面可以對網(wǎng)絡(luò)的基本知識有基本的了解,另一方面不至于面試中被問到相關(guān)問題時(shí)束手無策。知識以 TCP/IP 協(xié)議簇為主,也會(huì)有應(yīng)用層和數(shù)據(jù)鏈路層的簡單介紹。

文章內(nèi)容不會(huì)很難,也不會(huì)過多討論各種算法,目標(biāo)是以最快的速度達(dá)到最深的理解。內(nèi)容肯定比直接百度搜索“TCP/IP協(xié)議”,然后隨便看一篇文章要豐富得多,但也不足以讓讀者憑此就能勝任網(wǎng)絡(luò)開發(fā)的工作。

誠然,面試以 TCP/UDP/HTTP 等協(xié)議為主,IP 協(xié)議都涉及甚少,更遑論數(shù)據(jù)鏈路層等。但我希望可以從原理上理解那些問題,而不是臨時(shí)抱佛腳,背了一些答案然后在面試后忘干凈。不要為面試而準(zhǔn)備面試,為了完善自己的知識體系而準(zhǔn)備。如果你覺得這正是你需要的,Let's Begin!

OSI七層模型和協(xié)議

在這一節(jié)中,我們不談這些層和協(xié)議的具體作用,目前只要知道 OSI 模型中,網(wǎng)絡(luò)被分為七層,由底層向高層依次是:物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會(huì)話層,表示層和應(yīng)用層。

協(xié)議是一個(gè) Big 很高,出現(xiàn)很頻繁的詞。其實(shí)它很好理解,它實(shí)際上是一種通信雙方共同遵守的規(guī)范。比如我需要把性別和年齡傳遞給另外一臺主機(jī),那么我可以定義一個(gè)"A 協(xié)議",協(xié)議規(guī)定數(shù)據(jù)的前 4 個(gè)字節(jié)表示性別,后四個(gè)字節(jié)表示年齡。這樣對方主機(jī)接收時(shí)就知道前 4 個(gè)字節(jié)是性別,而不會(huì)錯(cuò)把它當(dāng)成年齡來處理。

整個(gè)互聯(lián)網(wǎng)世界能夠運(yùn)行,完全得益于各個(gè)軟件、硬件廠商嚴(yán)格遵守現(xiàn)有的協(xié)議。以 IP 協(xié)議為例,你可以隨便修改它,然后自己弄出一個(gè) IP2 協(xié)議,只不過沒有人認(rèn)可、遵守這個(gè)協(xié)議,所以它毫無用武之地。

物理層

物理層處于 OSI 七層模型的最底端,它的主要任務(wù)是將比特流與電子信號進(jìn)行轉(zhuǎn)換。

在計(jì)算機(jī)的世界中,一切都由 0 和 1 組成。你看到的這篇文章,在通過網(wǎng)絡(luò)傳輸?shù)侥汶娔X的過程中,自然也是以 0 和 1 的形式存在。但是網(wǎng)絡(luò)傳輸?shù)慕橘|(zhì)(比如光纖,雙絞線,電波等)中顯然是不存在 0 和 1 的。比如在光線中,數(shù)據(jù)通過光的形式傳遞。0 和 1 以光的亮滅表示,其中的轉(zhuǎn)換由物理層完成。

如果沒有物理層,由 0 和 1 構(gòu)成的比特流就無法在物理介質(zhì)中傳播。

數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層處于 OSI 七層模型的第二層,它定義了通過通信介質(zhì)相互連接的設(shè)備之間,數(shù)據(jù)傳輸?shù)囊?guī)范。

在數(shù)據(jù)鏈路層中,數(shù)據(jù)不再以 0、1 序列的形式存在,它們被分割為一個(gè)一個(gè)的“幀”,然后再進(jìn)行傳輸。

數(shù)據(jù)鏈路層中有兩個(gè)重要的概念:MAC 地址和分組交換。

MAC地址

MAC 地址是被燒錄到網(wǎng)卡 ROM 中的一串?dāng)?shù)字,長度為 48 比特,它在世界范圍內(nèi)唯一(不考慮虛擬機(jī)自定義 MAC 地址)。由于 MAC 地址的唯一性,它可以被用來區(qū)分不同的節(jié)點(diǎn),一旦指定了 MAC 地址,就不可能出現(xiàn)不知道往哪個(gè)設(shè)備傳輸數(shù)據(jù)的情況。

分組交換

分組交換是指將較大的數(shù)據(jù)分割為若干個(gè)較小的數(shù)據(jù),然后依次發(fā)送。使用分組交換的原因是不同的數(shù)據(jù)鏈路有各自的最大傳輸單元(MTU: Maximum Transmission Unit)。不同的數(shù)據(jù)鏈路就好比不同的運(yùn)輸渠道,一輛卡車(對應(yīng)通信介質(zhì))的載重量為 5 噸。那么通過卡車運(yùn)送 20 噸的貨物就需要把這些貨物分成四部分,每份重 5 噸。如果運(yùn)輸機(jī)的載重量是 30 噸,那么這些貨物不需要分割,直接一架運(yùn)輸機(jī)就可以拉走。

以以太網(wǎng)(一種數(shù)據(jù)鏈路)為例,它的MTU是 1500 字節(jié),也就是通過以太網(wǎng)傳輸?shù)臄?shù)據(jù),必須分割為若干幀,每個(gè)幀的數(shù)據(jù)長度不超過 1500 字節(jié)。如果上層傳來的數(shù)據(jù)超過這個(gè)長度,數(shù)據(jù)鏈路層需要分割后再發(fā)送。

以太網(wǎng)幀

我們用以太網(wǎng)舉例,介紹一下以太網(wǎng)幀的格式。

以太網(wǎng)幀的開頭是“前導(dǎo)碼(Preamble)”,長度為 8 字節(jié),這一段沒什么用,重點(diǎn)在于以太網(wǎng)幀的本體。

本體由首部,數(shù)據(jù)和 FCS 三部分組成:


自學(xué)過程

類型部分存儲(chǔ)了上層協(xié)議的編號,比如上層是 IP 協(xié)議,則編號為 0800。

FCS 表示幀校驗(yàn)序列(Frame Check Sequence),用于判斷幀是否在傳輸過程中有損壞(比如電子噪聲干擾)。FCS 保存著發(fā)送幀除以某個(gè)多項(xiàng)式的余數(shù),接收到的幀也做相同計(jì)算,如果得到的值與 FCS 相同則表示沒有出錯(cuò)。

交換機(jī)

交換機(jī)是一種在數(shù)據(jù)鏈路層工作的網(wǎng)絡(luò)設(shè)備,它有多個(gè)端口,可以連接不同的設(shè)備。交換機(jī)根據(jù)每個(gè)幀中的目標(biāo) MAC 地址決定向哪個(gè)端口發(fā)送數(shù)據(jù),此時(shí)它需要參考“轉(zhuǎn)發(fā)表”

轉(zhuǎn)發(fā)表并非手動(dòng)設(shè)置,而是交換機(jī)自動(dòng)學(xué)習(xí)得到的。當(dāng)某個(gè)設(shè)備向交換機(jī)發(fā)送幀時(shí),交換機(jī)將幀的源 MAC 地址和接口對應(yīng)起來,作為一條記錄添加到轉(zhuǎn)發(fā)表中。

下圖描述了交換機(jī)自學(xué)過程的原理


自學(xué)過程

關(guān)于數(shù)據(jù)鏈路層,最重要的一點(diǎn)還是它的定義:“通過通信介質(zhì)相互連接的設(shè)備之間,數(shù)據(jù)傳輸?shù)囊?guī)范”。這說明數(shù)據(jù)鏈路層的協(xié)議適用于處于同一種數(shù)據(jù)鏈路兩端的節(jié)點(diǎn)。如果不能理解這一點(diǎn),就無法理解網(wǎng)絡(luò)層和 IP 協(xié)議。

數(shù)據(jù)鏈路層的意義在于,如果沒有數(shù)據(jù)鏈路層,數(shù)據(jù)只能以流的形式存在與通信介質(zhì)中,不知道該發(fā)送往哪里,過長的數(shù)據(jù)流可能無法在通信介質(zhì)中傳輸。



文/bestswifter(簡書作者)
原文鏈接:http://www.jianshu.com/p/f16d7f3c8d5f
著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標(biāo)注“簡書作者”。

總結(jié)

以上是生活随笔為你收集整理的TCP/IP(一):数据链路层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。