OSI模型各層詳解


1. OSI概述

1.1 模擬器說明

1)模擬器的作用

搭建實驗環境進行測試。

2)模擬器的類型

  • PT:一般是學校中使用,命令不完整,且不能抓包
  • GNS3:思科(CCNA,CCNP),命令行比較完整,可以抓包分析(運行IOS)
  • EVE:思科(CCIE)
  • ENSP:華為

1.2 集線器和交換機

1)集線器(HUB)

只是簡單的將多個計算機串聯起來(HUB帶電源供電,以放大電信號)。HUB是物理層設備。

和HUB相連的所有主機都在一個沖突域內,所以同一時間只能有一個主機發送報文,而其他所有主機都只能接受。即某個時段,HUB接口中,只能有一個用戶建立數據鏈路和目的端進行通信,而其他端口只能處於監聽狀態。

CSMA/CD:載波偵聽多路訪問/沖突檢測 協議:是廣播型信道中采用的一種隨機訪問技術的競爭型訪問方法,是一種退讓機制。

HUB集線器采用是是半雙工通信機制。

2)交換機(Switch)

Switch和主機相連的每個接口都會把電信號(高低電頻)轉換為數字信號(100101010)。

交換機是擁有CPU、內存、緩存以及一系列芯片的,可以邊緩存邊轉發,所以可以對從接口傳入過來的數據進行處理。

Switch的每一個接口是一個沖突域,所以和交換機相連的所有主機都可以同時發送報文。

網橋:PC1  --> (電信號轉換為數字信號) 網橋 (數字信號轉換為電信號) --> PC2  (網橋還會對接收的信息進行糾錯)

1.3 OSI七層模型概述

1)OSI七層&TCP/IP五層

  • OSI七層:
    • 應用層:文件、打印、消息、數據庫和應用程序服務
    • 表示層:數據加密、壓縮和轉換服務
    • 會話層:對話控制
    • 傳輸層:端到端連接
    • 網絡層:路由選擇
    • 數據鏈路層:成幀
    • 物理層:物理拓撲
  • TCP/IP五層圖示:(TCP/IP四層是將數據鏈路層和物理層合並成了網絡接口層)

   

 

 

 

 

 

 

2)對OSI七層各個層次的解釋

  • 第七層:應用層
    • QQ、搜狗、思維導圖等應用軟件
  • 第六層:表示層
    • 轉碼的過程、壓縮、應用軟件之間的數據交互
  • 第五層:會話層
    • 迅雷下載、限速
    • 應用層:數據 = PDU
  • 第四層:傳輸層
    • TCP、UDP
    • TCP + 數據 = 段(segment)
  • 第三層:網絡層
    • 路由、如何到達到對方
    • IP + TCP + 數據 = 包(packet)
  • 第二層:數據鏈路層
    • MAC地址
    • MAC + IP + TCP + 數據 = 幀(frame)
  • 第一層:物理層
    • 比特(bit)

2. 物理層(傳輸介質)

2.1 有線介質

2.1.1 雙絞線

特點:電傳輸(線纜+水晶頭)

  • 傳輸距離:100m
  • 傳輸介質:銅
  • 誤碼率:線纜傳輸過程中受到干擾發生錯誤的比例
  • 絞線的主要目的就是屏蔽信號,所以要絞在一起,絞的越緊抗干擾能力越強;全平的線容易受到干擾。

線纜的部分:

  • 非屏蔽線:
    • CAT5:五類線
    • CAT5E:超五類線
    • CAT6:六類線
    • CAT6E:超六類線
    • 建議使用六類線,部分六類線有屏蔽功能
  • 屏蔽線:(屏蔽線外面有一層鋁箔包裹,以屏蔽信號)
    • CAT7:七類線
    • 七類線默認就是屏蔽線,建議在機房環境下使用七類線

