小白學網路之二 TCP IP協議之鏈路層協議

2021-06-18 09:16:50 字數 4236 閱讀 1830

沒有想到轉變會如此之快,其實機會就是在變化中得到的,也許這就是最好的結局,如果那樣,到時候真的可能有些麻煩,目前的自己還是不應該很急,急於創業,因為,自己應該審視自己,雖然自己有一定的技術,但技術換乙個環境,也許就不能變成價值,或者一文不值,但自己還是不應該去貶低技術,還是應該積累,目前,感覺自己最大的問題是,需要有點東西,拿出來展示,所以下個階段,主要的重點是放在不停的實踐,琢磨上,應該舉一反三。後續還有個計畫,演算法導論後面幾章要繼續,進行,重點是放在圖的演算法上面。

今天還是從下往上看tcp/ip,資料鏈路層。

在tcp/ip協議族中,鏈路層主要有三個目的:1,為ip模組傳送和接收ip資料報。2,為arp模組傳送arp請求和接收arp應答。3,為rarp傳送rarp請求和接收rarp應答。在這裡,我們主要介紹乙太網鏈路層協議,兩個序列介面鏈路層協議(slip和ppp).

乙太網:

乙太網這個術語一般是指數字裝置公司,英特爾公司和xerox公司在2023年聯合發布的乙個標準。它是當今tcp/ip採用的主要的區域網技術。它採用一種稱作csma/cd的**接入方法,其意思是帶衝突檢測的載波偵聽多路接入。它的速率是10mb/s,位址是48bit.

在tcp/ip世界中,乙太網ip資料報的封裝時在rfc894[horing 1984]中定義的,ieee 802網路的ip資料報封裝是在rfc 1042[postel and rey

nolds 1988]中定義的。主機需求rfc要求每台internet主機都與乙個10mb/s的乙太網電纜相連線:

1,必須能夠傳送和接收採用rfc894(乙太網)封裝格式的分組。

2,應該能夠接收與rfc894相混合的rfc1042(ieee 802)封裝格式的分組。

3,也許能夠傳送採用rfc 1042格式封裝的分組。如果主機能同時傳送兩種型別的分組資料,那麼傳送的分組必須是可以設定的,而且預設條件下必須是rfc894分組。

最常用的封裝格式是rfc 894定義的格式。圖2-1顯示了兩種不同形式的封裝格式。

兩種幀格式都是採用48bit(6位元組)的目的位址和源位址(802.3允許使用16bit的位址,但是一般是48bit位址)。這就是我們在本書中所稱的硬體位址。arp和rarp協議對32bit的ip位址和48bit的硬體位址進行了對映。

接下來的2個位元組在兩種幀格式中互不相同。在802標準定義的幀格式中,長度欄位是指它後續資料的位元組長度。但不包括crc檢驗碼。乙太網的型別字段

定義了後續資料的型別。在802標準定義的幀格式中。型別欄位則由後續的子網接入協議(sub-network access protocol:snap)的首部給出。幸運的是,802定義

有效長度值與乙太網的有效型別值無一相同。這樣就可以對兩種幀格式進行區分。

在乙太網幀格式中,型別字段之後就是資料。而在802幀格式中,跟隨在後面的是3位元組的802.2 llc和5位元組的802.2 snap。目的服務訪問點。(destinationservice access point,dsap)和源服務訪問點(source service access point,ssap)的值都設為0xaa.ctrl欄位的值設為3.隨後的3個位元組org code都設定為0.再接下來的2個位元組型別欄位和乙太網幀格式一樣(其他型別字段值可以參見rfc 1340[reynolds and postel 1992]).

crs欄位用於幀內後續位元組差錯的迴圈冗餘碼檢驗(檢驗和)(它也被稱為fcs或幀檢驗序列)。

802.3標準定義的幀和乙太網的幀都有最小長度要求。802.3規定資料部分必須至少為38個位元組,而對於乙太網,則要求最少要有46個位元組。為了保證這一點

必須在不足的空間插入填充位元組。

slip:序列線路ip.

slip的全稱是serial line ip.它是一種在序列線路上對ip資料報進行封裝的簡單形式,在rfc1055中有詳細描述。slip適用於家庭中每台計算機幾乎都有的rs-232串列埠和高速數據機接入internet.

下面的規則描述了slip協議定義的幀格式:

1,ip資料報以乙個稱作end(0xc0)的特殊字元結束。同時,為了防止資料報到來之前的線路雜訊被當成資料報內容,大多數實現在資料報的開始處也傳乙個end字元。

2,如果ip報文中某個字元為end,那麼就要連續傳輸兩個位元組0xdb和0xdc取代它。0xdb這個特殊字元也被稱作slip的esc字元,但是它的值與ascii的esc字元(0x1b)不同。

3,如果ip報文中某個字元為slip的esc字元,那麼就要連續傳輸兩個位元組0xdb和0xdd來取代它。

接下來是協議字段,類似於乙太網中型別欄位的功能。當它的值為0x0021時,表示資訊欄位是乙個ip資料報;值為0xc021時,表示資訊欄位是鏈路控制資料;值為0x8021時,

表示資訊欄位是網路控制資料。

