網絡通信IP細節

目錄

1.通信的NAT技術

2.代理服務器

3.內網穿透和內網打洞


1.通信的NAT技術

? ? ? ? NAT技術產生的背景是我們為了解決IPV4不夠用的問題,NAT在通信的時候可以對IP將私網IP轉化為公網IP,全局IP要求唯一,但是私人IP不是唯一的。

將報文發給路由器進行轉發的時候,,路由器有一張NATP表,記錄了IP的替換情況,比如在一個局域網內我的客戶端A要去訪問我們的服務器,它就會將報文交給路由器,路由器將SRC轉化為它的公網IP,再把這個報文交給我們的服務器,服務器往回發的時候DST就是運營商路由器的公網IP和端口,然后路由器收到我們的服務器的應答在路由器內取查它的NATP表,IP和端口全部對上,進行跳躍,接下來的就是局域網內進行轉發的工作了。

我們一個局域網內可能同時有多臺主機要去訪問同一個服務器和端口,服務器返回的時候SRC都是相同的,它怎么把報文精準送達的呢?答案就是NATP表,每個路由器在對該局域網內的報文進行轉發的時候都會構建一一對應的映射表,我們的運營商路由器的公網IP是全球唯一的,加上不同的端口,我們的這個IP+端口就是全球唯一的!

當我們把數據發送給運用商的路由器,它就會在它的內部構建一一對應的映射關系,為我們的私人IP分配一個端口,如果端口沖突,就會自動分配一個端口,拿著這個IP+端口去訪問服務器就可以了。

所以如果我們的私人IP不向公網發請求的話,公網是無法隨意訪問我們的私人IP的,它沒有NAPT映射表就找不到我們對應的主機,數據自然無法傳輸。

但是內網可以訪問公網,因為在發送的過程中在路由器會建立NAPT表!返回的時候查NAPT表查到是哪個主機發的請求,再把請求返回給這個主機,我們就完成了內網對公網的訪問。

所以當我們聊微信的時候,你必須先登錄微信,對方也登錄微信,才可以進行聊天,不就是因為我們的公網無法直接訪問私人IP嗎?需要內網IP先向公網發送數據,公網才知道你這個主機在哪里?才好給你進行消息的轉發。

2.代理服務器

? ? ? ? 我們校園網上網需要認證,認證是什么?不就是申請一個私人IP嗎?

? ? ? ? 這樣我們訪問數據客戶端要先把請求交給校園網的機房,然后校園網構建應答,去互聯網去發送請求,當請求返回來的時候再返回給對應的客戶端。

? ? ? ? 代理服務器有緩存查找和內容過濾的功能,我們可以把一些常用的資源緩存在本地,提高訪問的效率,內容過濾就是當一些請求含有惡意網站的時候,不讓它響應,直接丟掉。

也可以進行訪問控制,比如不讓你看騰訊視頻,直接把騰訊視頻的請求識別攔截,直接干掉,就無法訪問這個網站了。

具體的應用是:

? ? ? ? 上面的服務器是我們的正向代理,是客戶端把請求全部交給服務器,讓服務器統一去訪問互聯網。

? ? ? ? 反向代理呢?反向代理就是,我們公司有很多服務器,然后為了統一調配,我們有一個前置Web服務器,服務器的響應全部交給Web服務器,然后有Web服務器再把響應返回給客戶端。

?
反向代理服務器位于客戶端和 Web 服務器之間,當客戶端發起請求時,它首先
會到達反向代理服務器。反向代理服務器會根據配置的規則將請求轉發給后端的 Web
服務器,并將 Web 服務器的響應返回給客戶端。在這個過程中,客戶端并不知道實際
與哪個 Web 服務器進行了交互,它只知道與反向代理服務器進行了通信。
有了反向代理服務器,可以實現負載均衡,實現高并發,還可以隱藏服務器真正的IP地址,還可以把一些常常訪問的數據緩存在服務器里,加速訪問,還可以進行內容過濾和重寫。

總而言之,正向代理是代表客戶端去和服務器。反向代理是代表服務器去和客戶端。

我們的CDN就是利用了反向代理

由于我們的前端代碼是公開的,也有對應的庫和框架,但是如果每一份前端代碼都帶一個庫和框架會浪費資源,所以把框架和庫放在一個服務器上,如果需要就直接向服務器發起請求。

CDN背后是一個服務器集群,我只需要訪問CDN,它幫助我和它連接的服務器進行交互。

3.內網穿透和內網打洞

? ? ? ? 內網穿透就是把本地的某個端口給到云服務器,然后映射一個端口比如8080,然后我另一臺主機如果想要時刻訪問這個主機,我拿著映射的端口8080就可以訪問到我們的本地主機了。

? ? ? ? 它主要運用于讓我們的能直接從公網訪問到內網。

? ? ? ? 而內網打洞呢,是利用NAT的特性,當我們把自己的報文發到同一臺服務器,然后服務器把它們的報文互相交換,各自拿到對端的IP和端口,這樣我們下一次進行訪問的話就不用通過服務器了,直接進行通信了。

? ? ? ? 本質就是互相拿到對方的入口路由器的IP和端口。

? ? ? ? 我們數據返回的時候也因為拿到了我們數據來的時候入口路由器的公網IP和端口,根據NAT技術進行轉發才進行應答的。

? ? ? ? 我們之所以無法訪問谷歌的網站是因為我們將我們的報文給我們的運營商的路由器它會對我們的鏈接做域名解析,發現你訪問的是黑名單的連接會直接丟掉,我們為了學習了解一下原理,報文在第一步就被干掉了,連公網都沒進去就沒了,所以我們需要對我們的報文進行加密,把我們得分請求放在加密的數據里面,然后把它交給一個既可以訪問國內的服務器,也可以訪問國外的服務器的地區,比如香港,把報文發給香港,然后香港去訪問外網,然后再把應答加密,發回給我們的主機,主機再對報文進行解密。

????????

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

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

相關文章

國內真實的交換機、路由器和分組情況

一、未考慮擁擠情況理想狀態的網絡通信 前面我對骨干網: 宜春城區SDH網圖分析-CSDN博客 數據鏈路層MAC傳輸: 無線通信網卡底層原理(Inter Wi-Fi AX201)_ax201ngw是cnvio轉pci-e-CSDN博客 物理層、數據鏈路層、網絡層及傳輸層…

atomic常用類方法

