1、IP報文組成
IP報文由IP報頭和Data部分組成,報頭由6個數據塊組成,其中前5個數據塊每塊大小是固定的4字節(32位),後一個數據塊長度可變,但規定了IP報頭最大不能超過60字節,所以IP報頭的大小範圍在20到60字節。
IP報頭 | Data | |||||||
數據塊1 | 數據塊2 | 數據塊3 | 數據塊4 | 數據塊5 | 數據塊6 | |||
4字節 | 4字節 | 4字節 | 4字節 | 4字節 | 0-40字節 | |||
20-60字節 |
2、IP報頭詳解
Version | Header Length | Type of Service | Total Length | |
4位 | 4位 | 8位 | 16位 |
Version:IP協議的版本號,如ipv4、ipv6。
Hearder Length:IP報頭長度,即是6個數據塊的長度和,原因是數據塊6的長度可變。
Type of Service:服務類型,這個字段可以設置IP報文的優先級,如發生擁堵時高優先級可先轉發
Total Length:總長度,指整個IP報文的總長度。16位二進制對應的最大十進制數就是65535,而計算機是從0開始計數的,所以一個IP報文的總長度最大可以爲65536個字節。上一章講到一個網絡幀的最大長度爲1536個字節,所以一個報文在傳輸過程中需要分解爲若干個幀,也就是報文的分段。
Identification | Flags | Fragment Offset | |
16位 | 3位 | 13位 |
Identification:標識符,作用是保證報文被分段後用於區別於其他報文的數據段,並用來將各數據段重新組合成完整的報文。
Flags:標誌,該字段包含3個位,作用是配合報文的分段。第一位爲預留位不使用;第二位爲DF位,若DF=1則表明不能對該報文進行分段;第三位爲MF位,若MF=1則表明設備接收到的該報文分段後還有其他的分段,若MF=0則表明這是最後一個分段了。
Fragment Offset:片偏移,該字段記錄了着此分段數據相對於報頭起始點的偏移位置,作用是設備分多次接收到多個報文段後可以根據此數值將各分段按原來的順序重新組合起來形成一個完整的報文。
Time to Live | Protocol | Header Checksum |
8位 | 8位 | 16位 |
Time to Live:生存時間,指報文在網絡中可以存活的時間。路由器每傳遞一個報文都需要耗費相應的時間,而網絡的複雜性和故障可能導致某些報文在網絡中被循環的傳遞,爲了防止報文可能被無限制地傳遞從而影響路由器的效率,我們規定報文每通過一個路由器就將該值減一,如果數值被減爲0則接收到的路由器可以將該報文丟棄不再傳遞。
Protocol:協議,在設備中不同的協議是交由不同的進程處理的,該字段能指出報文攜帶的數據是何種協議,便於IP層能知道該數據應上交到哪個進程(這裏可以跟上一章中幀的協議類型字段聯動一下)。
Header Checksum:首部校驗,與幀校驗類似首部校驗是將IP報文的首部以某種規則進行運算並將結果存儲在這個字段中方便接收設備對IP報文的首部進行校驗。
數據庫4 | 數據塊5 | 數據塊6 |
Source IP Address | Destination IP Address | Options |
32位 | 32位 | 0-40字節 |
Source IP Address:源IP地址,數據發送設備的IP地址。
Destination IP Address:目標IP地址,目標設備的IP地址。
Options:可選項,源設備或路由設備可以向其中加入信息,是一個可選字段長度可變,主要用於測試。
3、IP地址結構
一個IP地址由32個二進制數組成,共4字節,所以通常將IP地址分爲4段,爲便於使用通常將IP地址以十進制的方式顯示。
二進制 | 11000000 | 10101000 | 00000000 | 00000001 |
十進制 | 192 | 168 | 0 | 1 |
IP地址在使用時一般將其從某位截斷,將前半部分稱爲網絡ID用來標識其所在網絡也稱爲網段,後半部分稱爲主機ID用來標識網絡內的不同計算機。例如我們隨意地將32位IP地址從中間截斷,將前12位用作網絡ID,後20位用作主機ID。那麼我們就獲得了4096個網絡ID,每個網絡可以容納1048576個主機。
前12位(網絡ID) | 後20位(主機ID) | |
二進制值範圍 | 000000000000 到 111111111111 | 00000000000000000000 到 11111111111111111111 |
十進制值範圍 | 0到4095 | 0到1048575 |
很顯然,在進行IP截斷時,獲取的網絡ID越多則每個網絡對應的主機ID越少,反之網絡ID越少每個網絡對應可獲得的主機ID就越多。
4、IP地址的分類
在實際使用時用戶在局域網中根據自己的需要從隨意位置截斷IP來劃分網絡ID和主機ID自然是可行的,但在接入互聯網後這種行爲就需要規範起來,於是大家約定只在第8位、16位和24位對IP進行截斷,將IP地址分成了3大類:A類、B類和C類,同時使用掩碼來告訴計算機其IP屬於那一類。
類型 | 網絡ID | 主機ID | 掩碼 |
A類 | 11111111 | 11111111 11111111 11111111 | 255.0.0.0 |
B類 | 11111111 11111111 | 11111111 11111111 | 255.255.0.0 |
C類 | 11111111 11111111 11111111 | 11111111 | 255.255.255.0 |
計算機可以使用掩碼對IP做與運算得到該IP的網絡ID,用掩碼的反碼做與運算得到該IP的主機ID。
IP | 192.168.1.1 | 11000000.10101000.00000001.00000001 | |
掩碼 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | |
網絡ID | 192.168.1.0 | 11000000.10101000.00000001.00000000 | |
主機ID | 0.0.0.1 | 00000000.00000000.00000000.00000001 |
這樣對IP進行分類還存在一個問題,那就是如果同一個IP使用不同的掩碼,將得到不同的網絡ID和主機ID,也就是說即使IP地址同爲192.168.0.1也有可能處於不同的網段。
IP | 192.168.1.1 | 192.168.1.1 |
掩碼 | 255.255.255.0 | 255.255.0.0 |
網絡ID | 192.168.1 | 192.168 |
主機ID | 0.0.0.1 | 0.0.1.1 |
爲避免引起類似的混亂人們又根據IP地址前8位的值對各類IP進行再次劃分,規定A類地址前8位的值爲0到127,B類地址爲128到191,C類地址爲192到223,同時加入D類地址從224到239用於組播,加入E類作爲保留地址從240到255留待以後使用。對於D類和E類由於是特殊IP所以不需要掩碼。
類型 | IP範圍 | 掩碼 | 二進制 |
A類 | 0.0.0.0 127.255.255.255 | 255.0.0.0 | 00000000.00000000.00000000.00000000 01111111.11111111.11111111.11111111 |
B類 | 128.0.0.0 191.255.255.255 | 255.255.0.0 | 10000000.00000000.00000000.00000000 10111111.11111111.11111111.11111111 |
C類 | 192.0.0.0 223.255.255.255 | 255.255.255.0 | 11000000.00000000.00000000.00000000 11011111.11111111.11111111.11111111 |
D類 | 224.0.0.0 239.255.255.255 | 特殊 | 11100000.00000000.00000000.00000000 11101111.11111111.11111111.11111111 |
E類 | 240.0.0.0 255.255.255.255 | 特殊 | 11110000.00000000.00000000.00000000 11111111.11111111.11111111.11111111 |
上表中我們將IP的網絡ID進行了標紅,這樣我們就能很簡單的計算出各類IP的網絡ID與主機ID的數量。
類型 | 網絡ID | 主機ID | ||
A類 | 00000000 (0) 01111111 (127) 127-0=127 合計128個 | 00000000.00000000.00000000 (0) 11111111.11111111.11111111 (16777215) 16777215-0=16777215 合計16777215 | ||
B類 | 10000000.00000000 (32768) 10111111.11111111 (49151) 49151-32768=16383 合計16384個 | 00000000.00000000 (0) 11111111.11111111 (65535) 65535-0=65535 合計65536個 | ||
C類 | 11000000.00000000.00000000 (12582912) 11011111.11111111.11111111 (14680063) 14680063-12582912=2097151 合計2097152個 | 00000000 (0) 11111111 (255) 255-0=255 合計256個 |
5、公IP與私有IP
最開始IP地址僅應用於以太網也就是局域網,將各地的局域網連接在一起就是所謂的城域網和廣域網,按不同的應用需求就有了所謂的教育網:教育科研系統互相連接的網絡;軍網:各部隊互相連接的網絡;鐵通:以前鐵路系統自用的網絡;還有服務普通民衆和企業的電信網、聯通網。不同國家不同運營商大家各建各的當然沒有問題,但各網之間想要連接起來互相通信首先就需要對IP地址進行統一規劃。於是人們就規定將所有IP分成兩部分,一部分用作局域網大家隨便用稱爲私有IP,另一部分用作互聯網,也就是連接到互聯網的大家公用的稱爲公有IP。
IP範圍 | 私有IP | |
A類 | 0.0.0.0-127.255.255.255 | 10.0.0.0-10.255.255.255 |
B類 | 128.0.0.0-191.255.255.255 | 172.16.0.0-172.31.255.255 |
C類 | 192.0.0.0-223.255.255.255 | 192.168.0.0-192.168.255.255 |
6、特殊IP
除了上面講到的D類、E類IP比較特殊之外,人們還規定了一系列特殊IP用作特殊用途。下面對所有特殊IP進行簡單介紹。
特徵 | 用途 |
IP範圍從224.0.0.0到239.255.255.255 | D類IP,用作組播,不能配給任何設備 |
IP範圍從240.0.0.0到255.255.255.255 | E類IP,預留不使用,不能配給任何設備 |
主機位全爲0(如192.168.0.0) | 代表一個網段,路由器用來尋址,不能配給任何設備。 |
主機位全爲255(如192.168.0.255) | 廣播地址,路由向192.168.0.0網段發送廣播用的,不能配給任何設備。需要注意的是發送廣播的設備不一定是位於該網段的。 |
IP範圍從127.0.0.0到127.255.255.255 | 稱爲環回地址,用於診斷網絡是否正常,不能配給任何設備 |
IP地址0.0.0.0 | 表示任意網絡,常用在路由策略裏,不能配給任何設備 |
IP地址255.255.255.255 | 也是廣播地址,向設備所在網段的所有主機發送廣播時使用的,不能配給任何設備。 |
【IP報文與幀的關係】IP報文長相與幀類似,都有個頭都有個數據段,那這二者是什麼關係呢。
實際上IP報文工作在OSI的第三層而幀工作在第二層,IP報文屬於IP協議僅用作尋找目標設備,實際存放數據的是位於OSI第四層的傳輸層協議如TCP、UDP,所以我們常說TCP/IP協議。如果現在某設備的一個進程要向另一設備的某進程使用TCP的方式傳輸一段數據,設備首先要做的是先將數據打包成TCP報文,然後將目標設備IP和自身IP等信息組成一個IP報文,將TCP報文存入IP報文的Data字段。當設備將存有TCP報文的IP報文傳輸到網絡上之前,先判斷是否要對這個IP報文進行分段,如果要分段的話就分成若干個IP報文。而後根據下一個設備的MAC地址組成若干個幀,被分段的IP報文就存放在幀的Data字段中。所以它們的關係如下圖所示。
可見幀其實就是個搬運工,而IP報文是用於尋找目的端,真正存放數據的是TCP報文。
【報文】報文(message)是網絡中交換與傳輸的數據單元,即站點一次性要發送的數據塊。報文包含了將要發送的完整的數據信息,其長短很不一致,長度不限且可變。報文也是網絡傳輸的單位,傳輸過程中會不斷的封裝成分組、包、幀來傳輸,封裝的方式就是添加一些信息段,那些就是報文頭以一定格式組織起來的數據。
【骨幹網】骨幹網(Backbone Network)是用來連接多個區域或地區的高速網絡。每個骨幹網中至少有一個和其他骨幹網進行互聯互通的連接點。不同的網絡供應商都擁有自己的骨幹網,用以連接其位於不同區域的網絡。幾臺計算機連接起來,互相可以看到其他人的文件,這叫局域網,整個城市的計算機都連接起來,就是城域網,把城市之間連接起來的網就叫骨幹網。這些骨幹網是國家批准的可以直接和國外連接的互聯網。目前我國擁有9大骨幹網:
中國公用計算機互聯網(CHINANET):郵電運營的民用網絡。
中國金橋信息網(CHINAGBN):連接國務院、各部委、央企、各地重點企業等等的專用網。
中國聯通計算機互聯網(UNINET):聯通運營的民用網。
中國網通公用互聯網(CNCNET):網通運營的民用網。
中國移動互聯網(CMNET):移動運營的民用網。
中國教育和科研計算機網(CERNET):教育部運營的,連接各地大學等教育機構的專用網。
中國科技網 (CSTNET):中國科學院運營的,連接各地研究所的專用網。
中國長城互聯網(CGWNET):跟長城寬帶可不一樣,是部隊的專用網。
中國國際經濟貿易互聯網(CIETNET):面向外貿系統企事業單位的專用網。
這些骨幹網使用不同的方法和獨立的線路,而後通過接口互相連接,也可以接入到國際互聯網,他們在內部可以使用私有IP而互連的接口則必須使用分配給他們的公有IP。