【TCP/IP】鏈路層的簡單認識

2020-10-25 07:00:46

本文是參考【TCP/IP詳解卷一】的學習知識記錄

本文是該系列文章的第三篇,鑑於我對自己的前端學習規劃,會選擇性地重點學習相對重要地部分,因此這篇文章只是對鏈路層的簡單認識,所以相對來說會比較抽象和淺顯

一、鏈路層的作用

在本系列文章的第一篇中介紹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