目錄
一. 以太網
?以太網幀格式
?二. MAC地址
?三. MTU
?四. ARP協議
五. NAT
NAPT
六. 代理服務器
正向代理
反向代理
?七. 內網穿透
八. 內網打洞
一. 以太網
? "以太網" 不是一種具體的網絡, 而是一種技術標準; 既包含了數據鏈路層的內 容, 也包含了一些物理層的內容. 例如: 規定了網絡拓撲結構, 訪問控制方式, 傳輸速 率等;
? 例如以太網中的網線必須使用雙絞線; 傳輸速率有 10M, 100M, 1000M 等;
? 以太網是當前應用最廣泛的局域網技術; 和以太網并列的還有令牌環網, 無線 LAN 等;
?以太網幀格式
?? 源地址和目的地址是指網卡的硬件地址(也叫 MAC 地址), 長度是 48 位,是在網 卡出廠時固化的;
? 幀協議類型字段有三種值,分別對應 IP、ARP、RARP;
? 幀末尾是 CRC 校驗碼。
?二. MAC地址
? MAC 地址用來識別數據鏈路層中相連的節點;
? 長度為 48 位, 及 6 個字節. 一般用 16 進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)
? 在網卡出廠時就確定了, 不能修改. mac 地址通常是唯一的(虛擬機中的 mac 地 址不是真實的 mac 地址, 可能會沖突; 也有些網卡支持用戶配置 mac 地址).
對比IP地址和MAC地址:?
? IP 地址描述的是路途總體的 起點 和 終點;
? MAC 地址描述的是路途上的每一個區間的起點和終點;?
?三. MTU
MTU 相當于發快遞時對包裹尺寸的限制. 這個限制是不同的數據鏈路對應的物理層, 產 生的限制.
? 以太網幀中的數據長度規定最小 46 字節,最大 1500 字節,ARP 數據包的長度不 夠 46 字節,要在后面補填充位;
? 最大值 1500 稱為以太網的最大傳輸單元(MTU),不同的網絡類型有不同的 MTU;
? 如果一個數據包從以太網路由到撥號鏈路上,數據包長度大于撥號鏈路的 MTU 了,則需要對數據包進行分片(fragmentation);
? 不同的數據鏈路層標準的 MTU 是不同的;
MTU 對 IP 協議的影響?
? 將較大的 IP 包分成多個小包, 并給每個小包打上標簽;
? 每個小包 IP 協議頭的 16 位標識(id) 都是相同的;
? 每個小包的 IP 協議頭的 3 位標志字段中, 第 2 位置為 0, 表示允許分片, 第 3 位 來表示結束標記(當前是否是最后一個小包, 是的話置為 1, 否則置為 0);
? 到達對端時再將這些小包, 會按順序重組, 拼裝到一起返回給傳輸層;
? 一旦這些小包中任意一個小包丟失, 接收端的重組就會失敗. 但是 IP 層不會負 責重新傳輸數據;?
?
?MTU 對 UDP 協議的影響
? 一旦 UDP 攜帶的數據超過 1472(1500 - 20(IP 首部) - 8(UDP 首部)), 那么就會 在網絡層分成多個 IP 數據報.
? 這多個 IP 數據報有任意一個丟失, 都會引起接收端網絡層重組失敗. 那么這就 意味著, 如果 UDP 數據報在網絡層被分片, 整個數據被丟失的概率就大大增加了.?
??MTU 對 TCP 協議的影響
? TCP 的一個數據報也不能無限大, 還是受制于 MTU. TCP 的單個數據報的最大 消息長度, 稱為 MSS(Max Segment Size);
? TCP 在建立連接的過程中, 通信雙方會進行 MSS 協商.
? 最理想的情況下, MSS 的值正好是在 IP 不會被分片處理的最大長度(這個長度 仍然是受制于數據鏈路層的 MTU).
? 雙方在發送 SYN 的時候會在 TCP 頭部寫入自己能支持的 MSS 值.
? 然后雙方得知對方的 MSS 值之后, 選擇較小的作為最終 MSS.
? MSS 的值就是在 TCP 首部的 40 字節變長選項中(kind=2);?
?四. ARP協議
? 在網絡通訊時,源主機的應用程序知道目的主機的 IP 地址和端口號,卻不知道目 的主機的硬件地址;
? 數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件 地址與本機不符,則直接丟棄;
? 因此在通訊前必須獲得目的主機的硬件地址;
?? 源主機發出 ARP 請求,詢問“IP 地址是 192.168.0.1 的主機的硬件地址是多少”, 并將這個請求廣播到本地網段(以太網幀首部的硬件地址填 FF:FF:FF:FF:FF:FF 表示 廣播);
? 目的主機接收到廣播的 ARP 請求,發現其中的 IP 地址與本機相符,則發送一個 ARP 應答數據包給源主機,將自己的硬件地址填寫在應答包中;
? 每臺主機都維護一個 ARP 緩存表,可以用 arp -a 命令查看。緩存表中的表項有過期時間(一般為 20 分鐘),如果 20 分鐘內沒有再次使用某個表項,則該表項失效,下 次還要發 ARP 請求來獲得目的主機的硬件地址
?數據報的格式
? 注意到源 MAC 地址、目的 MAC 地址在以太網首部和 ARP 請求中各出現一次, 對于鏈路層為以太網的情況是多余的,但如果鏈路層是其它類型的網絡則有可能是必 要的。
? 硬件類型指鏈路層網絡類型,1 為以太網;
? 協議類型指要轉換的地址類型,0x0800 為 IP 地址;
? 硬件地址長度對于以太網地址為 6 字節;
? 協議地址長度對于和 IP 地址為 4 字節;
? op 字段為 1 表示 ARP 請求,op 字段為 2 表示 ARP 應答。?
?注意全F是廣播的意思。
處理任何的arp都必須先看op字段(是請求還是應答)。在一段時間內會記錄下來局域網中的ip地址與mac地址的映射關系。?
五. NAT
? NAT 能夠將私有 IP 對外通信時轉為全局 IP. 也就是就是一種將私有 IP 和全局 IP 相互轉化的技術方法:
? 很多學校, 家庭, 公司內部采用每個終端設置私有 IP, 而在路由器或必要的服務 器上設置全局 IP;
? 全局 IP 要求唯一, 但是私有 IP 不需要; 在不同的局域網中出現相同的私有 IP 是完全不影響的;
?? NAT 路由器將源地址從 10.0.0.10 替換成全局的 IP 202.244.174.37;
? NAT 路由器收到外部的數據時, 又會把目標 IP 從 202.244.174.37 替換回 10.0.0.10;
? 在 NAT 路由器內部, 有一張自動生成的, 用于地址轉換的表;
? 當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系;
NAPT
那么問題來了, 如果局域網內, 有多個主機都訪問同一個外網服務器, 那么對于服務器返 回的數據中, 目的 IP 都是相同的. 那么 NAT 路由器如何判定將這個數據包轉發給哪個 局域網的主機?
引入端口號:?
?
六. 代理服務器
正向代理
? 正向代理(Forward Proxy)是一種常見的網絡代理方式,它位于客戶端和目標 服務器之間,代表客戶端向目標服務器發送請求。正向代理服務器接收客戶端的請 求,然后將請求轉發給目標服務器,最后將目標服務器的響應返回給客戶端。通過這 種方式,正向代理可以實現多種功能,如提高訪問速度、隱藏客戶端身份、實施訪問 控制等。
?
工作原理:?
? 客戶端將請求發送給正向代理服務器。
? 正向代理服務器接收請求,并根據配置進行處理,如緩存查找、內容過濾等。
? 正向代理服務器將處理后的請求轉發給目標服務器。
? 目標服務器處理請求,并將響應返回給正向代理服務器。
? 正向代理服務器將響應返回給客戶端。?
功能:?
?? 緩存功能:正向代理服務器可以緩存經常訪問的資源,當客戶端再次請求這些資 源時,可以直接從緩存中獲取,提高訪問速度。
? 內容過濾:正向代理可以根據預設的規則對請求或響應進行過濾,如屏蔽廣告、 阻止惡意網站等。
? 訪問控制:通過正向代理,可以實現對特定網站的訪問控制,如限制員工在工作 時間訪問娛樂網站。
? 隱藏客戶端身份:正向代理可以隱藏客戶端的真實 IP 地址,保護客戶端的隱私。
? 負載均衡:在多個目標服務器之間分配客戶端請求,提高系統的可擴展性和可靠 性。
反向代理
?? 反向代理服務器是一種網絡架構模式,其作為 Web 服務器的前置服務器,接收來自客戶端的請求,并將這些請求轉發給后端服務器,然后將后端服務器的響應返回 給客戶端。這種架構模式可以提升網站性能、安全性和可維護性等
基本原理 :
?? 反向代理服務器位于客戶端和 Web 服務器之間,當客戶端發起請求時,它首先會到達反向代理服務器。反向代理服務器會根據配置的規則將請求轉發給后端的 Web 服務器,并將 Web 服務器的響應返回給客戶端。在這個過程中,客戶端并不知道實際 與哪個 Web 服務器進行了交互,它只知道與反向代理服務器進行了通信。
動靜分離:在大型網站中,通常需要將靜態資源和動態資源分開處理。通過將靜 態資源部署在反向代理服務器上,可以直接從反向代理服務器返回靜態資源的響應, 而無需再次向后端服務器發起請求。這可以大大提升靜態資源的訪問速度。
?七. 內網穿透
內網穿透是一種技術,允許外部網絡直接訪問內網中的設備或服務,繞過NAPT或防火墻的限制。通常用于遠程控制、文件共享或搭建服務器等場景。
- 工作原理:通過第三方服務器(中繼)或工具(如frp、Ngrok)建立隧道,將外網請求轉發到內網設備。內網設備主動與中繼服務器保持連接,外部流量通過中繼服務器到達內網。
- 應用場景:適用于需要從外網訪問內網服務的場景,如遠程辦公、智能家居控制。
- 優勢:無需配置路由器端口映射,適合動態IP或受限NAT環境。
八. 內網打洞
內網打洞(NAT Traversal)是一種通過技術手段繞過網絡地址轉換(NAT)限制,實現不同內網設備直接通信的方法。由于IPv4地址短缺,多數設備通過NAT共享公網IP,導致內網設備無法被外部直接訪問。內網打洞通過中間服務器輔助或協議協商,建立點對點(P2P)連接。
一個主播主機ip是1.2.3.4,一個用戶是4.3.2.1。現在它們都要訪問一個直播平臺,這個直播平臺直接把它們的IP地址給交換了,使主播的直播畫面,信息等不經過平臺的服務器,直接把畫面推送給用戶。
?