前言:在使用mongodb時涉及到遠程通信問題時,百度搜索本機ip得到218.6.xx.26,發現並根本連接不上。后來發現這個ip應該屬於電信等運營商給我們這個網絡分配的外網ip,一般情況下當然是連接不上的.....,而作為一個項目組進行開發,一般使用的是本地的局域網ip進行通信。由於之前並沒有仔細了解ip相關信息,為了方便可能后續會使用到tcp/ip通信,因此對ip進行了詳細的認識。
一、 IP地址
Internet依靠TCP/IP協議,在全球范圍內實現不同硬件結構、不同操作系統、不同網絡系統的互聯。在Internet上,每一個節點都依靠唯一的IP地址互相區分和相互聯系。傳統的IP地址是一個32位二進制數的地址,也叫IPV4, 由4個8位字段組成。IPv6采用128位地址長度,8個十六進制。每個IP地址都包含兩部分:網絡ID和主機ID。網絡ID標識在同一個物理網絡上的所有主機,同時位數決定了可以分配的網絡數目(2^網絡號位數-2),主機ID 標識該物理網絡上的每一個主機,同時決定了網絡中最大的主機數(2^主機號位數-2)。
然而,由於整個互聯網所包含的網絡規模可能比較大,也可能比較小,設計者選擇了一種靈活的方案:將IP地址空間划分成5種不同的類別,每一類具有不同的網絡號位數和主機號位數,分別表示不同的網絡數和該網絡下能容納的主機位數。
A類地址【大規模網絡】:一個A類IP地址由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”, 0是保留的並且表示所有IP地址,而127也是保留的地址,並且是用於測試環回用的,范圍是從0.0.0.1 到126.0.0.0。可用的A類網絡有126個,每個網絡能容納1億多個主機(2的24次方的主機數目),以子網掩碼來進行區別:255.0.0.0;
B類地址【中等規模網絡】:一個B類IP地址由2個字節的網絡地址和2個字節的主機地址組成,網絡地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255。可用的B類網絡有16382個,每個網絡能容納65534個主機 ,以子網掩碼來進行區別:255.255.0.0;
C類地址【小規模局域網】:一個C類IP地址由3字節的網絡地址和1字節的主機地址組成,網絡地址的最高位必須是“110”,范圍從192.0.0.0到223.255.255.255。C類網絡可達209萬余個,每個網絡能容納254個主機。以子網掩碼來進行區別: 255.255.255.0;
D類地址【多播】:范圍從224-239,D類IP地址第一個字節以“1110”開始,它是一個專門保留的地址。它並不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機;
E類地址【保留】:范圍從240-254,以“11110”開始,為將來使用保留。 全零(“0.0.0.0”)地址對應於當前主機。全“1”的IP地址(“255.255.255.255”)是當前子網的廣播地址。
除去特殊作用的D、E兩類,剩下的A、B、C三類地址是我們常見的IP地址段,在這三類地址中,絕大多數的IP地址都是公有地址,需要向國際互聯網信息中心申請注冊。但是在IPv4地址協議中預留了3個IP地址段,作為私有地址,供組織機構內部使用。這三個地址段分別位於A、B、C三類地址內:
A類地址:10.0.0.0--10.255.255.255
B類地址:172.16.0.0--172.31.255.255
C類地址:192.168.0.0--192.168.255.255
常見的局域網由於容量小,一般選擇C類的192.168.0.0作為地址段使用。需要補充說明的是,由於NAT和子網掩碼的存在,實際在使用中,一個C類大小的局域網也可以選擇A類的10.0.0.0網段作為自己的IP地址段。大多數局域網之所以仍然選擇192.168.0.0/24或者192.168.1.0/24作為自己的IP地址段,更多的是因為約定成俗或者說網管個人習慣的關系。
二、局域網和廣義網
局域網:也就是指內網、私網,英文叫LAN,是在一個局部的地理范圍內,將各種計算機設備、外部設備、數據庫互相關聯起來組成的計算機通信網。比如校園網,也比如公司中的內部網,甚至通過一個路由器連接形成的網絡也叫局域網。
廣域網:也叫外網、公網,簡稱WAN,是一種跨越大的、地域性的計算機網絡集合、通常跨越省、市、國家。需要說明的是,局域網,廣域網,城域網其實都是范圍上的概念。而Internet就是特指那個將全球聯系在一起提供公共服務的超大廣域網。
其區別在於廣域網IP地址一般要到ISP處注冊、交費之后才能申請到,廣域網IP地址不能重復;局域網上的每一台電腦(或其他網絡設備)都有一個或多個局域網IP地址,局域網IP地址是局域網內部分配的,不同局域網的IP地址可以重復,不會相互影響。因此,使用同一台路由器的不同電腦,具有不同路由內的私域地址,一般都是以192.168開頭,類似於192.168.0.100,這是局域網段,但卻都具有相同的公網ip地址(在百度搜索ip地址時可以發現都一樣) ,這個地址由運營商提供。那么如何通過私有ip去訪問百度、淘寶等外部公網呢,這里就涉及到了地址轉換技術NAT(Network Address Translation,網絡地址轉換)它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標准,允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網絡地址(IP地址)翻譯成合法網絡IP地址的技術。
三、子網掩碼
子網掩碼是一個32位的二進制數。也是一種有效的分割網絡的方法,根據子網掩碼可以知道網絡又多少位,主機有多少位。使用自定義子網掩碼之后,就不存在ABC網絡的概念了,這類網絡叫無線網絡,需要靠IP地址的第一個字節數據范圍來區分網絡號的叫有類網絡。比如一個A類地址能容納的主機數有2^24-2個主機,一般一個組織是不可能用到這么多地址的,勢必會造成浪費。但是我們可以通過子網掩碼來將一個A類地址划分成多個子網,根據IP和子網掩碼可以判斷同一個網絡地址下的主機是否在同一個網段。將十進制的IP地址和子網掩碼轉換為二進制形式,進行與計算,如果得到結果相同,則在同一個網段。當A機發送數據給B機時,會先將B機的IP與子網掩碼進行&運算查看是否在同一個網段,如果不在同一網段內則會把數據發送給網關,在同一個網段的可以直接在數據鏈路層通信。
知道子網數和ip地址可以計算其子網掩碼,知道每個子網下的主機數目和ip地址也可以計算器子網掩碼。詳細計算方法可以參考該文檔:https://zhidao.baidu.com/question/1292917.html
正常情況下,網絡ip地址(也適用於位數)=網絡地址+主機地址,同時一旦將網絡划分為子網,那么ip地址(也適用於位數)=網絡地址+子網地址+主機地址。