Java中的java.util.concurrent.atomic包提供了多種原子操作工具類,以下是核心類及其方法:?1. AtomicBoolean??方法?:get():獲取當前值set(boolean newValue):強制設置值compareAndSet(boolean expect, boolean upd…

算法題打卡力扣第3題:無重復字符的最長子串(mid)

文章目錄題目描述解法一:暴力解解法二:滑動窗口題目描述 解法一:暴力解 遍歷每一個可能的子串,然后逐一判斷每個子串中是否有重復字符。 具體步驟: 使用兩層嵌套循環來生成所有子串的起止位置: 外層循環 i…

HTML5 簡介和基礎骨架

一、HTML5 簡介HTML5 是 HTML(超文本標記語言)的第五個主要版本,于 2014 年 10 月由 W3C(萬維網聯盟)正式發布。它不僅是對 HTML4.01 和 XHTML 的升級,更是一套完整的 Web 技術標準,包含了新的標…

.NET技術深度解析:現代企業級開發指南

每日激勵: “不要一直責怪過去的自己,他曾經站在霧里也很迷茫” 🌟 Hello,我是蔣星熠Jaxonic! 🌈 在浩瀚無垠的技術宇宙中,我是一名執著的星際旅人,用代碼繪制探索的軌跡。 &#x1…

蘋果手機文本轉音頻,自行制作背誦素材

當你在學習一段專業內容或者背誦重要知識點時,是不是有時會覺得眼睛看久了疲憊,而且記憶效果也不太理想呢?利用手頭的蘋果手機或iPad,你可以輕松將文本內容生成音頻文件,然后隨時隨地反復聽,這對于備考人士…

電子電子技術知識------MOSFET管

電子電子技術知識------MOSFET管前言一、結構與符號二、工作原理1.小功率MOSFET(橫向導電)2.電力MOS管三、基本特性總結前言 MOSFET是電力場效應晶體管的英文簡寫,又稱功率mos管,mos管 一、結構與符號 二、工作原理 1.小功率M…

仿真波導中超短脈沖傳輸中的各種非線性效應所產生的超連續譜

在波導中,超短脈沖傳輸時會受到各種非線性效應的影響,從而產生超連續譜。這些非線性效應包括自相位調制(SPM)、交叉相位調制(XPM)、四波混頻(FWM)等。基于MATLAB的仿真程序&#xff…

docker-compose的使用

目錄 1-查看容器 2-查看docker鏡像 3-運行兩個容器 4-進入idea 編寫docker-compose文件中的內容 5-編寫配置文件 6-運行 7-docker-compose中的一些命令 啟動服務 關閉服務 查看正在運行的容器 查看日志 重構新的服務 指令docker-compose 文件名 停止已運行的服務 啟動 重啟 1-查…

搭建分布式Hadoop集群[2025] 實戰筆記

文章目錄 一、實戰目標 二、集群規劃 1. 集群拓撲結構 2. 角色分配 說明: 三、環境準備 1. 修改 SSH 端口(安全加固) 操作步驟(所有節點執行): 2. FinalShell 連接配置 3. 防火墻配置 啟動并配置 firewalld: 關閉并禁用防火墻(生產環境建議精細配置,測試環境可關閉):…

【自記錄】Ubuntu20.04下Python自編譯

因為需要新的Python版本,但是我們不希望修改系統原生的Python版本避免某些系統應用無法啟動,因此自建一個干凈的路徑引入Python。 1.編譯 以下在aarch64下測試,x64下可能有差異 必須把相關的devel包安裝完畢,否則python可能缺功能…

Linux - 進程切換

🎁個人主頁:工藤新一 🔍系列專欄:C面向對象(類和對象篇) 🌟心中的天空之城,終會照亮我前方的路 🎉歡迎大家點贊👍評論📝收藏?文章 文章目錄進…

機器算法(五)模型選擇與調優

一 交叉驗證1 保留交叉驗證HoldOutholdOut Cross-validation(Train-Test Split)在這種交叉驗證技術中,整個技術集被隨機劃分為訓練集和驗證集。根據經驗法則,整個數據集的近70%被用作訓練集,其余30%被用作驗證集,也就是最常使用的…

Ubuntu 服務器實戰:Docker 部署 Nextcloud+ZeroTier,打造可遠程訪問的個人云

本次部署基于 Ubuntu 系統(桌面版 / Server 版通用,核心操作一致),硬件配置參考如下,低配置主機可順暢運行: ubuntu服務器配置如下 硬件類型具體型號/參數CPUIntel Core i3-6100T內存條8GB(DD…

移動硬盤刪除東西后,沒有釋放空間

請按照以下步驟,從最簡單、最常見的原因開始排查和解決:主要原因和解決方案1. 檢查操作系統回收站 (最常見原因!)這是最容易被忽略的一點。當您直接在外接移動硬盤上刪除文件時,文件并不會直接消失,而是被移到了該移動…

spring boot驢友結伴游網站的設計與實現(代碼+數據庫+LW)

摘要 本文介紹了基于Spring Boot框架開發的驢友結伴游網站的設計與實現。該網站旨在為旅行愛好者提供一個便捷的平臺,使他們能夠輕松地尋找伙伴、預定酒店、參與活動以及分享旅行經歷。系統主要分為兩大模塊:用戶模塊和管理員模塊。用戶可以通過注冊賬號…

人機之間的強交互與弱交互

人機交互不是簡單的人機,其本質是人機環境系統的交互。在這個系統中,人和機器不是孤立的存在,而是在特定環境下相互影響、相互作用的一部分。人機之間的強交互與弱交互可以從以下幾個方面來理解:1、人機強交互通常是指人與機器之間…

OpenCV 基礎知識總結

學習網站 https://zhuanlan.zhihu.com/p/483604320 命名空間 using namespace cv; Mat 作用 創建圖像(矩陣) 格式 Mat image; //創建一個空圖像image,大小為0 Mat image(100,100,CV_8U); //指定矩陣大小(矩陣行數/列數&#xff09…

C#基礎(⑦user32.dll)

我們來詳細學習如何使用 user32.dll,它是 Windows 系統中負責用戶界面交互的核心 DLL,包含窗口管理、消息處理、鍵盤鼠標輸入等功能。下面從基礎到進階,一步一步教你調用其中的常用函數。在 C# 中調用 user32.dll 需要使用 DllImport 特性&am…

Markdown格式.md文件的編輯預覽使用

推薦工具Visual Studio Code (VS Code) - 強烈推薦特點:微軟出品,免費、開源、跨平臺(Windows, macOS, Linux)。擁有海量插件市場。編輯體驗:安裝 Markdown All in One 等插件后,可以獲得語法高亮、實時預覽…