本文是參考【TCP/IP詳解卷一】的學習知識記錄
本文是該系列文章的第三篇,鑒于我對自己的前端學習規劃,會選擇性地重點學習相對重要地部分,因此這篇文章只是對鏈路層的簡單認識,所以相對來說會比較抽象和淺顯
鏈路層的簡單認識
- 一、鏈路層的作用
- 二、以太網
- 三、環回
- 四、MTU和路徑MTU
- 五、結束語
一、鏈路層的作用
在本系列文章的第一篇中介紹OSI模型時,我們用一個抽象的例子介紹了鏈路層的作用,其起到的是介質訪問的作用,而在TCP/IP協議中,鏈路層是用于IP的發送和資料接收的,
TCP/IP支持多種不同的鏈路層,它依賴于使用的網路硬體型別,例如有線網路中的以太網,無線網路中的Wi-Fi,本文重點地就介紹一下以太網的相關知識
二、以太網
以太網是一種計算機局域網技術,是由DEC、Intel公司和Xerox公司在1980年首次發布并在1982年加以修訂的,后來IEEE組織的IEEE 802.3標準制定了以太網的技術標準
其最初期的網路的結構為總線型結構如下圖所示:

多個站點都被連接到同一個以太網段上,該網段在空閑時接收某站點發送的信號,若某個時刻,多個站點同時發送信號時就會發生沖突(碰撞),因此以太網在各個站點介面處實作了一種演算法使得每個站點發送信號的時間錯開,這種方式叫做CSMA/CD(沖突檢測的載波偵聽多路訪問),也叫做MAC(介質訪問控制協議)
后來隨著以太網的逐漸發展,其速度從最初的10Mb/s變成了最快高達100Gb/s,同樣的原來的結構就變得不再適用了,后來就形成了一種叫做星形拓撲結構的網路結構,如下圖所示

這種結構以交換機為中心,用單獨的線路使中心與其它各站點相連,采用了集中式管理的方式,此時的以太網不需要再考慮沖突的現象,即各站點信號互不影響,交換機會對每個站點發出的信號進行識別處理,
三、環回
環回一般使用來檢測TCP/IP堆疊、軟體是否能正常作業的,其是使用一個虛擬的環回網路介面來實作的,并且在IP地址中有特定分配給它的IP地址,稱為環回地址,例如IPv4中 127 開頭的IP地址都是環回地址;IPv6中的環回地址為 ::1,像這類地址我們分配給它一個名字 localhost
當我們發送一個資料報給一個環回地址時,在傳輸層檢測到另一端是一個環回地址時,就會在資料報準備離開網路層前往傳輸層時將其傳回給網路層協議堆疊,因此環回介面發送的IP資料報不會出現在任何網路中
舉個例子來解釋一下環回的程序,假設我們住在北京xx街道xx號,寫了一封信,上面填寫的郵寄地址就是北京xx街道xx號,然后我們把它投遞給郵局寄出去,當郵局拿到以后,按照正常的流程,進行封裝分類,但是當準備裝車發走時,看到這個郵寄地址是北京xx街道xx號,然后它就沒有被裝車發走,最終寄回到了我們自己的手里,
這個程序看著似乎一點意義也沒有,那么它能證明什么呢?其實它能證明的就是咱們北京當地的郵局的作業是正常的,所以如果別人在外省寄給你一封信,但你卻沒收到,那么我們能排除一定不是在北京當地郵局出的問題,這就是所謂的環回的作用
四、MTU和路徑MTU
大多數的串行鏈路的網路都有設定有效載荷大小,該值被稱為MTU(最大傳輸單元),例如以太網的有效載荷的位元組數通常被限制為1500,如果我們發送的資料報比鏈路層上的MTU要大,那么該資料報就會被分片,分片后的每個部分都不大于MTU
如圖,一臺服務器向一個主機發送一個位元組數為1500資料報,要經過兩個路由,這兩個路由器設定的MTU分別為1000、800

服務器向主機發送了一個大小為1500位元組的資料,在經過第一個路由器時,因為大小超過了其 MTU,所以被分片成大小為1000和500的兩個資料;然后再經過第二個路由器時,因為1000的資料大于其MTU,因此再一次被分片成大小為800和200的兩個資料,最終準備發往主機時,中途被分片的資料進行重組
若我們想讓資料在傳輸的程序中不被分片,那么就要使發送的資料大小小于傳輸路線中最小的MTU,該MTU稱為路徑MTU
補充: 從服務器到主機的MTU可能與主機到服務器的MTU不相同
五、結束語
第三章是對鏈路層的一個簡單認識,其實知識并非這么點,但我認為其它知識對我學習前端用處并沒有那么大,如果想要深入鏈路層的小伙伴可以去看一下這本書
歡迎關注公眾號:前端印象 , 不定時更新前端面試題,與我一起學習前端,早日斬獲大廠Offer
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/191604.html
標籤:其他
