今天我們聊聊什麼是ip地址,什麼又是公網和私網

老李講安全 發佈 2024-05-09T03:41:23.625478+00:00

一、IP 地址ip 地址相當於收發快遞時的收貨地址和發貨地址IPV4 的地址:192.168.0.111000000.10101000.00000000.

一、IP 地址

ip 地址相當於收發快遞時的收貨地址和發貨地址

IPV4 的地址:192.168.0.1

11000000.10101000.00000000.00000001

windows 使用 >ipconfig;linux 使用 ifconfig

可以看到 IPV4 地址 / inet 旁邊的就是 IP 地址

  1. IP 地址的分類

IP 地址有 32 位,分為 A B D E 四類

  • A 類:0 + 7 位網絡號 + 24 位主機號
  • B 類:10 + 14 位網絡號 +16 位主機號
  • C 類:110 +21 位網絡號 +8 位主機號
  • D 類:1110 +28 位組播地址
  • E 類:1111 +28 位以後用

網絡號:相當於停車場主機號:相當於停車位

1 個停車場可以有多個停車位;A 類相當於大型停車場少,但是大型停車場內停車位多;C 類相當於小型停車場多,但是小型停車場內停車位少

以上的分類機制已經被取代,因為不同類別的網絡號和主機號數量懸殊取而代之,不再使用分類 ABCD 法,使用以下分類機制:CIDR 無類別域間路由

只保留網絡號和主機號,用 「/」 告訴用戶多少位是網絡號,其餘是主機號172.20.61.69/20 網絡號:20 位;主機號:12 位能夠放 2*12 次方 = 4096 台機子

二、讓 IP 夠用

就算把所有 IP 分出去:2*32 次方 = 4294967296 42 億也不夠用,這是基於每人都處在一層的情況下

【取而代之,將網絡分為兩層,如下圖】

2 個人組成小網絡(5 6)公用一個 IP,但是 5 6 內部的 IP 不一樣 ,5 6 構成的網絡叫做:區域網(內網)5 6 的 IP 叫做:私有 IP(內網 IP)

1 2 構成的網絡叫做:廣域網,1 2 的 IP 叫做:公有 IP(公網 IP)

在 ABC 類 IP 中,也有私有和公有兩部分

  • A 類區域網部分 IP:10.0.0.0~10.255.255.255
  • B 類區域網地址 IP:172.16.0.0~172.31.255.255
  • C 類區域網地址 IP:192.168.0.0~192.168.255.255

上面只考慮了一層區域網,其實區域網內還能再分成多層,區域網內再嵌套區域網。就像下面這樣,這樣能用的 IP 數量就更多了。

三、我自己的 IP 地址怎麼看

ipconfig 裡面的 IPV4 地址 == 內網 IP百度搜索:我的 IP 地址 == 公網 IP

四、區域網內的私有 IP 如何訪問區域網外的公有 IP?

需要進行 IP 轉換:NAT:全稱NetworkAddressTranslation,網絡地址轉換。基本上家用路由器都支持這功能。

發送 / 接收的數據包相當於 收發快遞的快遞包

數據包的內容:

發送數據包的過程:

IP 轉換過程:

  • 1、A 發送 C:在 a 準備發送數據包時:我的電腦會構造 IP 數據包,發送端 IP 地址是 192.168.30.5, 接收端 IP 地址是 192.168.30.5;電腦把數據包發到 NAT 路由器,路由器把源 IP 地址 192.168.30.5 改成:20.20.20.20,這個過程叫做 SNAT(Source Network Address Translation,源地址轉換)

並且會在 NAT 路由器里,留下192.168.30.5-》20.20.20.20 的映射記錄,下次就會直接在記錄里讀取了。最後就去找接收端 IP 了

  • 2、C 響應 A:接收端填:20.20.20.20,發送端填:30.30.30.30,在經過 NAT 時,會找到之前192.168.30.5-》20.20.20.20 的映射記錄,然後把目的 IP 地址修改為內網 IP192.168.30.5,,這個過程叫做DNAT(Destination Network Address Translation,目的地址轉換)。

但是一個公網 IP 下,有多個私網 IP,響應時怎麼找映射哪個?

這個時候用到的是 NAPTNAPT(Network Address Port Transfer , 網絡地址埠轉換 )。

加入其他信息區分內網裡的各個網絡連接,就是埠

IP 數據包屬於【網絡層】,埠存在於【傳輸層】的 TCP 和 UDP 數據報文里

那麼最後數據包的組成是:IP header + TCP header / UDP header + 數據

為什麼 PING 沒有帶埠信息,也能夠接收響應?

ICMP 協議,NAT 路由器做了特殊處理。ping 報文頭裡有個Identifier的信息,它其實指的是放出 ping 命令的進程 id。對 NAT 路由器來說,這個Identifier的作用就跟埠一樣。

當我們去抓包的時候,就會發現有兩個Identifier,一個後面帶個BE(Big Endian),另一個帶個LE(Little Endian)。

其實他們都是同一個數值,只不過大小端不同,讀出來的值不一樣。就好像同樣的數字 345,反著讀就成了 543。這是為了兼容不同作業系統(比如 linux 和 Windows)下大小端不同的情況。

五、內網穿透

家裡啟動了一個 http 服務,地址是 192.168.30.5:5000,公司里的手機想訪問,卻訪問不了

外網機器如何訪問內網服務?

因為 NAT 的存在,我們只能從內網主動發出連接,NAT 沒有記錄映射關係的話,也轉發不了數據。

為了解決這個問題,可以在公網加一台伺服器 X,暴露一個訪問域名,讓內網服務主動連接伺服器 X,NAT 也會有一個內網到伺服器 X 的映射關係,然後所有人去訪問伺服器 X,就可以了。

六、兩個區域網設備如何建立連接?

  • 1.小明的 QQ 和小紅的 QQ 客戶端如何建立連接?

兩個 QQ 客戶端之間隔了一個聊天伺服器,QQ 登錄時,主動向公網的聊天伺服器建立連接,兩邊的 NAT 都有公網聊天伺服器和私網的映射關係,

  • 2.P2P 下載,沒有第三方伺服器,怎麼進行通訊

P2P 下載 = 種子迅雷下載

下圖為NAT 打洞,我們現在常見的都是錐形 NAT

來源:入門小站

關鍵字: