NAT技術、代理服務器

NAT/NAPT技術

NAT的全稱是network address translation,網絡地址轉換。NAT 能在對外通信時夠將源?IP 轉為新源?IP,對內通信時將目的ip轉換成新目的ip,實現這個操作,靠的是地址轉換表

但NAT的說法其實是不準確的,因為多個內網主機和同一個服務器通信,這時路由器的地址轉換表中的多個條目,其源ip地址被轉換成的的新源ip是相同的,那接收響應時目的ip就不知道轉換成哪一個新目的ip,因為有多個條目,所以得引入端口,這就是NAPT,全名網絡地址端口轉換,相當于是NAT的完善版,加上端口后,就可以區分內網中的多個主機了

NAPT過程詳解

拿客戶端A作為例子,客戶端B同理,客戶端B主要用來體現NAPT的轉換方式下可以解決內網中多個主機訪問同一服務器的問題。

客戶端A在網絡層組裝好了一個ip報文,其源ip地址10.0.0.10,端口1025,目的ip 163.221.120.9,目的端口80,然后根據目的ip查路由表,命中網關條目,下一跳ip就是10.0.0.1,還有對應發送接口,一起交給數據鏈路層,網卡驅動查arp緩存,得到網關的mac地址,然后封裝mac頭和尾,從發送接口發出,單播,其他主機網卡接收一看mac頭里的目的mac地址,就丟包,然后網關收到后觸發硬件中斷,網卡驅動從網卡接收緩沖區中根據ip報頭中的ip報文總長度將mac幀讀出,然后去掉mac頭和尾,IP報文交給ip層,IP層根據目的ip查路由表,這一次命中的也是默認網關,當網關查路由表命中網關條目時,就需要進行地址轉換,下一跳ip我比如說是 202.244.174.1,還有對應發送接口,發送接口網卡的ip是202.244.174.37,然后IP層會將ip報文的源ip 10.0.0.10轉換成202.244.174.37,源端口變成動態分配的端口,并在地址轉換表中添加該次的轉換,四元組{源IP 10.0.0.10 ,源端口 1025,目的ip 163.221.120.9,目的端口 80}和 {源ip 202.244.174.37,源端口 1025?,目的ip 163.221.120.9?,目的端口 80} 的映射關系條目,然后將轉換后的IP報文、下一跳ip、發送接口都交給數據鏈路層,查arp緩存得到下一跳ip 202.244.174.1對應mac地址,然后封裝mac頭和尾,寫進對應發送接口的網卡發送緩沖區中,最后發送到以太網中,這個網關的一個IP地址是202.244.174.1,我假如說的另一個網卡的ip 是163.221.120.88,那該網關接收到mac幀后,觸發硬件中斷,解包到ip層,然后查路由表,這次目的ip就在直連網絡中,所以命中直連網絡條目,網關命中直連網絡條目就不用進行地址轉換了,下一跳ip就是目的ip 163.221.120.9,還得到對應發送接口 ,然后將ip報文和下一跳ip和發送接口都交給數據鏈路層,數據鏈路層查arp緩存得到下一跳ip的mac地址,封裝mac頭和尾,將mac幀寫進發送網卡的發送緩沖區,然后寫TDT寄存器通知網卡,網卡發送到以太網中,163.221.120.9服務器收到了之后走協議棧,然后構建響應ip報文,其{源ip 163.221.120.9,源port 80,目的ip 202.244.174.37,目的端口 1025},然后查路由表,命中網關條目,得到下一跳ip 163.221.120.88,發送接口,交給數據鏈路層添加mac頭,從發送接口發出,網關收到后,觸發硬件中斷解包到ip層,目的ip查路由表命中直連網絡,下一跳IP是目的ip202.244.174.37,發送接口對應ip 202.244.174.1,然后封裝mac頭,發到以太網,網關接收到后,觸發硬件中斷,解包到IP層,因為網關本身是路由器,實際的目的ip肯定不是網關,所以查地址轉換表,然后修改IP報文中的目的ip和目的端口,修改完之后根據目的ip查路由表,命中直連網絡,于是下一跳ip是目的ip10.0.0.10,發送接口對應ip 10.0.0.1,一并交給數據鏈路層,最后主機A收到響應


總結:

1、地址轉換發生在網關查路由表命中網關條目時

2、地址轉換就是將源ip換成發送接口ip,源port換成動態分配的port,然后將四元組映射加進地址轉換表中

NAPT對套接字的影響

tcp套接字

服務器監聽套接字是三元組,這就不說了,客戶端通信套接字標識的五元組是(客戶端—服務器),也就是{tcp,本地IP 10.0.0.10 ,本地端口 1025,對方ip 163.221.120.9,對方端口 80},看服務器端,標識通信套接字的五元組是(某網關發送接口--服務器),也就是{tcp,對方ip 202.244.174.37,對方1025?,本地ip 163.221.120.9?,本地端口 80}

