分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
數據鏈路層的知識點:
1、數據鏈路層爲網絡層提供可靠的數據傳輸;
2、基本數據單位爲幀;
3、主要的協議:以太網協議;
4、兩個重要設備名稱:網橋和交換機。
不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報(datagram),在鏈路層叫做幀(frame)。數據封裝成幀後發到傳輸介質上,到達目的主機後每層協議再剝掉相應的首部,最後將應用層數據交給應用程序處理。
如果兩臺計算機在不同的網段中,那麼數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器,如下圖所示:
其實在鏈路層之下還有物理層,指的是電信號的傳遞方式,比如現在以太網通用的網線(雙絞線)、早期以太網採用的的同軸電纜(現在主要用於有線電視)、光纖等都屬於物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)是工作在物理層的網絡設備,用於雙絞線的連接和信號中繼(將已衰減的信號再次放大使之傳得更遠)。
鏈路層有以太網、令牌環網等標準,鏈路層負責網卡設備的驅動、幀同步(就是說從網線上檢測到什麼信號算作新幀的開始)、衝突檢測(如果檢測到衝突就自動重發)、數據差錯校驗等工作。交換機是工作在鏈路層的網絡設備,可以在不同的鏈路層網絡之間轉發數據幀(比如十兆以太網和百兆以太網之間、以太網和令牌環網之間),由於不同鏈路層的幀格式不同,交換機要將進來的數據包拆掉鏈路層首部重新封裝之後再轉發。
目的主機收到數據包後,如何經過各層協議棧最後到達應用程序呢?整個過程如下圖所示。
以太網驅動程序首先根據以太網首部中的“上層協議”字段確定該數據幀的有效載荷(payload,指除去協議首部之外實際傳輸的數據)是IP、ARP還是RARP協議的數據報,然後交給相應的協議處理。假如是IP數據報,IP協議再根據IP首部中的“上層協議”字段確定該數據報的有效載荷是TCP、UDP、ICMP還是IGMP,然後交給相應的協議處理。假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“端口號”字段確定應該將應用層數據交給哪個用戶進程。IP地址是標識網絡中不同主機的地址,而端口號就是同一臺主機上標識不同進程的地址,IP地址和端口號合起來標識網絡中唯一的進程。
注意,雖然IP、ARP和RARP數據報都需要以太網驅動程序來封裝成幀,但是從功能上劃分,ARP和RARP屬於鏈路層,IP屬於網絡層。雖然ICMP、IGMP、TCP、UDP的數據都需要IP協議來封裝成數據報,但是從功能上劃分,ICMP、IGMP與IP同屬於網絡層,TCP和UDP屬於傳輸層。本文對RARP、ICMP、IGMP協議不做進一步介紹,有興趣的讀者可以看參考資料。
1.基本功能
幀同步:從接收到的比特流中準確區分幀的邊界
差錯控制:差錯檢查和差錯糾正
流量控制:收發雙方速度保持協調
鏈路管理:數據鏈路的建立,維持,釋放
2.主要協議
以太網協議並不是第二層的唯一協議,但卻是最常用的。就好比英語不是大家說的唯一語言,但卻是最常用的。
3.常用的數據鏈路層
- TCP/IP支持多種不同的數據鏈路層協議,這取決於網絡使用的硬件,如以太網、令牌環、FDDI等局域網,串行線路、X.25、幀中繼FR、ATM等廣域網。
- 早期,由於各網絡公司的競爭,局域網沒有形成統一標準,爲了將各種局域網融合,將鏈路層拆分成兩層,邏輯鏈路層(LLC)和媒體接入控制(MAC)(802.3封裝:SAP),
- 90年代,以太網取得壟斷地位,以太網成爲局域網代名詞。數據鏈路層僅需要MAC層,採用以太網幀格式(Ethernet V2封裝:ARPA)。
4.以太網和IEEE802的封裝
以太網Ethernet: 1980年,數字設備公司(DEC)、Intel公司、施樂(Xerox)公司推出了DIX V1.0標準。1982年又推出了DIX V2.0標準,也就是現在通常所說的Ethernet II, 它採用了CSMA/CD(Carrier Sense, Multiple Access with Collision Detection)含衝突檢測的載波偵聽多路接入。
802.3:1985年,IEEE推出了"802.3 含衝突檢測的載波偵聽多路訪問(CSMA/CD)訪問方式和物理層規範",即802.3CSMA/CD標準
如圖所示,顯示了兩種不同形式的封裝格式。最常使用的封裝格式是RFC894定義的格式。兩種幀格式均採用48bit(6 byte)的目的地址和源地址。
這兩個標準稍有不同,TCP/IP協議對這種情況的處理方式如下:
- 以太網的IP數據報封裝在RFC894中定義,而IEEE802網絡的IP數據報封裝在RFC1042中定義。
- 一臺主機一定要能發送和接收RFC894定義的數據報。
- 一臺主機可以接收RFC894和RFC1042的封裝格式的混合數據報。
- 一臺主機也許能夠發送RFC1042數據報。。如果主機能同時發送兩種類型的分組數 據,那麼發送的分組必須是可以設置的,而且默認條件下必須是RFC 894分組。
可見,RFC1042在TCP/IP裏面處於一個配角的地位。
以太網協議實現RFC894規定的功能,能發送和接收採用RFC894封裝格式的幀,同時也能夠兼容與RFC894混合的RFC1042(IEEE802)封裝格式的幀。
數據鏈路層的協議還是很多的,有我們最常用的以太網(就是平時我們用的網卡)協議,也有不太常見的令牌環,還有FDDI,當然,還有國內現在相當普及的PPP協議(就是adsl寬帶),以及一個loopback協議。
聯繫linux裏面的ifconfig -a命令,這個命令通常會得到如下的結果
inet addr:192.168.1.48 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::3617:ebff:febb:ed93/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:847304 errors:0 dropped:0 overruns:0 frame:0
TX packets:540883 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:277120836 (264.2 MiB) TX bytes:195312995 (186.2 MiB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3620024 errors:0 dropped:0 overruns:0 frame:0
TX packets:3620024 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1035581503 (987.6 MiB) TX bytes:1035581503 (987.6 MiB)
其中,em1就是以太網接口,而lo則是loopback接口。這也說明這個主機在網絡鏈路層上至少支持loopback協議和以太網協議。
注意有的網卡標識是eth0等
em=embedded device,表示系統識別出這塊網卡是集成在主板上的;而eth是傳統的以太網卡設備的命名機制。
環回接口(loopback)。平時我們用127.0.0.1來嘗試自己的機器服務器好使不好使。走的就是這個loopback接口。對於環回接口,有如下三點值得注意:
- 傳給環回地址(一般是127.0.0.1)的任何數據均作爲I P輸入。
- 傳給廣播地址或多播地址的數據報復制一份傳給環回接口,然後送到以太網上。這是 因爲廣播傳送和多播傳送的定義包含主機本身。
- 任何傳給該主機IP地址的數據均送到環回接口。
5.MTU最大傳輸單元
最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通信協議的某一層上面所能通過的最大數據包大小(以字節爲單位)。
- FDDI協議:4352字節
- 以太網(Ethernet)協議:1500字節
- PPPoE(ADSL)協議:1492字節
- X.25協議(Dial Up/Modem):576字節
- Point-to-Point:4470字節
我們上面使用ifconfig就可以看到MTU.
也可以用netstat來打印出MTU的結果,比如鍵入netstat -in
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
em1 1500 0 911211 0 0 0 582494 0 0 0 BMRU
lo 16436 0 3745238 0 0 0 3745238 0 0 0 LRU
就可以觀察到em1的MTU是1500。而lo(環回接口)的MTU則是16436。
6.二層設備-交換機/網橋
交換機:
二層交換機工作於OSI模型的第2層(數據鏈路層),故而稱爲二層交換機。二層交換技術是發展比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,並將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。
二層交換機一般只認幀中的源和目的MAC地址進行數據傳輸。根據MAC地址尋址,通過站表選擇路由,站表的建立和維護由交換機自動進行。而路由器屬於OSI第三層即網絡層設備,它根據IP地址進行尋址,通過路由表路由協議產生。
工作過程
二層交換機最大的好處是快速:由於交換機只須識別幀中MAC地址,直接根據MAC地址產生選擇轉發端口算法簡單,便於ASIC實現,因此轉發速度極高。
但交換機的工作機制也帶來一些問題:
1.迴路:根據交換機地址學習和站表建立算法,交換機之間不允許存在迴路。一旦存在迴路,必須啓動生成樹算法,阻塞掉產生迴路的端口。而路由器的路由協議沒有這個問題,路由器之間可以有多條通路來平衡負載,提高可靠性。
2.負載集中:交換機之間只能有一條通路,使得信息集中在一條通信鏈路上,不能進行動態分配,以平衡負載。而路由器的路由協議算法可以避免這一點,OSPF路由協議算法不但能產生多條路由,而且能爲不同的網絡應用選擇各自不同的最佳路由。
3.廣播控制:交換機只能縮小衝突域,而不能縮小廣播域。整個交換式網絡就是一個大的廣播域,廣播報文散到整個交換式網絡。而路由器可以隔離廣播域,廣播報文不能通過路由器繼續進行廣播。
4.子網劃分:交換機只能識別MAC地址。MAC地址是物理地址,而且採用平坦的地址結構,因此不能根據MAC地址來劃分子網。而路由器識別IP地址,IP地址由網絡管理員分配,是邏輯地址且IP地址具有層次結構,被劃分成網絡號和主機號,可以非常方便地用於劃分子網,路由器的主要功能就是用於連接不同的網絡。
5.保密問題:雖說交換機也可以根據幀的源MAC地址、目的MAC地址和其他幀中內容對幀實施過濾,但路由器根據報文的源IP地址、目的IP地址、TCP端口地址等內容對報文實施過濾,更加直觀方便。
6.介質相關:交換機作爲橋接設備也能完成不同鏈路層和物理層之間的轉換,但這種轉換過程比較複雜,不適合ASIC實現,勢必降低交換機的轉發速度。因此目前交換機主要完成相同或相似物理介質和鏈路協議的網絡互連,而不會用來在物理介質和鏈路層協議相差甚元的網絡之間進行互連。而路由器則不同,它主要用於不同網絡之間互連,因此能連接不同物理介質、鏈路層協議和網絡層協議的網絡。路由器在功能上雖然佔據了優勢,但價格昂貴,報文轉發速度低。近幾年,交換機爲提高性能做了許多改進,其中最突出的改進是虛擬網絡和三層交換。
網橋(Bridge):
是一個局域網與另一個局域網之間建立連接的橋樑。屬於數據鏈路層的一種設備。網橋的作用是擴展網絡和通信手段,在各種傳輸介質中轉發數據信號,擴展網絡的距離,同時又有選擇地將現有地址的信號從一個傳輸介質發送到另一個傳輸介質,並能有效地限制兩個介質系統中無關緊要的通信。
網橋可分爲本地網橋和遠程網橋。本地網橋是指在傳輸介質允許長度範圍內互聯網絡的網橋;遠程網橋是指連接的距離超過網絡的常規範圍時使用的遠程橋,通過遠程橋互聯的局域網將成爲城域網或廣域網。如果使用遠程網橋,則遠程橋必須成對出現。
分享一下我老師大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow