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
- 類比於激光
- 多模:2KM
- 光纜本身不值錢,但是接口比較貴(接口就是一個光模塊)
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廣播
- 訪問內部網絡中的主機:
- ARP廣播:通過IP地址獲取MAC地址
- 目的MAC地址:FF:FF:FF:FF:FF:FF
- 交換機接收到廣播包:泛洪 --> 發送給除了接收接口之外的所有接口
- 發送目的地址為全F的廣播包(呼叫IP為192.168.30.123的主機,把你的MAC地址告訴我)
- 目標主機收到后進行響應(123主機收到后,將自己的MAC地址作為響應報文的源MAC地址,對方的MAC作為目標MAC地址,並將對方MAC記入本地ARP表)
- 此時雙方的ARP表中都有了彼此的MAC和IP對應的記錄。以后的通信就可以直接查表發送數據了。
- ARP廣播:通過IP地址獲取MAC地址
- 訪問外部網絡(不是在同一個廣播域)
- 訪問網關:192.168.30.254
- 獲取網關的MAC地址
- 通過ARP廣播:FF:FF:FF:FF:FF:FF
- 然后網關對報文進行轉發,將其轉發到其他網段。
- 訪問網關:192.168.30.254
3)ARP綁定
- 在Linux下:
- 新建/etc/ip-mac文件,寫入IP與MAC的綁定信息
- 192.168.1.101 ac:f9:70:f8:db:aa
- 然后手動執行綁定:
- arp -f /etc/ip-mac
- 新建/etc/ip-mac文件,寫入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
- 首先通過IP地址和子網掩碼來區分出自己所處的子網,然后進行判斷:
- 同一子網:目標主機MAC,目標主機IP
- 不同子網:網關MAC,目標主機IP
- 分析101和102是否處於同一網絡
- 同一網絡(在這個案例中兩者是同一網絡)
- 不同網絡:
- 先通過ARP獲取網關的MAC地址,然后將包發送給網關,再由網關來轉發。
- 同一網絡(在這個案例中兩者是同一網絡)
- 這個包會以廣播的方式在發送端所處的局域網內傳輸,所有的主機接收后拆開包:
- 若發現目標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
- 網絡地址:192.168.30.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中狀態。