crc欄位是乙個迴圈冗餘檢驗碼,以檢測資料幀中的錯誤。

由於標誌字元的值為0x7e,因此當該字元出現在資訊欄位時,ppp需要對它進行轉義。在同步鏈路中,該過程是通過一種稱作位元填充的硬體技術來完成的。

在非同步鏈路中,特殊字元0x7d用作轉義字元。當它出現在ppp資料幀中時,那麼緊接著的字元的第6個位元要取其補碼,具體實現過程如下。

1,當遇到字元0x7e時,需連續傳送兩個字元:0x7d和0x5e,以實現標誌字元的轉義。

2,當遇到轉義字元0x7d時,需連續傳送兩個字元;0x7d和0x5d,以實現轉義字元的轉義。

3,預設情況下,如果字元的值小於0x20(比如,乙個ascii控制字元),一般都要進行轉義。例如,遇到字元0x01時需連續傳送0x7d和0x21兩個字元。(這時,第6個位元取補碼候變

為1,而前面兩種情況均把它變為0).

總的來說:ppp比slip具有下面這些優點:

1,ppp支援在單根序列線路上執行多種協議,不只是ip協議。     

2,每一幀都有迴圈冗餘檢驗。

3,通訊雙方可以進行ip位址的動態協商(使用ip網路控制協議);

4,與cslip類似,對tcp和ip報文首部進行壓縮。

5,鏈路控制協議可以對資料鏈路選項進行設定。

為這些優點付出的代價是每一幀的首部增加3個位元組,當建立鏈路時要傳送幾幀協商資料,以及更為複雜的實現。

環迴介面:

大多數的產品都支援環迴介面(loopback inte***ce),以允許執行在同一臺主機上的客戶程式和伺服器程式通過tcp/ip進行通訊。a類網路號127就是為環迴介面預留的。根據慣例,

大多數系統把ip位址127.0.0.1分配給這個介面,並命名為localhost,乙個傳給環迴介面的ip資料報不能在任何網路上出現。

圖中需要指出的關鍵點是:

1,傳給環迴位址(一般是127.0.0.1)的任何資料均作為ip輸入。

2,傳給廣播位址或多播位址的資料報複製乙份傳給環迴介面,然後送到乙太網上。這是因為廣播傳送和多播傳送定義。

3, 任何傳給該主機ip位址的資料均送到環迴介面。

最大傳輸單元mtu.

正如前面說到的那樣,乙太網和802.3對資料幀的長度都有乙個限制,其最大值分別是1500和1492.鏈路層這個特性稱作mtu,最大傳輸單元。不同型別的網路大多數都有乙個上限。

路徑mtu:

當在同乙個網路上的兩台主機互相進行通訊時,該網路的mtu是非常重要的。但是如果兩台主機之間的通訊要通過多個網路,重要的兩台通訊主機路徑中的最小mtu。它被稱為路徑mtu.

序列線路吞吐量計算:

如果線路速率是9600b/s,而乙個位元組有8bit,加上乙個起始位元何乙個停止位元,那麼線路的速率就是960b/s.以這個速率傳輸乙個1024位元組的分組需要1066ms.如果slip鏈結執行乙個互動式應用程式,

同時還執行另乙個應用程式如ftp傳送或接收1024位元組的資料,那麼一般來說就要必須等待一半的時間(533ms)才能把互動式應用程式的分組資料傳送出去。

把slip的mtu縮短到256就意味著鏈路傳輸一幀最長需要266ms,它的一半是133ms,情況好一些,但仍然不完美。我們選擇它的原因是為大塊資料提供了良好的線路利用率。(如大檔案傳輸)。假設cslip的

報文首部時5個位元組,資料幀總長為262個位元組,256位元組的資料使線路的利用率為98.1%,幀頭佔了1.9%,這樣的利用率是不錯的。如果把mtu降到256以下,那麼將降低傳輸大塊資料的最大吞吐量。

小白學TCP IP 五 IP協議相關技術

ip旨在讓最終目標主機收到資料報,但是這一過程僅僅依靠ip是無法實現的,必須要有實現解析主機名稱和mac位址的功能,以及資料報在傳送過程中異常情況處理的功能,此外還會涉及ip必不可少的其他功能.dns系統與ip協議的關係 dns系統中維護乙個用來表示組織內部主機名 網域名稱 和ip位址之間對應關係的...

linux網路傳輸協議之TCP IP

1 為了滿足兩個不同主機 包括能聯網的linux裝置 pc機等 程序間通訊,這個時候就需要用網路 有線或無線 1 低階應用層 直接基於作業系統原始socket介面程式設計,難度最大,所有的流程自己編寫,但是能滿足自己所有的需要,比如自己想做一些不一樣的功能 2 高階應用層 基於網路通訊應用框架庫,比...

網路程式設計3之TCP IP協議

在tcp ip協議中,最重要的協議是 tcp udp ip 協議 1 internet上不同系統之間互聯的一組協議 2 為分散和不同型別的硬體提供通用的程式設計介面。3 tcp ip 協議使internet盡可能成為乙個分散 無序的網路。1 定義 tcp是基於 面向 連線的協議,也就是說,在正式收發...