IP地址
IP地址是什么?
? ? ? ?IP是英文Internet Protocol的縮寫,意思是“網絡之間互連的協議”,工作在TCP/IP體系結構的網絡層。IP協議是將整個因特網互聯在一起的黏合劑,任何廠家生產的計算機,只要遵守IP協議就可以與因特網互連互通。
? ? ? ?IP 地址則是按照IP 協議規定的格式,為每一個正式接入到Internet 的主機所分配的、在全世界范圍內是唯一的通信地址,它是網絡層及以上各層所使用的地址,是一種邏輯地址。
IP地址現有兩個版本:
——IPv4版本,主宰著今天的因特網
——IPv6版本,剛剛部署到部分網絡中,是未來的因特網。
我們通常所講的IP地址是指IPv4版本中的IP地址。
IP地址表示方式——點分十進制法
? ? ? ?IPv4地址是一個32位的二進制編址,在機器中存放的IP地址是連續的二進制代碼。為提高可讀性,每8位一組,用十進制表示,并利用點號分割各部分,這種方法稱為點分十進制法,其全部IP地址范圍可表示為0.0.0.0到255.255.255.255。
IP地址結構
? ? ? ?IPv4地址是一個32位的二進制編址,都由網絡號net-id和主機號host-id兩部分構成:
IPv4地址::={<網絡號>,<主機號>}
? ? ? ?一個網絡號在整個因特網范圍內必須是惟一的,而一個主機號則是在它前面的網絡號所指明的網絡范圍內必須是唯一的,由此一個IP地址在整個因特網范圍內是唯一的。
? ? ? ?從IP地址的結構上來看,IP地址并不僅僅指明一個主機,還指明了主機所連接的網絡。如果一個主機的地理位置不變,但將其連接到另外一個網絡上,那么這個主機的IP地址必須改變。
IP地址編址方案
? ? ? ?IPv4根據網絡規模,采用分類編址方法,將IP地址分為A到E五類,A、B、C類稱為基本類,用于主機地址,而D類用于組播,E類則為保留不用。
從這張圖中可以看出
- A類、B類、C類IP地址的網絡號字段分別為1個,2個,3個字節長,同時在網絡號字段的最前面有1-3位的類別位(二進制),分別為0,10,110.
- A類、B類、C類IP地址的主機號字段分別為3個,2個,1個字節長。
- D類地址的前4位為1110,用于一對多的廣播通信。
- E類地址的前4位為1111,保留為以后使用。
為什么將IP地址分為A類、B類、C類呢?
? ? ? ?因為各種網絡的規模差異很大,有的網絡擁有很多主機,如IBM公司覆蓋全世界的網絡,有的網絡上的主機則很少,如一個小學學校的網絡。
這張表格清楚地展示了A、B、C三類地址可連接的最大網絡數和主機數以及他們的適用網絡規模。
? ? ? ?A類地址的網絡號字段占一個字節,只有七位可供使用,因為字段的第一位已固定為0。可指派的網絡號是126個,即27-2。
? ? ? ?為什么減二,一是,IP地址中的全0表示this,即全為0的IP地址是保留地址,意思是“本網絡”;二是,網絡號為127,即后7位全為1,這樣的網絡號是用來為本地軟件環回測試本主機進程之間的通信的。
? ? ? ?而A類地址的主機號,占3個字節,因此每個A類網絡中的最大主機數是224-2。這里減2的原因:全0的主機號字段表示該IP地址是“本主機”所連接到的單個網絡地址,例如一個主機的IP地址為5.6.7.8,那么該主機所在的網絡地址就是5.0.0.0。而全是1則表示該網絡上的所有主機。
? ? ? ?當某個單位申請到一個IP地址時,實際上是獲得了具有同樣網絡號的一段地址,具體的主機號則是由該單位自行分配,只要做到在單位管轄內的范圍里無重復的主機號即可。
- ? ? ? ?138.69.35.38這個IP地址的第一個字節138,介于128--191之間,顯然它屬于B類地址,那么它的網絡號就是IP地址的前兩個字節138.69.0.0,主機號就是剩下的兩個十進制數35.38。
- ? ? ? ?210.32.128.6這個IP地址的第一個字節210介于192--223之間,因此它屬于C類地址,那么它的網絡號就是IP地址的前三個字節210.32.128.0,主機號則是最后一個十進制數6。
子網掩碼
- ? ? ? ?我們學校的計算機科學系為其局域網申請了一個IP地址(123.203.0.0.)供其138臺主機連入因特網,一年后,電子工程系的146臺網絡和藝術系的156臺的局域網也想連入因特網,另外再申請2個IP地址塊顯然很浪費,而先期計算機科學系申請的IP地址還有很多空余的地址沒有用,如何將這些空余的地址使用起來呢?我們需要一種不同的地址組織方式來解決這個問題,這就是我們這節課要講的子網劃分。
子網劃分的概念
- ? ? ? ?在一個擁有多個物理網絡的單位,將一個網絡塊分成幾個部分供多個物理網絡使用,但這個單位對外仍然表現為一個網絡,這就是子網劃分,分割一個大型網絡得到的一系列小網絡就稱為子網。
- ? ? ? ?子網劃分技術是一種IP地址復用方式,它是將IP地址中原來的主機部分,我們也稱之為本地部分,進一步劃分為“物理網絡”部分和“主機”部分,其中“物理網絡”用于標識同一IP網絡地址下的不同物理網絡,即我們所說的“子網”。也就是說,網絡號加上子網號后才能全局唯一地標識一個網絡。
子網和主機
B類地址的子網劃分,B類地址的主機號共16位。
? ? ? ?如果將主機地址的高7位作為子網地址,主機地址的低9位作為每個子網的主機號,這樣就形成了該B類地址的子網地址表示形式:
假定原來的B類網絡地址為128.208.0.0,那么劃分子網后,
10000000 11010000 0000001 0 00000000 128.208.2.0表示第1個子網;
10000000 11010000 0000010 0 00000000 128.208.4.0表示第2個子網;
10000000 11010000 0000011 0 00000000 128.208.6.0表示第2個子網;
……
? ? ? ?以此類推,在這個方案中,最多就可以有27-2=126個子網,減2的原因同我們上節課講的類似,路由協議不支持全0或全1的子網地址,因此全0和全1的網段都不能使用。每個子網最多可以有29-2=510臺主機。
子網掩碼
? ? ? ?在這個實際場景中,假定一個Ip數據包已到達主路由器,那么這個路由器是如何將它轉發給相應的子網的呢?
? ? ? ?我們知道一個32位的Ip地址(10000001 11010000 00000100 00111000)是無法看出來是否包含了有關子網的信息的,需要另外想辦法,這就要使用“子網掩碼”。
? ? ? ?子網掩碼一個ip地址,由2部分組成,前半部分由連續的1構成,后半部分由連續的0構成,1的數量是網絡號和子網號的個數,0的數量是主機號的個數。
- A中是ip地址為128.208.6.10的主機本來的兩級Ip地址結構
- B中的ip地址是這個兩級Ip地址的子網掩碼,255.255.0.0
- C中是ip地址為128.208.6.10的主機的三級Ip地址結構,也就是說從原來16位-主機中拿出7位作為子網號,主機號由16位減為9位;
- D中是ip地址這個三級Ip地址的子網掩碼255.255.254.0,由23位的一連串的1和9位的一連串0構成;
- E圖則是路由器把這個三級Ip地址的子網掩碼255.255.254.0和收到的目的地址128.208.6.10逐位進行“與”And運算后得出的要找的子網網絡地址128.208.6.0
與運算
? ? ? ?為了便于計算機運算,規定如果一個網絡不劃分子網,那么該網絡的子網掩碼就用默認子網掩碼來表示,默認子網掩碼中1的位置和Ip地址中的網絡字段對應。
A類地址的默認子網掩碼是255.0.0.0,
B類地址的默認子網掩碼是255.255.0.0,
C類地址的默認子網掩碼為255.255.255.0。
[例]已知Ip地址是141.14.72.24,子網掩碼是255.255.192.0,試求該Ip地址所在的網絡地址。
? ? ? ?子網掩碼是11111111 11111111 11000000 00000000,將這兩個ip地址作與運算,因為子網掩碼的前兩個字節全為1,所以與運算后得前兩個字節為141.14,只要對后2個字節進行與運算就可以了,得到網絡地址141.14. 01000000 00000000,十進制為141.14.64.0
進制轉換
? ? ? ?如果將上例中的子網掩碼是255.255.224.0,試求該Ip地址所在的網絡地址。通過同樣的方法,可以得出網絡地址為141.14.64.0
這個例子說明同樣的Ip地址和不同的子網掩碼可以得出相同的網絡地址,但是不同的子網掩碼的效果是不同的。在例1中子網號是2位,主機號是14位;在例2種子網號是3位,主機號是13位,他們所劃分的子網數和每一個子網中的主機數是不一樣的。那么我們又是如何通過子網掩碼來判斷兩個主機是否屬于同一子網呢?
? ? ? ?[例] 202.114.80.1主機號為00000001,202.114.80.16主機號為00010000,子網掩碼為255.255.255.224,那么這兩個主機是否屬于同一個網段呢?
? ? ? ?通過子網掩碼我們知道,這是一個C類網絡,所以同上面所講,解決這個問題的關鍵也是看子網掩碼的最后一個字節224。224的二進制形式為11100000,這說明前三位為子網號,后五位為主機號。而該題中的兩個主機的最后一個字節的前三位均是000,由此可以說明它們屬于同一子網,即他們之間的信息交換可不通過路由器。
假如我們把第二個主機的IP地址換為202.114.80.130,也就是它的主機號為? ? ? ?10000010,前三位100與000不同,說明兩者屬于不同的子網,要交換的信息需要通過主路由器,在他們各自的子網上的主機號各為1和2。
? ? ? ?子網掩碼決定了一個網絡的子網數目和每個子網的主機數,還以B類地址為例,這個表說明了采用固定長度子網號位數后的子網數和主機數,子網數是根據子網號N計算得到的,為2N-2個,表中子網號位數中沒有0,1,15,16這四種情況,因為這沒有意義。可以看出如果使用較少位數的子網號,則每一個子網上可連接的主機數就較多;反之,如果使用較多位數的子網號,則子網數較多,但是每個子網上可連接的主機數就較少。因此我們可以根據網絡的具體情況(一共需要劃分多少個子網,每個子網中最多有多少主機)來選擇合適的子網掩碼。
子網劃分
子網掩碼作用
- ? ? ? ? 充分利用IP地址,減少地址空間浪費。它可將一個網絡劃分為多個子網,增加了靈活性,便于網絡管理。
- ? ? ? ?便于網絡設備盡快地區分本子網地址和非本子網的地址。用來判斷任意兩個IP地址是否屬于同一子網,這時只有在同一子網的計算機才能"直接"互通。
劃分子網問題
? ? ? ?解決該類問題的核心在于:劃分子網時,子網位數不同,可劃分的子網數就不同,每個子網可用子網主機數也不同。
表中列舉出來了使用固定長度子網的B類地址的子網劃分選擇,這是使用固定長度子網的C類地址的子網劃分選擇。
從C類地址子網劃分表中可以看出,假設需要將一個網絡劃分為12個子網,這時子網號位數就應該為4位,子網掩碼為255.255.255.240,可以將整個網絡劃分為14可用的子網。
例:有3個局域網,主機數量分別是38、46、56,均少于C類地址允許的最大主機數256。那么為這3個局域網申請3個C類IP地址顯然有些浪費。假設我們只申請了一個C類地址202.207.175.0,請問如何劃分子網能夠滿足需求。
? ? ? ?1.從問題中知道,需要將整個網絡劃分成至少3個子網,這樣只有將子網位數設為2時,才能夠滿足需求,也就是說可以有4個子網,子網掩碼為255.255.255.192;
? ? ? ?2.劃分為4個子網后,因為子網號占2位,所以主機號占6位,每個子網中的可用主機數為62臺,滿足題目中3個子網中的主機數要求;
? ? ? ?3.為每個子網規劃網絡地址。
? ? ? ?第一個局域網的IP地址范圍為202.207.175.0-202.207.175.63,子網掩碼為255.255.255.192;
? ? ? ?第二個局域網的IP地址范圍為202.207.175.64-202.207.175.127,子網掩碼為255.255.255.192;
? ? ? ?第三個局域網的IP地址范圍為202.207.175.128-202.207.175.191,子網掩碼為255.255.255.192。例:南京理工大學經管院被分配了一個C類網絡地址,網絡號為192.168.10.0,現在需要將其劃分為三個子網,其中一個子網(3樓學生機房)有100臺主機,其余的兩個子網(機關用子網、教師用子網)各有50臺主機。如何合理使用這個C類網絡地址呢?
? ? ? ?1.按照上一題的解題思路,我們會發現,當我們將子網位數設為2,子網掩碼為255.255.255.192時,可以有4個子網;但是每個子網中的可用主機數為62臺,能夠滿足機關用子網、教師用子網的主機數要求,但是不能滿足學生用子網的主機數要求,也就是說,在所有子網中都使用一個子網掩碼時這一問題是無法解決的。
? ? ? ?2.當將子網位數設為1,子網掩碼為255.255.255.128時,可以有2個子網,每個子網中的可用主機數為126臺,能夠滿足學生用子網的主機數要求;
? ? ? ?3.考慮子網劃分的思路:先將整個網絡分為2個子網(子網號位數設為1),一個子網分配給學生用子網用;讓后再將第二個子網進一步劃分成2個子網(子網號位數設為2),分配給機關用子網、教師用子網。
? ? ? ?4.為每個子網規劃網絡地址:
? ? ? ?學生用子網的IP地址范圍為192.168.10.128——192.168.10.255,子網掩碼為255.255.255.128;
? ? ? ?機關用子網的IP地址范圍為192.168.10.0——192.168.10.63,子網掩碼為255.255.255.192;
? ? ? ?教師用子網的IP地址范圍為192.168.10.64——192.168.10.127,子網掩碼為255.255.255.192。
? ? ? ?當劃分了子網后,路由器中轉發分組的算法也必須要做相應的改動。
在劃分子網的情況下,路由器轉發分組的情況
圖中所示的有3個子網,以及路由器R1中的部分路由表。現在源主機H1項目的主機H2發送分組數據,分析R1受到H1向H2發送的分組后查找路由表的過程。
- 1.源主機H1向目的主機H2發送的分組的目的地址是H2的Ip地址128.30.33.138;
- 2.源主機H1首先要進行的操作是判斷:發送的這個分組,是在本子網1上直接進行交付?還是要通過本子網1上的路由器R1進行間接交付?
- 3.源主機H1把本子網1的“子網掩碼255.255.255.128”與目的主機H2的“Ip地址128.30.33.138”進行“與”運算,得出128.30.33.128,它不等于H1的網絡地址128.30.33.0,這說明H2與H1不在同一個子網上。因此H1不能把分組數據直接交付給H2,而必須要交給H1所在的子網1上的默認路由器R1,由R1來轉發。
- 4.路由器R1收到這個分組后,就在其路由表中逐行尋找有無匹配的網絡地址。
- 5.先看R1路由表中的第一行,用這一行的“子網掩碼255.255.255.128”和收到的分組的“目的地址128.30.33.138”進行“與”運算,得出128.30.33.128,然后和這一行給出的目的網絡地址128.30.33.0進行比較,兩者不一致。
- 6.用同樣的方法繼續往下找第二行。用第二行的“子網掩碼255.255.255.128”和收到的分組的“目的地址128.30.33.138”進行“與”運算,得出128.30.33.128,然后和這一行給出的目的網絡地址128.30.33.128進行比較,兩者一致,說明這個子網2就是這個分組所要尋找的目的網絡。
- 7.不再繼續查找下去,R1把分組從接口1直接交付給主機H2(它們在同一個子網2上)。