網絡協議學習(2)---IP地址

1、IPv4地址數組

    IPv4地址爲32bit地址,分爲5類(ABCDE,這裏不討論特殊用途的D和E類)。網絡

    一般咱們八位一看,寫成4個部分,例如:00000000 00000000 00000000 00000000,用點分十進制法就寫成0.0.0.0;less

11111111 11111111 11111111 11111111,可寫成255.255.255.255。dom

    下面統一用紫色標註IP地址中的網絡部分,藍色表示主機部分。下面的說法中基本上「網絡段=網絡號=IP地址的網絡部分」,就不一個個修改了:)性能

 A類地址學習

        A類地址必須以一個‘0’開頭,緊接着的7位表明網絡段,剩餘24位表示主機段。測試

        先不看主機段,網絡段的7位全爲0或全爲1分別表示最小或最大的網絡段,即:spa

        0 0000000  00000000 00000000 00000000設計

        它表明的地址是0.0.0.0;ssl

        0 1111111 00000000 00000000 00000000

        也即127.0.0.0。但實際上網絡位不能全爲0或者全爲1,全爲0表示全部網絡,全位1用做網絡迴路測試。

        剩下24位是主機位,那麼一共能夠有2^24-2個主機,它也要減2是由於主機位一樣不能全爲0或1,全爲0表示網絡地址,全爲1表示本地廣播,在子網掩碼部分還會講到。

        所以A類地址的範圍是0.0.0.0-127.255.255.255。可用網絡段1.X.X.X - 126.X.X.X共126(2^7-2)個,可用主機段X.0.0.1 - X.255.255.254共2^24 - 2個。

 

B類地址    

        B類地址必須以一個‘10’開頭,後面的14位表示網絡段,剩餘16位表示主機段。

        一樣的,先不看主機段:

        10 000000  00000000 00000000 00000000

        即128.0.0.0;128.0爲最小網絡段

        10 111111  11111111 00000000 00000000

        即191.255.0.0;191.255爲最大網絡段。所以一共是2^14個網絡段。

        最大地址是191.255.255.255,固然主機號仍是不能全爲0或1,有2^16-2個主機段。

C類地址

        C類地址必須以一個‘110’開頭,後面的21位表示網絡段,剩餘8位表示主機段。

        110 00000  00000000 00000000 00000000

        即192.0.0.0;

        110 11111  11111111 11111111 00000000

        即223.255.255.0;共有2^21個網絡段;

        最大地址是223.255.255.255,有2^8-2個主機段。

 

2、子網掩碼

