一、引言
- 在TCP/IP協(xié)議簇中,鏈路層的作用主要有:(1).為IP模塊發(fā)送/接受IP數(shù)據(jù)包;(2).為ARP模塊發(fā)送ARP請求與接收ARP應答织盼;(3).為RARP模塊發(fā)送RARP請求與接收RARP應答杨何。
- 根據(jù)所使用的網(wǎng)絡硬件不同,TCP/IP協(xié)議簇使用不同的鏈路層協(xié)議悔政。不同的網(wǎng)絡硬件包括以太網(wǎng)晚吞、令牌環(huán)網(wǎng)、光纖分布式數(shù)據(jù)接口(FDDI)谋国、RS-232串行線路等等槽地。
- 該文將說明一下鏈路層協(xié)議:
- 協(xié)議-以太網(wǎng):事實上的協(xié)議(RFC 894封裝格式)、標準組織協(xié)議(IEEE 802.2/802.3芦瘾,即RFC 1042封裝格式)捌蚊;
- 協(xié)議-串行線路:SLIP/CSLIP與PPP。
二近弟、以太網(wǎng)協(xié)議(RFC 894)與IEEE802協(xié)議(RFC 1042)
圖中缅糟,各個數(shù)字的單位是字節(jié)(Byte)
。這兩種協(xié)議祷愉,都是以太網(wǎng)上的窗宦。以太網(wǎng)協(xié)議是事實上的協(xié)議,IEEE802協(xié)議是標準組織根據(jù)以太網(wǎng)協(xié)議發(fā)布的標準參考協(xié)議二鳄。這兩種協(xié)議都有相似的結構(如圖)赴涵。兩種幀格式都是采用48bit(6字節(jié))的目的地址與源地址。這些地址就是我們常說的物理地址(Media Access Control Address订讼,MAC)
髓窜。
1.以太網(wǎng)幀格式(如圖1下半部分)
- 目標MAC地址,6字節(jié)長度欺殿;
- 源MAC地址寄纵,6字節(jié)長度;
- 類型區(qū)域脖苏,2字節(jié)長度程拭,用于表示該幀是什么協(xié)議幀;
- 當區(qū)域值為0x0800棍潘,表示該幀是一個IP數(shù)據(jù)包哺壶,其后的數(shù)據(jù)區(qū)域長度是46~1500字節(jié);
- 當區(qū)域值為0x0806蜒谤,表示該幀是一個ARP請求或ARP應答包,其后數(shù)據(jù)長度是固定的28字節(jié)+18字節(jié)填充字節(jié)(PAD)至扰;
- 當區(qū)域值為0x8035鳍徽,表示該幀是一個RARP請求或RARP應答包,其后數(shù)據(jù)長度是固定的28字節(jié)+18字節(jié)填充字節(jié)(PAD)敢课。
- 數(shù)據(jù)區(qū)域阶祭,其長度如上绷杜;
- CRC ,差錯循環(huán)冗余校驗碼濒募,4字節(jié)長度鞭盟。校驗范圍:除CRC以外的其他數(shù)據(jù)。
以太幀最小數(shù)據(jù)區(qū)域是46字節(jié)瑰剃,因此齿诉,ARP與RARP包不夠這么長,需要填充PAD(填充字節(jié))晌姚。
用wireshark抓取一幀粤剧,可以看到:
藍色部分為目的MAC地址;黑色部分為源MAC地址挥唠;紅色部分為幀類型部分抵恋,指明這是一個IPv4數(shù)據(jù)包;黃色為填充字節(jié)部分宝磨;其余為數(shù)據(jù)部分弧关。沒有看到CRC校驗碼是應為抓包工具抓不到。
2.IEEE802幀格式(如圖1上半部分)
- 目標MAC地址唤锉,6字節(jié)長度世囊;
- 源MAC地址,6字節(jié)長度腌紧;
- 長度區(qū)域茸习,2字節(jié)長度,指明其后除去CRC校驗碼的數(shù)據(jù)長度壁肋。這個長度值與以太幀的類型區(qū)域值不重合(以太幀類型最小0x0800[2048],數(shù)據(jù)長度范圍又是46~1500号胚,不沖突),
可以使用該區(qū)域區(qū)分是以太幀還是IEEE802幀
浸遗; - 邏輯鏈路控制(Logical Link Control ,802.2 LLC),3字節(jié)長度猫胁;
- 子網(wǎng)訪問協(xié)議(Sub-network Access Protocol, 802.2 SNAP),5字節(jié)長度;
- 數(shù)據(jù)區(qū)域跛锌,38~1492字節(jié)長度弃秆;
- CRC ,差錯循環(huán)冗余校驗碼髓帽,4字節(jié)長度菠赚。
IEEE802最小數(shù)據(jù)區(qū)域是38字節(jié)
三、串行線路IP(SLIP)協(xié)議與點對點協(xié)議(PPP)
這兩個協(xié)議都是對串行線路網(wǎng)絡的協(xié)議郑藏。SLIP(Serial Line IP),是一種串行線路上對IP數(shù)據(jù)包
進行封裝的簡單形式衡查。PPP(Point to Point Protocol)是SLIP的代替協(xié)議
1. SLIP
- IP數(shù)據(jù)包以一個字節(jié)(0xc0)的特殊字符結束。為了防止噪音必盖,通常也會在首部加上一個0xc0字符拌牲;
- 如果IP數(shù)據(jù)包中有0xdb字節(jié)俱饿,使用0xdbdd替換該字節(jié);
- 如果IP數(shù)據(jù)包中有0xc0字節(jié)塌忽,使用0xdbdc替換該字節(jié)拍埠。
SLIP缺點:
a. 沒有類型字段,無法傳輸其他類型的上層協(xié)議土居;
b. 數(shù)據(jù)幀中枣购,沒有CRC校驗碼,無法保證傳輸正確性装盯,除非上層協(xié)議保證校驗坷虑。
2. PPP
- 標記(ox7e),1個字節(jié)埂奈,標記開始迄损;
- 廣播地址,1個字節(jié)账磺;
- 控制字芹敌,1個字節(jié);
- 數(shù)據(jù)包中所使用的協(xié)議垮抗,2個字節(jié)氏捞,0x0021表示IP數(shù)據(jù)包等等;
- 數(shù)據(jù)區(qū)域冒版,0~1500字節(jié)液茎,存放數(shù)據(jù),這是邏輯上限制了最大字節(jié)數(shù)辞嗡;
- CRC校驗碼捆等,2個字節(jié);
- 標記(ox7e)续室,1個字節(jié)栋烤,標記結束。
PPP比SLIP具有下面這些優(yōu)點:
(1) PPP支持在單根串行線路上運行多種協(xié)議挺狰,不只是I P協(xié)議明郭;
(2) 每一幀都有循環(huán)冗余檢驗;
(3) 通信雙方可以進行 I P地址的動態(tài)協(xié)商(使用I P網(wǎng)絡控制協(xié)議)丰泊;
(4) 與C S L I P類似薯定,對T C P和I P報文首部進行壓縮;
(5) 鏈路控制協(xié)議可以對多個數(shù)據(jù)鏈路選項進行設置瞳购。
四沉唠、環(huán)回接口
環(huán)回接口(Lookback Interface),以允許運行在同一臺主機上的客戶程序和服務器程序通過 TCP/IP進行通信苛败。 A類網(wǎng)絡號127就是為環(huán)回接口預留的满葛。多數(shù)系統(tǒng)將127.0.0.1分配給該接口,并命名該接口host為localhost罢屈。傳給環(huán)回接口的IP數(shù)據(jù)包是不會出現(xiàn)在網(wǎng)絡上的嘀韧。它是當IP數(shù)據(jù)包離開網(wǎng)絡層時候,返回給了它自己缠捌〕可以想象環(huán)回接口是一個鏈路層。
- 傳給環(huán)回地址(一般為127.0.0.1)的任何數(shù)據(jù)均作為 I P輸入曼月;
- 傳給廣播地址或多播地址的數(shù)據(jù)報復制一份傳給環(huán)回接口谊却,然后送到以太網(wǎng)上。這是因為廣播傳送和多播傳送的定義哑芹,包含主機本身炎辨;
- 任何傳給該主機IP地址的數(shù)據(jù)均送到環(huán)回接口。
五聪姿、MTU與路徑MTU
通過以太幀和IEEE802幀碴萧,我們看到一個幀能夠傳輸?shù)臄?shù)據(jù)是有大小限制的
,其最大值分別是1500字節(jié)與1492字節(jié)末购。這種特性叫最大傳輸單元(Maximum Transmission Unit破喻,MTU),單位是字節(jié)(Byte)
。以下是不同網(wǎng)絡的MTU盟榴。
路徑MTU是指兩臺通信主機間的最小MTU
曹质。兩臺主機通信,中間可能經過了n個網(wǎng)絡擎场,不同的網(wǎng)絡有不同的MTU羽德,根據(jù)木桶原理,其中最小的MTU為整個鏈路的路徑MTU顶籽。由于所選路由不同玩般,MTU也可能跟著變。
都看到這里了礼饱,要不要掃二維碼關注一下微信公眾號林灣村龍貓坏为。