水晶頭部分:(RJ45水晶頭)

  • 線序:線序從左到右

  • 直通線和交叉線:
    • 直通線:568B-568B、568A-568A
    • 交叉線:568B-568A
  • 通斷規則:
    • 4芯通:百兆(線序中的第1236通)
    • 8芯全通:千兆(在應急情況下,可以將一根網線分成兩個頭,第1236和第4578)
  • 設備連線標准:
    • 老設備
      • 交叉線:同接口相連(交換機接口-交換機接口,路由器接口-路由器接口,電腦接口-電腦接口)
      • 直通線:異種接口相連(電腦接口屬於路由接口)
    • 現在的設備
      • 直通和交叉隨便插

 POE設備:通過雙絞線進行供電(類似一台2層或3層的交換機)

  • 作用:供電 + 數據傳輸
  • 支持:POE交換機
    • 攝像頭支持POE供電
    • 無線路由器支持POE供電
  • 圖示:

2.1.2 光纖

特點:光傳輸(玻璃纖維,塑料)

  • 不受電磁信號干擾
  • 傳輸速率快:
    • 1000M:G
    • 10000M:TEN-G
    • 100000M:E
  • 傳輸距離大:
    • 多模:2KM
      • 類比於手電筒
    • 單模:42KM
      • 類比於激光
  • 光纜本身不值錢,但是接口比較貴(接口就是一個光模塊

2.2 無線介質(WiFi)

1)運營商網絡

5G:

  • 高頻:波長比較短
  • 干擾源:不容易受到干擾
  • 特點:
    • 價格貴
    • 穿牆能力比較差

2.4G:

  • 低頻:波長比較長
  • 干擾源:
    • 電磁爐
    • 藍牙鼠標
    • 電吹風
  • 特點:穿牆能力比較好

2)無線路由器

  •  把RJ45的有限網絡,放出無線的信號。

3. 數據鏈路層

3.1 數據鏈路層概述

3.1.1 由來和功能

  • 由來:單純的數字信號0和1沒有任何意義,必須規定電信號多少位一組,每組什么意思。
  • 數據鏈路層的功能:
    • 在數據鏈路層進行比特轉換(電信號 --> 數字信號)
    • 定義了數字信號的分組方式

3.1.2 以太網協議

以太網協議:

  • 由來:早期許多公司都有自己的分組方式,后來形成了統一的標准,即以太網協議(ethernet)
  • 規則:ethernet規定,MTU為1500字節
    • 一組電信號構成一個數據幀
    • 每一數據幀分為:報頭head和數據data兩部分

數據幀的構成:(head+data)

  • head部分(固定的18個字節)
    • 源地址:6字節
    • 目的地址:6字節
    • 數據類型+FCS(幀檢測序列):6字節(2+4)
  • data部分(最短46字節,最長1500字節)
    • 幀的數據長度最小為 46 字節,最大為 1500 字節。
    • 如果不足 46 字節時,會填充到最小長度。最大值也叫最大傳輸單元(MTU)
  • 注意:
    • head+data=(最短64字節,最長1518字節),如果超過最大限制就分片發送。

3.2 數據鏈路層:MAC子層+LLC子層

MAC Sub-layer(介質訪問控制子層)

  • 指定數據如何通過物理線路進行傳輸,並與物理層通信

LLC Sub-layer(邏輯鏈路控制子層)

  • 對數據進行識別並糾錯、重傳(誤碼率)、協商速率等
  • 若誤碼率較高,會直接將接口速率降低(如千兆變百兆),若再高,會將接口直接宕掉
  • 全雙共和半雙共也是LLC子層協商的,正常情況下都是全雙工,可以手動調

圖示:

 

3.3 交換機與MAC地址

MAC地址組成:12個十六進制數字組成

  • 前6位:廠商編號
  • 后6位:流水線號

MAC地址表:MAC -> 接口

  • 若交換機中的MAC表有目標MAC的記錄:直接查表轉發
  • 若交換機中的MAC表沒有目標MAC的記錄:就發送給除了自己的所有接口(廣播的方式)
  • MAC地址表如果過大,內存可能會溢出

