1. 程式人生 > >tcp/ip 學習筆記 章二 鏈路層

tcp/ip 學習筆記 章二 鏈路層

tcp/ip

一、數據鏈路層

當需要在一條線路上傳遞數據時,除了必須使用一條物理設備時,還需要一些必要的通信協議來控制數據的傳輸,若把實現這些協議的硬件和軟件的加到鏈路上,就叫做數據鏈路;最常用的是-----網絡適配器。一般適配器都包含了數據鏈路層和物理層這兩層的功能。


物理層的包含多種與物理介質相關的協議和標準

物理層協議分類:

  1. 電磁與光學協議(電流、光調制、編碼)

  2. 機械協議(鏈接介質機械標準,大小、形狀、化學成分)

  3. 功能性的協議

  4. 程序性協議(比如二進制數1,表示的電壓)

eg:EIA/TIA-232

V.35

RJ45


數據鏈路層協議:

負責對上層如何成幀

負責對下層控制對介質的訪問

錯誤發現(不能糾正)

eg:

以太網,802.3,802.2

HDLC/PPP

Frame-Relay




二、數據傳輸

數據傳輸分兩種方式:點對點,廣播通信

  1. 點對點信道

    主要協議:PPP協議,SLIP (這兩個都屬於串行接口鏈路協議)

    點對點協議(PPP)為在點對點連接上傳輸多協議數據包提供了一個標準方法。PPP 最初設計是為兩個對等節點之間的 IP 流量傳輸提供一種封裝協議。在 TCP-IP 協議集中它是一種用來同步調制連接的數據鏈路層協議(OSI 模式中的第二層),替代了原來非標準的第二層協議,即 SLIP。除了 IP 以外 PPP 還可以攜帶其它協議,包括 DECnet 和 Novell 的 Internet 網包交換(IPX)


2.廣播信道

主要協議:以太網協議、IEEE802.3


3. 以太網幀格式:

以太網不是唯一的數據鏈路層協議,但是使用是最廣泛的。

根據rfc894的說明,以太網封裝IP數據包的最大長度是1500字節,也就是說以太網最大幀長應該是以太網首部加上1500,再加上7字節的前導同步碼和1字節的幀開始定界符,具體就是:7字節前導同步碼 + 1字節幀開始定界符 + 6字節的目的MAC + 6字節的源MAC + 2字節的幀類型 + 1500 + 4字節的FCS。
按照上述,最大幀應該是1526字節,但是實際上我們抓包得到的最大幀是1514字節,為什麽不是1526字節呢?
原因是當數據幀到達網卡時,在物理層上網卡要先去掉前導同步碼和幀開始定界符,然後對幀進行CRC檢驗,如果幀校驗和出錯,就丟棄此幀。如果校驗和正確,就判斷幀的目的硬件地址是否符合自己的接收條件(目的地址是自己的物理硬件地址、廣播地址、可接收的多播硬件地址等),如果符合,就將幀交給“設備驅動程序”做進一步處理。這時我們抓包的軟件才能抓到數據,因此,抓包軟件抓到的是去掉前導同步碼、幀開始分界符、FCS之外的數據,其最大值是6 + 6 + 2 + 1500 = 1514。

以太網規定,以太網幀數據域部分最小為46字節,也就是以太網幀最小是 6 + 6 + 2 + 46 + 4 = 64。除去4個字節的FCS,因此,抓包時就是60字節。當數據字段的長度小於46字節時,MAC子層就會在數據字段的後面填充以滿足數據幀長不小於64 字節


IEEE 802委員會制定了,另外一個以太網標準802.3,即(rfc1042)。目前實際使用的仍然是以太網居多。一些交換機之間的網絡協議會使用rfc1402.

RFC規定:

1.以太網主機必須能支持RFC894的封裝格式(發送和接受)

2.應該能接受RFC849和RFC1042的格式

3.也許能發送RFC1042的分組,如果同時支持發送兩種封裝格式的分組,必須可以設置用哪一種,且默認為RFC894的格式


三 MTU

傳輸協議定義的,對數據幀長度的最大限制。如果網絡層的數據報大於MTU的值,需要進行分片。

路徑MTU,鏈路中最小的MTU

以太網 MTU=1500

802.3 MTU=1492


本文出自 “隨筆” 博客,請務必保留此出處http://sunsj.blog.51cto.com/2007940/1951230

tcp/ip 學習筆記 章二 鏈路層