
🌈 個人主頁:Zfox_
🔥 系列專欄:Linux

目錄
- 一:🔥 NAT 技術背景
- 二:🔥 NAT IP 轉換過程
- 三:🔥 NAPT
- 四:🔥 代理服務器
- 🦋 正向代理
- 概述
- 工作原理
- 功能特點
- 應用場景
- 🦋 反向代理
- 概述
- 基本原理
- 應用場景
- 🦋 NAT 和代理服務器
- 五:🔥 內網穿透 和 內網打洞
- 🦋 內網穿透
- 1. 背景
- (1)私有IP地址的限制
- (2)NAT(網絡地址轉換)的限制
- (3)防火墻的限制
- 🦋 內網打洞
- 內網打洞的工作原理
- 內網打洞的優缺點
- 優點:
- 缺點:
- 適用場景
- 六:🔥 總結
- 🦋 數據鏈路層
- 🦋 網絡層
- 🦋 傳輸層
- 🦋 應用層
- 七:🔥 共勉
一:🔥 NAT 技術背景
💬 今天我們來聊聊網絡世界里一個超重要的技術 —— NAT(網絡地址轉換)。你有沒有想過,為啥我們家里的電腦、手機,還有公司里的各種設備,都能同時連上網,但又不會互相沖突呢?這就得感謝 NAT !
🕸? IPv4 地址不夠用,這事兒大家都清楚。NAT 就像是一個超級聰明的 “翻譯官”,它能把我們內網里的私有IP地址(比如192.168.1.x)轉換成公網能識別的全局IP地址。這樣,我們就能在有限的公網IP下,讓無數設備同時上網!
🌰 舉個例子,學校里可能有幾百臺電腦,但學校只需要一個公網IP,NAT 就能搞定這一切。公網IP必須是獨一無二的,但私有IP就隨便多了,不同的局域網里完全可以重復用,一點兒問題都沒有。
二:🔥 NAT IP 轉換過程
那么這樣在網絡通信過程中勢必會造成問題,因為私有IP并不是唯一的,所以私有IP不能出現在公網通信中的。解決這個問題的機制就是 NAT 機制。NAT 機制即在路由器進行轉發時將報文源IP更換為 路由器WAN口IP ,進行一次源IP地址替換!
這樣就可以私有IP就不會出現在公網中!并且在通信過程中夠可以層層向下找到唯一的主機!
- NAT 路由器將源地址從 10.0.0.10 替換成全局的 IP 202.244.174.37。
- NAT 路由器收到外部的數據時,又會把目標 IP 從 202.244.174.37 替換回 10.0.0.10。
- 在 NAT 路由器內部,有一張自動生成的、用于地址轉換的表 NAPT。
- 當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系。
三:🔥 NAPT
🤔 那么問題來了,如果局域網內有多個主機都訪問同一個外網服務器,那么對于服務器返回的數據中,目的 IP 都是相同的。那么 NAT 路由器如何判定將這個數據包轉發給哪個局域網的主機?這時候 NAPT 來解決這個問題了。使用 IP+port 來建立這個關聯關系。
這種關聯關系也是由 NAT 路由器自動維護的。例如在 TCP 的情況下,建立連接時就會生成這個表項;在斷開連接后,就會刪除這個表項。
路由器之中,進行轉發時,維護了一張 NAPT 轉換表。其中記錄目的 IP + 端口號port 與 WAN口IP + 端口號port 的映射關系,互為鍵值。這兩個都具有唯一性:局域網唯一,公網唯一!源IP發生替換,源端口也可能發生替換!這樣保證了映射的唯一性!
每個路由器在轉發過程中都會生成一份NAPT 表,最終就可以到達公網進行通信!這樣其實也說明了一個問題,公網是無法直接訪問內網機器的,只有內網機器向公網發送過數據,建立過 NAPT 表,才能從外部進入內部!
所以 NAT 技術是有缺陷的,由于 NAT 依賴這個轉換表, 所以有諸多限制:
- 無法從 NAT 外部向內部服務器建立連接。
- 轉換表的生成和銷毀都需要額外開銷。
- 通信過程中一旦 NAT 設備異常,即使存在熱備,所有的 TCP 連接也都會斷開。
使用 WIndows 訪問我們的 Linux 服務端時,我們仔細觀察會發現服務端接收到的IP地址和 WIndows 端是不一致的!
這也是由于路由器 NAT轉發的結果!Linux 服務上的實際獲取到的IP是出入口路由器的 WAN口IP
四:🔥 代理服務器
🦋 正向代理
概述
正向代理
(Forward Proxy)是一種常見的網絡代理方式,它位于客戶端和目標服務器之間,代表客戶端向目標服務器發送請求。正向代理服務器接收客戶端的請求,然后將請求轉發給目標服務器,最后將目標服務器的響應返回給客戶端。通過這種方式,正向代理可以實現多種功能,如提高訪問速度、隱藏客戶端身份、實施訪問控制等。
工作原理
- 客戶端將請求發送給正向代理服務器。
- 正向代理服務器接收請求,并根據配置進行處理,如緩存查找、內容過濾等。
- 正向代理服務器將處理后的請求轉發給目標服務器。
- 目標服務器處理請求,并將響應返回給正向代理服務器。
- 正向代理服務器將響應返回給客戶端。
功能特點
- 緩存功能:正向代理服務器可以緩存經常訪問的資源,當客戶端再次請求這些資源時,可以直接從緩存中獲取,提高訪問速度。
- 內容過濾:正向代理可以根據預設的規則對請求或響應進行過濾,如屏蔽廣告、阻止惡意網站等。
- 訪問控制:通過正向代理,可以實現對特定網站的訪問控制,如限制員工在工作時間訪問娛樂網站。
- 隱藏客戶端身份:正向代理可以隱藏客戶端的真實 IP 地址,保護客戶端的隱私。
- 負載均衡:在多個目標服務器之間分配客戶端請求,提高系統的可擴展性和可靠性。
應用場景
- 企業網絡管理:企業可以通過正向代理實現對員工網絡訪問的管理和控制,確保員工在工作時間內專注于工作,避免訪問不良網站或泄露公司機密。
- 公共網絡環境:在公共場所如圖書館、學校等提供的網絡環境中,通過正向代理可以實現對網絡資源的合理分配和管理,確保網絡使用的公平性和安全性。
- 內容過濾與保護:家長可以通過設置正向代理來過濾不良內容,保護孩子免受網絡上的不良信息影響。
- 提高訪問速度:對于經常訪問的網站或資源,正向代理可以通過緩存機制提高訪問速度,減少網絡延遲。
- 跨境電商與海外訪問:對于跨境電商或需要訪問海外資源的企業和個人,正向代理可以幫助他們突破網絡限制,順暢地訪問海外網站和資源。
🦋 反向代理
概述
🛜 反向代理服務器
是一種網絡架構模式,其作為 Web 服務器的前置服務器,接收來自客戶端的請求,并將這些請求轉發給后端服務器,然后將后端服務器的響應返回給客戶端。這種架構模式可以提升網站性能、安全性和可維護性等。
基本原理
🍑 反向代理服務器位于客戶端和 Web 服務器之間,當客戶端發起請求時,它首先會到達反向代理服務器。反向代理服務器會根據配置的規則將請求轉發給后端的 Web 服務器,并將 Web 服務器的響應返回給客戶端。在這個過程中,客戶端并不知道實際與哪個 Web 服務器進行了交互,它只知道與反向代理服務器進行了通信。
應用場景
負載均衡
:反向代理服務器可以根據配置的負載均衡策略,將客戶端的請求分發到多個后端服務器上,以實現負載均衡。這有助于提升網站的整體性能和響應速度,特別是在高并發場景下。- 安全保護:反向代理服務器可以隱藏后端 Web 服務器的真實 IP 地址,降低其被直接攻擊的風險。同時,它還可以配置防火墻、訪問控制列表(ACL)等安全策略,對客戶端的請求進行過濾和限制,以保護后端服務器的安全。
- 緩存加速:反向代理服務器可以緩存后端 Web 服務器的響應內容,對于重復的請求,它可以直接從緩存中返回響應,而無需再次向后端服務器發起請求。這可以大大減少后端服務器的負載,提升網站的響應速度。
- 內容過濾和重寫:反向代理服務器可以根據配置的規則對客戶端的請求進行過濾和重寫,例如添加或刪除請求頭、修改請求路徑等。這有助于實現一些特定的業務需求,如 URL 重寫、用戶認證等。
- 動靜分離:在大型網站中,通常需要將靜態資源和動態資源分開處理。通過將靜態資源部署在反向代理服務器上,可以直接從反向代理服務器返回靜態資源的響應,而無需再次向后端服務器發起請求。這可以大大提升靜態資源的訪問速度。
- CDN(Content Delivery Network,內容分發網絡):就是采用了反向代理的原理。
🦋 NAT 和代理服務器
🍑 路由器往往都具備 NAT 設備的功能,通過 NAT 設備進行中轉,完成子網設備和其他子網設備的通信過程。代理服務器看起來和 NAT 設備有一點像。客戶端像代理服務器發送請求,代理服務器將請求轉發給真正要請求的服務器;服務器返回結果后,代理服務器又把結果回傳給客戶端。
那么 NAT 和代理服務器的區別有哪些呢?
- 從應用上講:NAT 設備是網絡基礎設備之一,解決的是 IP 不足的問題。代理服務器則是更貼近具體應用,比如通過代理服務器進行翻墻,另外像迅游這樣的加速器,也是使用代理服務器。
- 從底層實現上講:NAT 是工作在網絡層,直接對 IP 地址進行替換。代理服務器往往工作在應用層。
- 從使用范圍上講:NAT 一般在局域網的出口部署,代理服務器可以在局域網做,也可以在廣域網做,也可以跨網。
- 從部署位置上看:NAT 一般集成在防火墻、路由器等硬件設備上,代理服務器則是一個軟件程序,需要部署在服務器上。
代理服務器是一種應用比較廣的技術:
- 翻墻:廣域網中的代理。
- 負載均衡:局域網中的代理。
代理服務器又分為正向代理和反向代理:
- 正向代理:用于請求的轉發(例如借助代理繞過反爬蟲)。
- 反向代理:往往作為一個緩存。
五:🔥 內網穿透 和 內網打洞
🦋 內網穿透
內網穿透是一種網絡技術,用于解決內網設備與外部網絡之間通信的問題。它可以讓外部設備訪問內網中的設備或服務,而無需直接暴露內網設備的IP地址,從而在一定程度上兼顧了安全性和可訪問性。
1. 背景
在大多數網絡環境中,內網設備(如家庭路由器內的設備、公司內部網絡中的服務器等)通常被隱藏在路由器或防火墻之后,無法直接從外部網絡訪問。這主要是由于以下原因:
(1)私有IP地址的限制
內網設備通常使用私有IP地址(如192.168.x.x
),這些地址只能在局域網內使用,無法在公網中直接訪問。私有IP地址的范圍包括:
10.0.0.0
到10.255.255.255
172.16.0.0
到172.31.255.255
192.168.0.0
到192.168.255.255
這些地址在互聯網中是不可路由的,因此外部設備無法直接通過這些地址訪問內網設備。
(2)NAT(網絡地址轉換)的限制
內網設備通過路由器訪問外網時,路由器會將內網設備的私有IP地址轉換為公網IP地址(即路由器的WAN口IP)。這個過程稱為網絡地址轉換(NAT)。NAT的作用是:
- 節省內公網IP地址資源。
- 保護內網設備的安全性。
然而,NAT機制也導致了外部設備只能看到路由器的公網IP,而無法直接訪問內網設備的私有IP。
(3)防火墻的限制
防火墻是網絡中的安全屏障,通常會阻止外部設備直接訪問內網設備,以保護內網的安全。防火墻的作用包括:
- 阻止未經授權的訪問。
- 過濾惡意流量。
- 保護內網設備免受攻擊。
防火墻的限制進一步增加了內網設備對外部訪問的難度。
如果今天可以做到:
首先我們擁有一臺云服務器,并且在內網構建一臺 Linux 機器,使用 22 端口部署了一個 SSH 服務,可以與云服務器建立連接。云服務器也部署一個服務,可以將機器上所有 8888 端口獲取的數據轉發到內網的 Linux 服務器上。這樣,云服務器的 8888 端口與內網服務器的 22 端口就建立了映射。那么其他內網的機器可以通過訪問云服務器的8888 端口直接訪問到內網的 Linux 機器。這叫做 內網穿透技術
!
我們可以在云服務器上使用 frp 軟件進行內網穿透服務:
- 服務器:擁有一臺具有公網IP地址的服務器,作為 FRP 的服務端。
- 客戶端:需要穿透的內網機器,作為 FRP 的客戶端。
為什么要進行內網穿透呢?內網穿透有以下優點:
- 成本效益:內網穿透可以避免購買服務器公網IP地址的高昂成本,同時也能實現公網服務的功能。
- 訪問限制:由于 NAT(網絡地址轉換)和防火墻的存在,內網中的設備通常無法直接從外網訪問。內網穿透技術可以幫助繞過這些限制,使得內網服務可以被外網訪問。
- 資源共享:內網穿透使得個人或企業可以將其內網中的資源(如文件服務器、Web服務、數據庫等)分享給外網的用戶,而無需復雜的網絡配置。
- 遠程管理:系統管理員可以通過內網穿透技術,從外部網絡遠程管理內網中的服務器或設備,方便進行維護和監控。可以實現遠程訪問公司服務器進行辦公。
- 開發與測試:開發者可以在內網環境中開發應用程序,并通過內網穿透技術讓外網的測試人員或合作伙伴訪問,以便進行測試和反饋。
- 安全性:內網穿透可以提供一種更安全的遠程訪問方式。通過配置,可以限制哪些外部地址可以訪問內網服務,從而保護內網資源不被未經授權的訪問。
🦋 內網打洞
在上述場景中,客戶端最終被云服務器獲取的源IP是出入口路由器的 WAN口IP 。服務端通過配置會有內網服務器的 IP地址 與 端口號。那么,可不可以將服務端的 IP+port 發給客戶端,客戶端的 IP+port 發給服務端呢?
答案是可以的。這樣客戶端就可以直接向內網服務器進行訪問,服務端也可以直接給客戶端發送數據。這種技術就叫做 內網打洞
!這種方式直接跨過了云服務器,在出入口路由器上打了一個洞,可以直接進行訪問。
內網打洞的工作原理
-
信息交換:
- 客戶端和服務端通過云服務器交換彼此的 WAN口IP 和 端口號。
- 云服務器作為中介,將客戶端的 IP+port 發送給服務端,同時將服務端的 IP+port 發送給客戶端。
-
建立直接連接:
- 客戶端和服務端分別使用對方的 IP+port 嘗試建立直接連接。
- 由于雙方的 WAN口IP 和 端口號 已經交換,路由器會允許這種直接通信。
-
繞過云服務器:
- 一旦直接連接建立成功,客戶端和服務端就可以繞過云服務器,直接進行數據傳輸。
- 這種方式不僅減少了云服務器的負載,還提高了數據傳輸的效率。
內網打洞的優缺點
優點:
- 高效性:直接通信減少了中間環節,提高了數據傳輸速度。
- 降低成本:減少了對云服務器的依賴,降低了帶寬和計算資源的消耗。
- 靈活性:適用于需要頻繁通信的場景,如實時音視頻傳輸、在線游戲等。
缺點:
- 路由器限制:部分路由器可能不支持 NAT 打洞,導致無法建立直接連接。
- 安全性問題:直接暴露 WAN口IP 和 端口號 可能增加被攻擊的風險。
- 復雜性:實現內網打洞需要對網絡協議有較深的理解,且調試和維護成本較高。
適用場景
- P2P 網絡:如文件共享、區塊鏈網絡等。
- 實時通信:如視頻會議、在線游戲等。
- 物聯網設備:設備之間需要直接通信的場景。
需要注意的是,一些出入口路由器可能不允許進行內網打洞。這里我們只需要了解其原理即可。
六:🔥 總結
🦋 數據鏈路層
- 數據鏈路層的作用:兩個設備(同一種數據鏈路節點)之間進行傳遞數據。
- 以太網:是一種技術標準;既包含了 數據鏈路層 的內容,也包含了一些 物理層 的內容。例如:規定了網絡拓撲結構、訪問控制方式、傳輸速率等。
- 以太網幀格式
- 理解 MAC 地址
- 理解 ARP 協議
- 理解 MTU
🦋 網絡層
- 網絡層的作用:在復雜的網絡環境中確定一個合適的路徑。
- 理解 IP 地址:理解 IP 地址和 MAC 地址的區別。
- 理解 IP 協議格式
- 了解網段劃分方法
- 理解如何解決 IP 數目不足的問題:掌握網段劃分的兩種方案。理解私有 IP 和公網 IP。
- 理解網絡層的 IP 地址路由過程:理解一個數據包如何跨越網段到達最終目的地。
- 了解 IP 數據包分包的原因
- 了解 ICMP 協議
- 了解 NAT 設備的工作原理
🦋 傳輸層
- 傳輸層的作用:負責數據能夠從發送端傳輸到接收端。
- 理解 端口號的概念
- 認識 UDP 協議:了解 UDP 協議的特點。
- 認識 TCP 協議:理解 TCP 協議的可靠性。理解 TCP 協議的狀態轉化。
- 掌握 TCP 的連接管理:確認應答、超時重傳、滑動窗口、流量控制、擁塞控制、延遲應答、捎帶應答特性。
- 理解 TCP 面向字節流:理解粘包問題和解決方案。
- 能夠基于 UDP 實現可靠傳輸
- 理解 MTU 對 UDP/TCP 的影響
🦋 應用層
- 應用層的作用:滿足我們日常需求的網絡程序,都在應用層。
- 能夠根據自己的需求:設計應用層協議。
- 了解 HTTP 協議
- 理解 DNS 的原理和工作流程
七:🔥 共勉
🎆 🧨 fq 草圖講解 彩蛋:
😋 以上就是我對 NAT & 代理服務 & 內網穿透
的理解, 覺得這篇博客對你有幫助的,可以點贊收藏關注支持一波~ 😉