接口帶寬:

  • E:10M/100M
  • F:100M
  • G:1000M
  • Ten-G:10000M

3.4 接口UP的方式(雙UP和單UP)

  • 物理層的UP
  • 協議的UP
    • 協議的UP是需要LLC子層來進行協商看能否UP起來的
  • 雙UP才能轉發數據(接口和協議都UP)

3.5 雙工

全雙工:

  • 收發能同時進行

半雙工:

  • 收發不能同時進行
  • 如HUB集線器

4. 網絡層

4.1 網絡層概述

1)由來

大網絡由一個個小的彼此隔離的局域網組成,以太網包只能在一個局域網內發送。

一個局域網是一個廣播域,以太網的廣播包只能在一個廣播域內發送,跨廣播域通信只能通過路由轉發。

那么我們便要用一種方法來區分哪些計算機屬於同一廣播域,如果在同一廣播域就采用廣播的方式發送,如果不是同一廣播域就采用路由的方式發送(向不同的廣播域/子網發數據包)。

由此我們便引入一套新的地址來區分不同的廣播域/子網,這套地址就叫做網絡地址。

2)網絡層的作用

  • 網絡層也叫Internet層,負責將報文從源端發送到目的端
  • 網絡層為網絡中的設備提供邏輯地址
  • 網絡層負責數據包的尋徑和轉發

3)協議

  • 路由器:三層設備,識別到IP地址
  • 協議:
    • IP:ipv4、ipv6
    • ICMP:ping、tracert
    • ARP:IP --> MAC(ARP是2層和3層之間的協議)
    • RARP:MAC --> IP
    • IGMP:組播加入協議

4.2 IP包

1)IP包概述

  • 版本:
    • ipv4:普及
    • ipv6:下一代
  • 報文長度
  • 總長度

2)數據包切片

  • 切片大小
  • MTU默認1500字節
    • 如果小包能通過,但是大包通過不了,就要考慮是否是MTU切片的問題了
  • Flag位:
    • 置0時能切片,置1時不能切片
  • ping命令:
    • ping  -l  1440  -f  114.114.114.114
    • -l 指明單個ICMP包大小,-f 設置不能切片

3)生存時間(TTL)

  • TTL(Time To Live):
    • TTL表示數據包在三層設備存活的時間
    • TTL值表示IP包被路由器丟棄之前允許通過的最大網段數量。實際上TTL是IP數據包在網絡中可以轉發的最大跳數
    • TTL是發送主機設置的,以防止數據包不斷在IP網絡上循環,轉發IP數據包時,要求路由器至少將TTL減小1
    • TTL的最大值是255,TTL的另一個推薦值是64
  • 實現過程:
    • TTL字段由IP數據包的發送者設置,在整個轉發路徑上,每經過一個路由器,路由器都把該TTL值減1,然后再將IP包轉發出去
    • 如果在IP包到達目的IP之前,TTL減少為0,路由器會將丟棄收到的到的TTL=0的IP包,並向IP包的發送者發送ICMP time exceeded消息
    • TTL為0的響應報文,H3C、HUAWEI的設備默認是關閉的,如果需要探測則要將其開啟

4.3 ICMP協議

ping和tracert會使用ICMP協議

ICMP的兩個重要類型碼(icmp-type)

  • 請求碼:8
  • 應答碼:0

路由跟蹤:檢測到的路徑(三層)

  • tracert  -d  114.114.114.114
C:\Users\24698>tracert  -d 114.114.114.114

通過最多 30 個躍點跟蹤到 114.114.114.114 的路由

  1     3 ms     1 ms     1 ms  192.168.1.1
  2    20 ms    30 ms     5 ms  100.97.232.1
  3     9 ms     5 ms     7 ms  111.38.4.157
  4    10 ms    12 ms    11 ms  120.210.231.177
  5    10 ms    13 ms    12 ms  120.193.121.38
  6    11 ms    11 ms    13 ms  114.114.114.114

跟蹤完成。

4.4 ARP協議