利用IP地址的網絡段,咱們能夠惟一的標識一個物理網絡。如今考慮咱們要將一些網絡(Network)鏈接到Internet上來,對於一個Network,不管它擁有的主機數多小,它至少都須要一個C類網絡地址,若是它擁有超過255個的主機(或者有拓展到超過255個主機數的可能),那就須要一個B類網絡,但對於咱們的IPv4地址,它的地址數是有限的(大約40多億個),若是是有300個主機的小網絡,卻不得不使用B類網絡(一個B類網絡有65534個主機段),那就浪費了6萬多個地址,這使得地址的消耗變得很是快(事實上,早在2011年IPv4地址就分配完了……)

    而網絡段一樣也是IPv4地址的一個掣肘,學習路由的相關概念咱們知道,路由器一般要創建一個轉發表(Forwarding table)來告知本身怎樣到達不一樣的主機,所以主機數越多,轉發表也越龐大,大的轉發表給路由器又帶來了性能負擔……

    爲了給IPv4地址「續命」,或者說爲了更高效地使用IP地址,人們想出了一種叫作子網(Subnet)的辦法。

    子網的想法是將一個IP地址分配給一系列的物理網絡。固然,這些物理網絡是有要求的,它們在距離上應該比較接近,對於一個遠程端點來講,它每每會被視做一個獨立的網絡(有獨立的網絡號)。比較理想的子網情景是有某個大公司或者學校內部,它們有不少個物理網絡,而且最終做爲某個網絡(主網絡)的子網,外界與它們內部的網絡打交道時只要知道主網絡與Internet的鏈接點就好了。

    實現子網的方式是使用子網掩碼。子網掩碼與IP地址相同,也是32位,也分爲網絡段和主機段,並且它的網絡段都是1,主機段都是0(爲何是1和0下面解釋)。對於簡單的IP地址來講,全部同一個網絡下的主機IP都有相同的網絡段,而子網掩碼則說:全部同一物理網絡下的主機都屬於相同的子網,這些子網又可能屬於同一個主網絡,這就使得不一樣物理網絡下的主機可能擁有相同的網絡號。

    以一個B類地址128.96.34.15爲例,咱們使用按位與運算,將子網掩碼的前幾位都設置爲1,X & 1 = X,而X & 0 = 0,這樣咱們將IP地址與子網掩碼按位與時,主機部分的信息都被「遮蔽」了。如今假設它的子網掩碼是11111111 11111111 11111111 100000000,即255.255.255.128,將它與128.96.34.15按位與,獲得128.96.34.0,這就能夠獲知本身所在的子網號。

    考慮以下兩個主機:;    

    H1:所在子網128.96.34.0,子網掩碼255.255.255.128,IP是128.96.34.15

    H2:所在子網128.96.34.128,子網掩碼255.255.255.128,IP是128.96.34.139

    若是H1要發東西給H2,那麼H1要將H2的地址與本身的子網掩碼按位與,發現結果是128.96.32.128,而本身所在子網是129.96.32.0,這說明H1與H2不在同一子網中,所以H1將數據包發送給路由器,由路由器轉發給H2.

    子網掩碼使得咱們將一個IP地址「升格」了,例如128.96.34.0,使用子網掩碼255.255.255.128它能夠表示從128.96.34.0-128.96.34.127的128個地址(0到127與128按位與都得0),而在外界的目光看來,這些網絡其實都是一個網絡,是128.96.34.0(主網號),這就大大減小了路由器的負擔。

    子網掩碼的設計:

    上面已經討論過使用按位與運算來保留網絡部分的信息而過濾掉主機部分的信息,對於A類網絡,它的網絡部分(這裏也算上開頭的‘0’)是前8位,所以A類網絡的子網掩碼必定是255.X.X.X,相似的B類是255.255.X.X,C類網絡是255.255.255.X。

    假設咱們申請到一個B類網絡段168.195,須要27個子網,要怎麼設計子網掩碼呢?

   27 < 32 = 2^5,意味着咱們至少須要5個二進制位來區分這些子網,即對於「原裝的」B類子網掩碼255.255.0.0,咱們須要額外的5個二進制位來保存子網網絡號信息,而網絡段排在主機段前面,所以將255.255.0.0的主機段前5位置1就好了,獲得255.255.248.0,11111111 11111111 11111 000 00000000。這樣咱們能夠保證一個主網IP旗下的IP與子網掩碼按位與以後可以獲得它。

    相似的給定網絡段,要求依據每一個子網內的主機數來設計子網掩碼,先將原裝的子網掩碼所有置1,而後從右往左置須要過濾的主機位數個0就好了。每一個子網700個主機就置10個0(512 < 700 < 1024)。

    使用子網掩碼,咱們必定程度上解決了路由器轉發表的問題,但尚未解決上述的IP浪費問題。此外,子網掩碼也帶來了新的問題,以某B類主網號128.96.0.0爲例,若是使用子網掩碼255.255.0.0,那麼它所指代的網絡IP就是從128.96.0.0到128.96.255.255的全部IP,咱們能夠發現主網號與旗下的一個網絡地址128.96.0.0重疊。這時若是外界說要發送給129.96.0.0,主網就會感到疑惑,它不知道這是要發給本身的仍是要發給旗下的128.96.0.0。


3、CIDR

 CIDR的全稱是Classless Interdomain Routing,即無類別域間路由。

CIDR表示方法:IP地址/網絡ID的位數(網段的劃分更加靈活)

咱們知道肯定一個子網須要知道主機地址和子網掩碼,但用CIDR的形式,能夠簡單獲得兩個數值。舉例說吧,192.168.0.0/24」就表示,這個網段的IP地址從192.168.0.1開始,到192.168.0.254結束(192.168.0.0和192.168.0.255有特殊含義,不能用做IP地址);子網掩碼是255.255.255.0。        上面的子網掩碼怎麼來的呢?其實關鍵就在「24」上。咱們知道IP地址是四個十進制數組成的,至關於32位二進制。用CIDR表示形式,後一個數字將這32位進行了間隔(以24爲例):前24位用"1"表示,後面8位用0表示,獲得一個二進制數: 11111111 11111111 11111111 00000000。將其轉化爲十進制,就是:255.255.255.0了。         例如:192.168.1.0/24表示網段是192.168.1.0,子網掩碼是24位,子網掩碼爲:255.255.255.0,用二進制表示爲:11111111 11111111 11111111 00000000 ,這裏爲何是24呢,就是由於子網掩碼裏面的前面連續的「1」的個數爲24個,必定要連續的才行。        再給你舉個例子,192.168.1.0/28表示的意思是網段是192.168.1.0,子網掩碼爲:255.255.255.240,用二進制表示爲:11111111 11111111 11111111 11110000。        這時候你也許就疑惑了,就是24和28兩個字不同,爲何網段是同樣的呢?        24位說明網絡位是24位,那麼主機位就是32-24=8位了,則子網的IP個數是254個,便是從00000001到11111110.         28位說明網絡位是28位,那麼主機位4位,則子網的IP個數是14個,便是從00000001到00001110.

相關文章
相關標籤/搜索