udp套接字

假如是udp套接字,那沒什么影響,因為udp套接字是無連接的,用三元組標識,沒有對方的ip和port

代理服務器

正向代理

正向代理服務器代表客戶端向目標服務器發送請求和接收服務器響應。

反向代理

反向代理服務器代表服務器接收客戶端請求和發送服務器響應

NAPT和代理服務器的區別

1、從應用上講, NAPT 技術解決的是 IP 不足的問題. 代理服務器則是具體應用, 比如通過代理服務器進行翻墻
2、從底層實現上講, NAPT 是工作在網絡層, 直接對 IP 地址和端口進行替換. 代理服務器往往工作在應用層
3、從使用范圍上講, NAT 一般在網關部署, 代理服務器可以在局域網做,也可以在廣域網做, 也可以跨網

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93378.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-45,(知識點:負反饋的作用,基礎理解,干擾和噪聲的抑制)

目錄 1、題目 2、解答 步驟一:明確負反饋的作用原理 步驟二:逐一分析選項 3、相關知識點 一、負反饋的基本原理 二、負反饋對干擾和噪聲的抑制機制 三、選項分析與答案 四、擴展思考:如何抑制不同位置的干擾? 總結 題目…

Flutter藍牙BLE開發完全指南(內含高級功能擴展)

Flutter藍牙BLE開發完全指南 我將為您提供一個完整的Flutter藍牙BLE實現方案,包含UI設計、權限處理、設備掃描、連接通信等完整功能。 完整實現方案 1. 添加依賴與權限配置 pubspec.yaml dependencies:flutter:sdk: flutterflutter_blue_plus: ^1.10.0permission_handler…

使用 Canvas 替代 <video> 標簽加載并渲染視頻

在部分瀏覽器環境或業務場景下&#xff0c;直接使用 <video> 標簽加載視頻會出現首幀延遲的情況。以下方法通過 WebGPU Canvas 2D 將視頻幀繪制到自定義 Canvas 上&#xff0c;讓 <video> 只做解碼&#xff0c;WebGPU 接管渲染&#xff0c;通過最小化對象創建 精…

基于Flask的智能停車場管理系統開發實踐

在現代城市中&#xff0c;停車難已成為一個普遍問題。為了解決這一問題&#xff0c;我開發了一個基于Python Flask框架的智能停車場管理系統。該系統集成了車牌識別、車位狀態監控、收費管理等多項功能&#xff0c;為停車場的智能化管理提供了完整的解決方案。系統功能概述該停…

【C#獲取高精度時間】

在C#中&#xff0c;有幾種方法可以獲取高精度時間&#xff08;高分辨率時間戳&#xff09;&#xff0c;適用于性能測量、計時等需要高精度的場景。以下是幾種常用方法&#xff1a; 1. 使用 Stopwatch 類&#xff08;推薦&#xff09; Stopwatch 類提供了最高精度的時間測量&…

Spring Boot + React 打造現代化高校成績管理系統實戰記錄

作者: 笙囧同學 發布時間: 2025年7月 技術棧: Spring Boot 3.2.3 React 18 TypeScript 華為云GaussDB 項目類型: 全棧Web應用 開發周期: 30天 代碼量: 15000 行 &#x1f4d6; 前言 大家好&#xff0c;我是笙囧同學&#xff01;&#x1f64b;?♂? 作為一名計算機科學與技…

形參表不匹配(BUG)

在您的代碼中&#xff0c;存在兩個主要問題導致"形參表中不匹配"的錯誤&#xff1a;erase() 函數中的成員變量名錯誤iterator erase(iterator pos) {// ...size--; // ? 錯誤&#xff1a;成員變量名為 _size 而非 sizereturn iterator(next); }修正&#xff1a;ite…

Spring循環依賴以及三個級別緩存

Spring循環依賴以及三個級別緩存 什么是循環依賴&#xff1f; 循環依賴&#xff0c;顧名思義&#xff0c;就是指兩個或多個 Spring Bean 之間相互依賴&#xff0c;形成一個閉環。 最常見也是 Spring 能夠“解決”的循環依賴是構造器注入 和 setter 注入 混合或單獨使用時&…

《零基礎入門AI:OpenCV圖像預處理進一步學習》

本文全面講解OpenCV圖像預處理的七大核心技術&#xff08;插值方法、邊緣填充、圖像矯正&#xff08;透視變換&#xff09;、圖像掩膜、ROI切割、圖像添加水印、圖像噪點消除&#xff09;&#xff0c;每個知識點都配有詳細解釋和實用代碼示例&#xff0c;幫助初學者建立系統的圖…

