引言
? ? ? ? 每文學習一句詩:行一棋不足以見智,彈一弦不足以見悲 ——《淮南子·說林訓》
????????譯文:走一個棋子,不足以現出智慧;彈一根琴弦,不能夠使人產生悲哀之情。
? ? ? ? 自述:互聯網現如今已經成為每個人都離不開的一個通信工具,他滲透到生活的方方面面,在享受它為人們帶來便利的同時,我們對他的工作原理也充滿了好奇。下面我將介紹了HTTP的GET/POST/響應、IP 地址、端口,公內網,DNS及NAT地址轉換的相關內容,讓你初步了解互聯網的通信過程。
? ? ? ? 如果本文對你有所幫助,那能否支持一下老弟呢,嘻嘻
??個人主頁?點擊??
目錄
?編輯
引言
IP地址(IPv4/Ipv6)
定義
分類
A類IP地址
B類IP地址
C類IP地址
特殊IP地址
?IPv6地址的基本概念
端口
定義
HTTP協議
定義
工作流程
瀏覽器開發者工具NetWork使用
GET請求報文
POST請求報文
響應報文
狀態碼
?編輯
公網/內網
?編輯
NAT網絡地址轉換
DNS/DDNS/域名
IP地址(IPv4/Ipv6)
定義
IP地址指的是互聯網中所有聯網設備的“身份證”,就好比每個人都有自己的身份證號一樣。
分類
分為IPv4地址和IPv6地址
IPv4:通常以點分十進制的格式來表示,即4個8位的二進制來表示。
例如:192.168.64.24(十進制)
11000000.10101000.01000000.00011000(二進制)
IP地址由網絡地址和主機地址組成
A類IP地址
網絡地址由第一個八位數組組成,且第一個字節以“0”開始,有效網絡地址:8-1=7位
?主機地址由后三個8位數組共24位(1.0.0.0-126.255.255.255)(0與127留作他用)
B類IP地址
網絡地址由前兩個八位數組組成,且第一個字節以“10”開始,有效網絡地址:16-2=14位
?主機地址由后兩個8位數組共16位(128.0.0.0-191.255.255.255)
C類IP地址
網絡地址由前三個八位數組組成,且第一個字節以“110”開始,有效網絡地址:24-3=21位
?主機地址由后一個8位數組共8位(192.0.0.0-223.255.255.255)
特殊IP地址
127.xxx.xxx.xxx :環回地址,用于本地測試
0.0.0.0:所有網絡,用于指定缺省路由
1.1.1.1:廣播地址,用于所有網絡節點
?IPv6地址的基本概念
IPv6(Internet Protocol Version 6)是下一代互聯網協議,旨在解決IPv4地址枯竭問題。其核心特點包括:
-
地址長度:128位(IPv4為32位),提供約?3.4×10383.4×1038?個地址。
-
簡化路由:層次化地址結構,優化網絡管理。
-
增強功能:原生支持安全性(IPsec)、自動配置、多播等。
端口
定義
端口(Port):是設備上的一個“邏輯通道”,用于區分同一設備上運行的不同應用程序或服務。例如,Web服務、郵件服務、游戲等可以通過不同端口同時運行。
如果說IP地址是用于找到一臺設備的,那么端口就是用于找到該設備中的一個運行的程序。
端口號是一個16位數字(0~65535)
端口號 | 通信協議 | 用途 |
80 | HTTP | 未加密網絡傳輸 |
443 | HTTPS | 加密網絡傳輸 |
21 | FTP | 文件傳輸 |
22 | SSH | 遠程管理服務器 |
25 | SMTP | 發送郵件 |
53 | DNS | 域名解析 |
3389 | RDP | 遠程桌面連接 |
-
客戶端:發起請求時,操作系統會隨機分配一個臨時端口(動態端口)。
-
服務端:長期監聽固定端口(如Web服務器監聽80端口),等待請求。
當你在瀏覽器訪問網站時:
你的電腦IP + 隨機端口 → 服務器的IP + 80端口
HTTP協議
定義
HTTP(HyperText Transfer Protocol):
是一種?應用層協議,用于在客戶端(如瀏覽器)和服務器之間傳輸超文本(如HTML頁面、圖片、視頻等)。它是萬維網(WWW)數據通信的基礎。
HTTP的底層是TCP/IP協議
工作流程
- 客戶端在瀏覽器中發起請求:用戶在瀏覽器中輸入URL(域名),例如www.baidu.com,此時瀏覽器會解析生成HTTP請求。
- DNS服務器解析域名:輸入的域名會被DNS服務器解析得到目標主機的IP地址
- 建立TCP連接:根據解析得到的IP地址來訪問目標主機的服務器的80端口,與其建立TCP連接。
- 發送GET/POST請求報文:?獲取目標服務器的數據(GET),向目標服務器提交數據(POST請求)。
- 服務器返回相應報文:服務器會根據請求的內容來返回給客戶端具體的響應。
- 關閉連接:但在HTTP1.1中保持連接復用(Keep-alive)。
瀏覽器開發者工具NetWork使用
以Eage瀏覽器為例,在瀏覽器頁面右擊選擇“檢查”,點擊后,選擇“網絡”
如圖片所示可以看到瀏覽器在網絡請求中的一些數據。
GET請求報文
對象:瀏覽器向web服務器的獲取數據的請求
以下時通過瀏覽器開發者工具得到的請求報文:
請求行
1.GET /serach.html HTTP/1.1 b表示請求方法,請求服務器中資源路徑,HTTP協議版本
請求頭
2.告訴服務器可以接受的數據類型
3.告訴服務端支持的壓縮算法
4.告訴服務端支持的語言
5.和服務器端保持長連接
6.服務器端的IP地址和端口號,沒有顯示端口號則為80
7.讓客戶端請求不安全請求,https則是加密的
8.用戶代理
空行\r\n
總結:http的get請求報文為
請求行\r\n
請求頭\r\n
空行\r\n
注意每條數據后都要有一個\r\n
POST請求報文
對象:瀏覽器向web服務器提交數據的請求
在“負載”中可以看到請求體的內容,這里是JSON數據
HTTP POST請求報文
請求行\r\n
請求頭\r\n
空行\r\n
請求體
響應報文
對象:服務器處理瀏覽器發送的請求而做出的響應。
這里面展示的是我自己寫的簡單服務器的響應頭
響應行
HTTP/1.1 200 OK 協議版本 狀態碼 狀態
響應頭
Server:Rqtzws/1.0 服務器名稱
空行\r\n
響應體
HTTP 響應報文
響應行\r\n
響應頭\r\n
空行\r\n
響應體\r\n
狀態碼
狀態碼 | 說明 |
200 | 請求成功 |
307 | 重定向 |
400 | 錯誤請求 |
404 | 請求資源不存在 |
500 | 服務器出現錯誤 |
公網/內網
公網
????????公網是全球范圍內的互聯網,由無數網絡設備(如路由器、服務器)通過TCP/IP協議互聯而成,允許任何接入網絡的設備進行公開通信。例如,訪問百度、使用微信或瀏覽國外網站都是通過公網實現的。
特點:
- 具有全球唯一的公網IP地址
- 所有用戶都可以訪問
內網
????????內網是私有網絡,僅在特定組織或家庭內部使用,設備通過路由器、交換機等連接。例如,家庭Wi-Fi、公司辦公網絡都是內網。
特點:
- 局域網IP地址(192.168.68.23),不同局域網中可重復使用。
- 內網設備不會直接暴露在公網內,外網用戶無法根據內網地址訪問該設備。
- 相比公網速度更快(如1Gbps)
那么內網中的設備是如何訪問到公網的資源的呢?如訪問百度,CSDN
這就是下面要提到的NAT網絡地址轉換技術
為什么會有公網和內網之分呢?
因為IPV4地址資源短缺,沒有辦法給每一臺聯網設備提供公網IP。
NAT網絡地址轉換
家庭網絡(路由器)通過光纖/DSL接入(單層NAT)
以下將詳細介紹內網設備是如何通過路由器來訪問外網的。
- 首先我們從運營商中購買寬帶,會得到一個公網IP。
- 再將路由器的網線連接到寬帶中,配置路由器管理頁面,使得內網設備連接。
- 此時連接的內網設備可以得到一個路由器分配的局域網IP地址
- 此時設備如果想要訪問百度
-
設備的默認網關指向路由器的內網IP(如?
192.168.1.1
),所有非本地的數據包都會發送給路由器處理。 -
設備通過路由器或運營商提供的DNS服務器(如?
8.8.8.8
)將域名(如?www.baidu.com
)解析為公網IP地址。 -
DNS解析后發現目標的IP地址不在本地局域網中,將數據包發送到默認網關(路由器),路由器啟用NAT網絡地址轉換
-
NAT網絡地址轉換:將設備的內網IP地址替換為路由器的公網IP,并分配給一個隨機的端口,并記錄NAT映射表(包含內網設備的IP和端口,路由器公網IP和端口,目標服務器(百度)IP和端口)
-
通過網絡訪問百度服務器
-
服務器數據傳回內網設備:百度服務器會根據NAT映射表來將相應的數據發送給表中的有公網ip的路由器。
-
路由器響應:路由器根據NAT映射表中的內網設備ip和端口,將數據傳回內網設備。
移動網絡(手機)依賴基站和蜂窩核心(多層NAT)
- 手機在開啟移動網絡后,會搜索附近基站信號(如5G頻段n78),建立無線連接(RRC連接)。
- 手機向核心網發起PDN連接請求
- 運營商網關會給手機分配一個內網ip地址,若支持IPv6,手機可呢會直接得到ipv6地址
- 手機在瀏覽器中訪問百度時,生成http數據包,他將通過附近的基站傳輸到核心網(5GC)
- 核心網再將數據發送至運營商的網關
- CGNAT(運營商NAT,多層)會將手機的內網IP轉換為公網ip(該公網IP屬于?移動網絡運營商(如中國移動、中國聯通、中國電信),是運營商從國際組織(如APNIC)申請獲得的IP地址資源池中的一部分,是有限的),并記錄內網IP,公網IP,目標IP組成的映射表
手機(內網IP:10.100.100.100) ↓ 運營商第一層NAT(映射到運營商內網IP:100.64.1.1) ↓ 運營商第二層NAT(映射到公網IP:120.230.45.67) ↓ 公網互聯網
- 最后再將數據包通過運營商網絡發送給百度服務器。
- 傳回手機同上。
DNS/DDNS/域名
DNS定義
DNS(Domain Name System)是將人類可讀的域名(如?www.example.com
)轉換為機器可識別的IP地址(如?93.184.216.34
)的分布式數據庫系統。
DNS核心功能:
????????域名解析:將域名轉換為IP地址(正向解析)。
????????反向解析:通過IP地址查詢域名(反向解析)。
DNS工作流程(以訪問?www.baidu.com
?為例):
????????瀏覽器緩存:檢查本地緩存是否有域名對應的IP。
????????系統緩存:查詢操作系統(如Windows的hosts文件)。
????????根域名服務器:返回頂級域(如?.com
)的服務器地址。
????????頂級域服務器:返回權威DNS服務器(如?baidu.com
的NS記錄)。
????????結果緩存:將IP地址緩存到本地供后續使用。
DDNS定義
????????DDNS(Dynamic DNS)是DNS的擴展,用于在設備IP地址頻繁變化時(如家庭寬帶動態IP),自動更新域名與IP的綁定關系.例如國內花生殼的DDNS服務。
域名定義
域名是用戶訪問網站或服務的易記名稱,由多級標簽組成(如?mail.google.com
),通過層級結構(根域→頂級域→二級域→子域)管理。
通俗的來講:就是將難記的IPv4地址轉換為容易記憶的字符,換句話說就是用你的名字來代替你的身份證號一樣。
域名的注冊:國內如阿里云、騰訊云
根域名:
.
(通常省略)一級域名(頂級域名):
.com(
?.com
(商業)、.org
(非營利組織)、.net
(網絡服務))
二級域名:
example.com
三級域名:
cn.example.com
四級域名:
blog.cn.example.com
上述如果有誤,請大佬指正批評!?如有幫助可以支持下老弟嗎