1)IP地址和MAC地址

  • IP地址:源IP地址 --> 目的IP地址
  • MAC和IP的對應:
    • IP --> MAC:192.168.1.1  ac-f9-70-f8-db-ca   動態

2)ARP廣播

  • 訪問內部網絡中的主機:
    1. ARP廣播:通過IP地址獲取MAC地址
      • 目的MAC地址:FF:FF:FF:FF:FF:FF
      • 交換機接收到廣播包:泛洪 --> 發送給除了接收接口之外的所有接口
    2. 發送目的地址為全F的廣播包(呼叫IP為192.168.30.123的主機,把你的MAC地址告訴我)
    3. 目標主機收到后進行響應(123主機收到后,將自己的MAC地址作為響應報文的源MAC地址,對方的MAC作為目標MAC地址,並將對方MAC記入本地ARP表)
    4. 此時雙方的ARP表中都有了彼此的MAC和IP對應的記錄。以后的通信就可以直接查表發送數據了。
  • 訪問外部網絡(不是在同一個廣播域)
    1. 訪問網關:192.168.30.254
      • 獲取網關的MAC地址
      • 通過ARP廣播:FF:FF:FF:FF:FF:FF
    2. 然后網關對報文進行轉發,將其轉發到其他網段。

3)ARP綁定

  • 在Linux下:
    • 新建/etc/ip-mac文件,寫入IP與MAC的綁定信息
      • 192.168.1.101  ac:f9:70:f8:db:aa
    • 然后手動執行綁定:
      • arp  -f  /etc/ip-mac
  • 在Windows下:
    • 命令行執行:arp  -s  192.168.1.101  ac:f9:70:f8:db:aa

4)ARP攻擊(ARP欺騙、中間者攻擊)

  • 攻擊:網絡執行法官、聚生網管、P2P終結者
  • 防御:使用ARP綁定即可杜絕這類攻擊

5)ARP協議工作方式詳細分析

  • 假設:主機192.168.1.101/24 訪問 192.168.1.102/24
  1. 首先通過IP地址和子網掩碼來區分出自己所處的子網,然后進行判斷:
    • 同一子網:目標主機MAC,目標主機IP
    • 不同子網:網關MAC,目標主機IP
  2. 分析101和102是否處於同一網絡
    • 同一網絡(在這個案例中兩者是同一網絡)
    • 不同網絡:
      • 先通過ARP獲取網關的MAC地址,然后將包發送給網關,再由網關來轉發。
  3. 這個包會以廣播的方式在發送端所處的局域網內傳輸,所有的主機接收后拆開包:
    • 若發現目標IP為自己就響應,返回自己的MAC,並在主機的ARP表中記錄對方的MAC
    • 若發現目標IP不是自己,則直接將包丟棄

4.5 IP地址

4.5.1 IP基礎

基本常識:

  • 網關地址:
    • 家用級別:192.168.1.1
    • 企業級別:192.168.1.254
  • 私網和公網:
    • 私網:可以任意使用,相對可以任意規划
      • A類:10.0.0.0 - 10.255.255.255
      • B類:172.16.0.0 - 172.31.255.255、172.16.0.0/12
      • C類:192.168.0.0 - 192.168.255.255
    • 公網:外網使用,運營商申請(自動分配、非固定或固定IP地址)
      • 114.114.114.144、8.8.8.8等
  • 進制:
    • BIN:二進制
    • OCT:八進制
    • HEX:十六進制
    • DEC:十進制

掩碼:

  • 從左往右不能中斷:
    • 255.0.0.0                  /8
    • 255.255.0.0              /16
    • 255.255.255.0          /24
    • 255.255.255.255      /32
  • 划分網絡部分和主機部分:
    • 192.168.1.1/24
    • 192.168.1.1/16

網段:

  • 同網段:
    • 直接進行訪問(必須要在同一個廣播域下)
    • 不需要通過中間的網關
  • 不同網段:
    • 發送給網關:同一個廣播域(同一個交換機)
    • 需要通過中間的網關
  • 網段:192.168.30.0/24
    • 網絡地址:192.168.30.0
      • 網絡部分:192.168.30
      • 主機部分為0
    • 掩碼:255.255.255.0