MongoDB的內存和核心數對于運行效率的影響

在 MongoDB 線上生產環境中&#xff0c;CPU&#xff08;核心&#xff09; 和 內存 是兩大關鍵硬件資源&#xff0c;它們在不同的操作場景下發揮著核心作用&#xff0c;共同影響著數據庫的性能、穩定性和擴展性。理解它們的作用場景至關重要&#xff0c;是容量規劃、性能優化和故…

自己的SAPGUI嘗試

為滿足用戶需求&#xff0c;博主做了一個臺賬管理程序&#xff0c;嘗試用自己的程序做GUI&#xff0c;用SAP 系統做數據庫。 運行了半年&#xff0c;程序很nice,用戶每天都在高效的使用&#xff0c;已經有十幾萬的數據。 總結一下這次自己的GUI嘗試&#xff0c;好處是C# WINFOR…

高效處理 JSON 數據:JsonUtil 工具類全方位解析與實戰

在現代軟件開發中,JSON(JavaScript Object Notation)已成為數據交換的“通用語言”——從前后端接口通信到微服務數據交互,從配置文件解析到日志格式化,幾乎所有場景都離不開JSON的處理。然而,原生JSON框架(如FastJSON、Jackson)的API往往需要大量重復代碼,且空指針、…

Python 庫手冊:xmlrpc.client 與 xmlrpc.server 模塊

xmlrpc.client 和 xmlrpc.server 是 Python 標準庫中用于構建基于 XML-RPC 協議的遠程過程調用&#xff08;RPC&#xff09;通信模塊。xmlrpc.client 用于編寫客戶端程序&#xff0c;向遠程服務器發起方法調用。xmlrpc.server 用于編寫服務器端&#xff0c;暴露本地方法供遠程客…

渲染篇(一):從零實現一個“微型React”:Virtual DOM的真面目

渲染篇(一)&#xff1a;從零實現一個“微型React”&#xff1a;Virtual DOM的真面目 引子&#xff1a;前端性能的“永恒之問” 在前面兩章中&#xff0c;我們已經奠定了堅實的架構基礎。我們用“任務調度器”建立了聲明式和模塊化的編程范式&#xff0c;并通過對比MVC等模式論…

SWC 深入全面講解

一、核心功能與原理 1. 高性能編譯 Rust 架構優勢&#xff1a;SWC 基于 Rust 編寫&#xff0c;利用 Rust 的性能和并發性優勢&#xff0c;編譯速度比 Babel 快約 20 倍&#xff0c;比 TypeScript 編譯器更快。并行編譯&#xff1a;支持多線程并行處理&#xff0c;在四核基準測試…

XML Expat Parser:深入解析與高效應用

XML Expat Parser:深入解析與高效應用 引言 XML(可擴展標記語言)作為一種廣泛使用的標記語言,在數據交換、存儲和表示中扮演著重要角色。XML Expat Parser 是一個高性能、可擴展的XML解析庫,廣泛應用于各種編程語言中。本文將深入探討XML Expat Parser 的原理、特性以及…

【Python】自動化GIT提交

在日常開發中&#xff0c;我們經常需要頻繁地向 Git 倉庫提交代碼。雖然 git add、git commit、git push 這幾個命令并不復雜&#xff0c;但重復操作容易出錯&#xff0c;也浪費時間。本文將介紹如何使用 Python 腳本自動化完成 Git 提交流程&#xff0c;讓開發更高效&#xff…

基于Qlearning強化學習的水下無人航行器路徑規劃與避障系統matlab性能仿真

目錄 1.引言 2.算法仿真效果演示 3.數據集格式或算法參數簡介 4.算法涉及理論知識概要 5.參考文獻 6.完整算法代碼文件獲得 1.引言 水下無人航行器 (Autonomous Underwater Vehicle, AUV) 的路徑規劃與避障是海洋探索、資源開發和軍事應用中的關鍵技術。傳統的路徑規劃方…

模塊自由拼裝!Python重構DSSAT作物模塊教程(以雜交水稻為例)

基于過程的作物生長模型&#xff08;Process-based Crop Growth Simulation Model&#xff09;在模擬作物對氣候變化的響應與適應、農田管理優化、作物品種和株型篩選、農業碳中和、農田固碳減排等領域扮演著越來越重要的作用。Decision Support Systems for Agrotechnology Tr…

Java項目接口權限校驗的靈活實現

引言 在Java Web開發中&#xff0c;接口權限校驗是保護系統資源安全的關鍵機制。本文將介紹一種靈活、可配置的接口權限校驗方案&#xff0c;通過注解驅動和攔截器實現&#xff0c;既能保證安全性&#xff0c;又能靈活控制哪些接口需要校驗。 設計思路 實現方案的核心設計要點&…