0.0.0.0 是什麼小知識
我們在架設一些程式服務時,常常會設定 host 為 0.0.0.0。這通常意味著開放所有的 IP 地址和端口。我們也知道可以對 IP 進行設定,例如設定為 192.168.1.111。有時候,我們也會看到對 192.168.1.0 進行設定,這通常會根據網路卡的 IP 進行設定。我尚未深入探討這個議題,如果有任何錯誤,歡迎指正。請手下留情。
最近,我們公司有多個專案,每個專案都在獨立的機器上運行,並且每個機器都有自己的 IP 地址。有一次,我在使用 FTP 時不小心設定錯誤的 IP,但我仍然能夠上傳檔案,並且發現 http 伺服器(IP 是正確的)也更新了。這讓我感到非常奇怪,因為這兩台機器應該是獨立的。後來,我發現那台機器設定了很多虛擬 IP。
我計劃在未來寫一篇文章來詳細解釋如何實現這種設定。但是,我還有一個疑問:為什麼我可以在多台機器上開啟相同的 port 呢?
後來我發現,port 是綁定在網卡上的,所以一台機器可以有多個 IP,並且每個 IP 都可以綁定多個 http(例如 80 port)。
簡述 IP
IPv4 的基本知識這裡就不再詳述
- IP 預設常見 Class 分級
- Class A
- Class B
- Class C
這些分級的詳細說明,很多網頁都有提供,這裡就不再詳述。主要是這些預設的分級,提供了固定的網址範圍。
參考資料:IP位址分五種等級
- CIDR 網域切割
通常我一直搞不懂為什麼有分Class A,Class B, Class C ,這些設定都沒有很彈性。後來最近爬了一下,因為有了 CIDR,所以每一台電腦都可以設定網路遮罩,
可以分出多種網路 IP。
詳細資訊:CIDR 路徑協定
CIDR,全名為 Classless Inter-Domain Routing,是一種用於 IP 網路地址的分配方法。它允許更細緻的 IP 地址分配,以達到更有效的 IP 地址使用。
-
什麼是 CIDR?
CIDR 是一種將 IP 地址和其對應的網路遮罩組合在一起的方式,以指定一個網路的 IP 地址範圍。CIDR 通常以 “IP地址/前綴長度” 的形式表示,例如 “192.0.2.0/24”。
-
為什麼需要 CIDR?
在 CIDR 出現之前,IP 地址是按照 Class A、B、C 來分配的,這種分配方式在 IP 地址稀缺的今天顯得非常浪費。CIDR 通過變動網路遮罩的長度,允許 IP 地址以更細緻的方式分配,從而更有效地利用 IP 地址空間。
-
CIDR 如何工作?
CIDR 通過變動網路遮罩的長度來改變子網的大小。網路遮罩的長度越長,子網就越小,可分配的 IP 地址就越少;網路遮罩的長度越短,子網就越大,可分配的 IP 地址就越多。這種方式允許網路管理員根據需要來分配 IP 地址,達到 IP 地址使用的最大效率。
-
CIDR 的優點
CIDR 的最大優點是提高了 IP 地址的使用效率。此外,CIDR 也簡化了路由表的大小,因為它允許多個連續的 IP 地址範圍用一個單一的 CIDR 表示法來表示,這大大減少了路由器需要處理的路由條目數量。
以上就是 CIDR 網域切割的基本知識,希望對你有所幫助。
特殊 IP
127.0.0.1
這是我們常用的 localhost
127.0.0.1屬於{127,}集合中的一個,而所有網絡號為127的地址都被稱之為迴環地址,所以迴環地址!=127.0.0.1,它們是包含關係,即迴環地址包含127.0.0.1。
0.0.0.0
這邊127.0.0.1和0.0.0.0地址的区别 - 知乎有爬到一些相關知識
不過內容好像也不是很正確
擷取一些回覆
「0.0.0.0是本網絡中的本主機」這種老掉牙中文教科書說法就不要提了。實際上外文資料/軟件裡一般把0.0.0.0稱為「unspecified」,即未指定(即無效的,無意義的)地址。從功能上看,一般用於某些程序/網絡協議中不便使用具體ip的特殊情況(說白了就是一個用於某些比較坑的情況的「佔位符」),比如DHCP客戶端還未獲取到ip的時候規定使用0.0.0.0作「源地址」,或者服務器不指定在哪個網卡上監聽時,也使用0.0.0.0。
其他也有找到ip - What is the difference between 0.0.0.0, 127.0.0.1 and localhost? - Stack Overflow
IPV4中,0.0.0.0地址被用於表示一個無效的,未知的或者不可用的目標。
- 在服務器中,0.0.0.0指的是本機上的所有IPV4地址,如果一個主機有兩個IP地址,192.168.1.1 和 10.1.2.1,並且該主機上的一個服務監聽的地址是0.0.0.0,那麼通過兩個ip地址都能夠訪問該服務。
- 在路由中,0.0.0.0表示的是默認路由,即當路由表中沒有找到完全匹配的路由的時候所對應的路由。
————————————————
版权声明:本文为CSDN博主「ythunder」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ythunder/java/article/details/61931080
INADDR_ANY
NADDR_ANY介紹
INADDR_ANY 指定地址為0.0.0.0的地址,這個地址事實上表示不確定地址或“所有地址”、“任意地址”。一般來說,在各個系統中均定義成為0值。
INADDR_ANY 的具體含義是,綁定到0.0.0.0。此時,對所有的地址都將是有效的,如果系統考慮採用多個網卡的話,那麼使用此種bind,將在所有網卡上進行綁定。在這種情況下,你可以收到發送到所有有效地址上封包。
參考:【Socket】INADDR_ANY of SOCKET Programming «*~【BubUsHaRe】~* *~【BubUsHaRe】~*
其他特殊IP
2.3 特殊IP地址
特殊IP地址就是用來做一些特殊的事情。RFC1700中定義了以下特殊IP地址。
{0,0}:網絡號和主機號都全部為0,表示「本網絡上的本主機」,只能用作源地址。 {0,host-id}:本網絡上的某台主機。只能用作源地址。 {-1,-1}:表示網絡號和主機號的所有位上都是1(二進制),用於本網絡上的廣播,只能用作目的地址,發到該地址的數據包不能轉發到源地址所在網絡之外。
{net-id,-1}:直接廣播到指定的網絡上。只能用作目的地址。
{net-id,subnet-id,-1}:直接廣播到指定網絡的指定子網絡上。只用作目的地址。
{net-id,-1,-1}:直接廣播到指定網絡的所有子網絡上。只能用作目的地址。
{127,}:即網絡號為127的任意ip地址。都是內部主機迴環地址(loopback),永遠都不能出現在主機外部的網絡中。
這編原本我看不懂{}
裡面的意思
後來查了一下 IP 有分{Net_id,Host_id}
簡單來說這邊 Host_id 就把他想成能用的 IP
0是整個填 0,-1就是整個填1
10.x.x.x
172.16。x。x∼172.31。x。x
192.168。x。x
私有位址,這些位址被大量用於企業內部網路中。
224.0.0.1
其他參考:
【TCP/IP】IP地址分类和特殊IP地址_网络_Yngz_Miao的博客-CSDN博客
網路教學-IP 位址
觀察監聽 port
windows
netstat -ano
|
|
看邊主要看 LISTENING 可以看到有開那些 port
第一個 80 port 會對所有網路卡
Linux
|
|
更多可看:Linux 安裝及使用 netstat
設定 apache port 觀察
0.0.0.0
|
|
|
|
192.168.1.x
|
|
192.168.1.0
|
|
這個目前沒找到相關文獻
但是我發現 這個好像是廣播網路?
預設會跟所有 192.168 網路卡做 bind port(尚未測試兩個相同網段IP)
這邊也不是打 192.0.0.0 就可以設定
其他有趣東西
iperf
指令測試 IP 傳輸速度
通常我們在 Linux 下面可以透過 Iometer 去測試硬碟的效能速度,那網路呢!!要以免費最簡單使用的就算是 iperf 了.
Linux command – iperf – Benjr.tw
Linux – iperf (Bind to host) – Benjr.tw