專業名詞:

  • 現網:現實網絡、運行網絡

4.5.2 IP地址類型(主類地址,有類地址)

主類地址圖示:

單播地址:能夠配置使用的,可以一對一進行傳遞

  • A類:
    • 第一組:0XXX  XXXX
    • 范圍:1-126(去掉特殊地址0和127)
    • 默認情況:
      • 主類、有類
      • 掩碼:/8
  • B類:
    • 第一組:10XX  XXXX
    • 范圍:128-191
    • 默認情況:
      • 主類、有類
      • 掩碼:/16
  • C類:
    • 第一組:110X  XXXX
    • 范圍:192-223
    • 默認情況:
      • 主類、有類
      • 掩碼:/24

組播地址:可以一對多

  • 協議:UDP

特殊地址:特殊用途的

  • 默認路由:0.0.0.0/0
  • 本地環回地址:127.xx.xx.xx(訪問這個IP就是訪問自己)
  • 網絡地址:
    • 比如對於172.16.100.1/16來說,172.16.0.0就是網絡地址
    • 網絡部分不變,主機部分為0
    • 用途:和掩碼配合,標記網段
  • 廣播地址:
    • 全局廣播地址:(針對的是所有網段)
      • 二層廣播地址:FF:FF:FF:FF:FF:FF,交換機接收到二層廣播會泛洪(轉發給除了自己的所有接口)
      • 三層廣播地址:255.255.255.255,三層設備
    • 本地廣播地址:(針對特定的網段)
      • 網絡部分不變,主機部分為全1的地址,如192.168.100.255

4.5.3 IP地址類型(無類地址)

有類和無類IP地址:

  • 有類:
    • A類:掩碼/8
    • B類:掩碼/16
    • C類:掩碼/24
  • 無類:
    • 掩碼/1-32

A類地址:1.0.131.0/24

  • A類的無類地址(1.0.131.0/24)
  • A類的主類:掩碼 /8  

無類IP地址:

  • 同網段:
    • 網絡地址和掩碼一樣:一定是在同網段
    • 網絡地址和掩碼不一樣:不一定不在同網段
  • 路由器:具有隔離廣播的功能(二層和三層廣播)
  • 掩碼變長,可用的IP地址就會變少,網段的數量就會變多

特殊網段:

  • 互連網段:/30
    • 可用地址:2^(32-30)-2 = 2
    • 互連地址,給網絡設備使用的,如兩個路由器相連
  • 邏輯網段:/32
    • loopback口
  • 業務網段:
    • 打印機、服務器、手機

4.5.4 子網的划分

子網划分的好處:

  • 將一個大的廣播域划分成幾個小的廣播域,減少網關設備所承載的負載量
  • 有效的避免IP地址的浪費,是一個大的地址開年更加彈性和更加靈活的進行分配

若不划分子網:

  • 會出現大量的局域網地址,同時向一個網關發送請求,會引起網關設備的負載過高
  • 會引起局域網內的大量廣播數據傳送,形成廣播風暴
  • 會非常浪費地址空間,有可能只有兩台主機或一台主機,就要分配一個C類地址

子網划分圖示:

 子網數的計算:

  • 某網絡中可用的主機地址:
    • 2的N次方-2 (N表示IP地址中主機部分的二進制位數)
    • 如202.96.23.0這個C類地址中有2的8次方個可用主機地址
  • 某網絡中的子網數:
    • 2的N次方(N表示子網部分的二進制位數),如上面的子網就有2的3次方個

5. 傳輸層

5.1 傳輸層概述

5.1.1 TCP和UDP協議

TCP和UDP圖示:

TCP和UDP的應用場景:

  • TCP:可靠、面向連接,有虛擬管道的概念(構建在網絡層之上)
    • 公屏討論區:TCP
    • 收發郵件:TCP
      • 發送郵件:SMTP(簡單郵件傳輸協議),端口:25/tcp
      • 接收郵件:POP3(郵局協議版本3),端口110/tcp
  • UDP:不可靠,但具有及時性
    • 直播語音+視頻:UDP

5.1.2 查看應用端口號:(Windows中)

  • 查看IP地址對應的鏈接
    • netstat  -nat | find  '14.125.177.33'
  • 查看PID對應的端口和地址
    • netstat  -nat | find  '1778'

 5.2 TCP報文首部詳解

 5.2.1 TCP首部圖示

 5.2.2 TCP報文首部各字段的解釋

  • Source Port Number:源端口
    • 之所以占據16個bit位,是因為2的16次方正好可以標識65535個端口號
  • Destination Port Number:目標端口
  • Sequence Number:請求時附帶的隨機序列號
  • Acknowledgement Number:應答時附帶的序列號
    • 在對方請求時附帶的序列號的基礎上加1
  • Header Length:報文首部的長度
    • 4個bits表示首部最長的長度為2個4次方,也就是可以標識15段,一段為4個字節,則最長長度為60個字節
  • Reserved:報文的標識位,占據6bit,可表示6個flag
    • URG:報文段中發送的數據是否包含緊急數據,值為1時表示有緊急數據(后面的緊急字段只有當URG值為1時才生效)

    • ACK:表示是否前面的確認號字段是否有效,ACK=1,表示有效(TCP規定,連接建立后,ACK必須為1)
    • PSH:告訴對方收到該報文段收是否應該立即把數據推送給上層,如果為1,則表示對方應該立即把數據提交給上層,而不是緩存起來
    • RST:與主機的連接出現了嚴重錯誤(如主機奔潰),必須釋放連接,然后再重新建立連接(或者說上次發送的數據有問題,主機拒絕響應)
    • SYN:在建立連接時使用,用來同步序號
      • 當SYN為1,ACK為0時,表示這是一個請求連接的報文段
      • 當SYN為1,ACK為1時,表示對方同意建立連接
      • SYN為1,說明這是一個請求建立連接或同意建立連接的報文,只有在前兩次握手中SYN才置1
    • FIN:標記數據是否發送完畢,如果FIN=1,將相當於告訴對方,自己的數據已經發送完畢,對方可以釋放連接了
  • Windows Size:滑動窗口的大小
    • 用以告知對方自己接受緩沖區的大小,以協商出一個合適的傳輸速率
  • TCP Checksum:TCP的校驗和,提供額外的可靠性
  • Urgent Pointer:標記進制數據在字段中的位置
  • Options:可選部分(這部分的最大長度為40Bytes)
  • Data:數據部分

5.3 TCP的連接和斷開(三次握手,四次揮手)

1)圖示

2)關於2MSL

在四次揮手的最后階段,客戶端進入TIME_WAIT狀態,繼續等待2MSL的時間再完全斷開連接。

在四次揮手的過程中,哪一方先調用close,哪一方就會在第三次揮手后繼續等待2MSL的時間。

為什么要等待2MSL:MSL即為一個數據包在網絡上存活的最長時間,即數據包從被發送到被接收所經歷的最長時間;2MSL即為在四次揮手的第三次過程中,先發起中斷連接的一方將會繼續等待2倍MSL的時間后再完全中斷tcp鏈接。等待2倍的MSL時間就是因為防止服務端沒有收到最后一次的ACK,即在2MSL的時間內,若服務端沒收到最后的ACK,在超過超時時間(MSL)后,服務端會認為客戶端沒收到第三次揮手中的FIN,這時服務端會再發一份FIN,這時一共經歷了2MSL的時間,而客戶端此時等待了2MSL的時間,正好可以接收這一次服務端重發的FIN請求,從而有效的保證了所有的請求和回應都會被對方接收。

5.4 TCP FSM(TCP的有限狀態機)

TCP的有限狀態機(TCP FSM)其實就是TCP的11中狀態。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM