第5章 Internet原理與技術
1、分類的IP地址
- 把整個因特網看成爲一個單一的、抽象的網絡。
IP地址就是給每個連接在因特網上的主機分配一個在全世界範圍內惟一的32 bit的標識符。 - IP地址採用分層的地址結構:前綴+後綴
- 前綴( network- ID,網絡號部分):表示主機所屬的物理網絡
- 後綴( host- ID,主機號部分):用來區分物理網絡內的主機
IP 地址中的網絡號字段和主機號字段
A 類地址
- 網絡號部分
net-id
爲 8 比特, 1 字節 - 主機號字段
host-id
爲 24 比特, 3 字節
B 類地址
- 網絡號部分
net-id
爲 16 比特, 2 字節 - 主機號字段
host-id
爲 16 比特, 2 字節
C 類地址
- 網絡號部分
net-id
爲 24 比特, 3 字節 - 主機號字段
host-id
爲 8 比特, 1 字節
D 類地址是組播地址
E 類地址保留爲今後使用
點分十進制記法
主要是爲了提高可讀性。
常用的三種類型的IP地址
判斷哪類 IP 地址的方法:根據點分十進制表示時的第一個數字判斷:
- 1 ~ 126:A 類
- 128 ~ 191:B 類
- 192 ~ 223:C 類
最大網絡數:根據該類地址網絡號部分來計算
- A 類:網絡號部分爲 8 比特,開頭是 0,因此最大網絡數爲 27 - 2
00000000 和 11111111 開頭的網絡不分配,因此 A 類網絡數會減 2。 - B 類:網絡號部分爲 16 比特,開頭是 10,因此最大網絡數爲:214
- B 類:網絡號部分爲 24 比特,開頭是 110,因此最大網絡數爲:221
每個網絡中最大的主機數:根據該類地址主機號部分來計算
注:在任何地址中,全0爲網絡地址,全1爲廣播地址,不分配,因此數量減 2。
- A 類:主機號字段爲 24 比特,最大主機數爲 224 - 2
- B 類:主機號字段爲 16 比特,最大主機數爲 216 - 2
- C 類:主機號字段爲 8 比特,最大主機數爲 28 - 2
【例】給定IP地址求網絡地址
IP 地址是 202.119.230.8
的主機所在網絡的網絡地址是多少?
分析:
- 根據開頭爲 202 判斷出該地址爲 C 類地址。
- 對於 C 類地址來說,網絡號部分是 24 位,主機號部分是 8 位;
要求的是網絡地址,前 24 位保留,主機號部分則爲全 0。
答案:202.119.230.0
2、IP地址的分配與使用
IP 地址是一種分等級的地址結構
- 第一,IP 地址管理機構在分配 IP 地址時只分配網絡號,而剩下的主機號則由得到該網絡號的單位自行分配。這樣就方便了 IP 地址的管理。
- 第二,路由器僅根據目的主機所連接的網絡號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所佔的存儲空間和路由查找時間。
IP 地址是標誌主機或路由器和一條網絡鏈路的接口。
- 當一個主機同時連接到兩個網絡上時,該主機就必須同時具有兩個IP 地址,且其網絡號
net-id
必須是不同的。這種主機稱爲多接口主機(multihomed host)。 - 由於一個路由器至少應當連接到兩個網絡(這樣它才能將 IP數據報從一個網絡轉發到另一個網絡),因此一個路由器至少應當有兩個不同的 IP 地址。
【例】IP地址的分配
設某單位有3個物理網絡,分別分配了三個B類IP地址(如圖所示),請給圖中的主機和路由器分配IP地址。
解:分別分配了 3 個 B 類 IP 地址:128.9.0.0
、128.10.0.0
、128.11.0.0
。路由器要連接兩個網絡號不同的IP地址。經過下一個路由器之前網絡號必須相同,主機地址可以自由分配。
3、IP數據報
- 因特網的基本傳送單元是IP分組(或IP數據報)。
- 一個 IP 數據報由首部(報頭)和數據兩部分組成。
- 首部的前一部分是固定長度,共 20 字節,是所有 IP 數據報必須具有的。
- 在首部的固定部分的後面是一些可選字段,其長度是可變的。
- IP 數據報首部的固定部分和可選字段長度之和最大爲 60 字節
- 版本:佔 4 bit,指IP協議的版本
目前的 IP 協議版本號爲 0100,也就是4 (即 IPv4) - 首部長度:佔 4 bit,可表示的最大數值是 15 個單位(一個單位爲 4 字節)
因此 IP 的首部長度的最大值是60字節。 - 服務類型:佔 8 bit,用來獲得更好的服務
這個字段以前一直沒有被人們使用 ,通常是 00000000 - 總長度:佔 16 bit,指首部和數據之和的長度,單位爲字節,數據報的最大長度爲 65535 字節。
總長度必須不超過最大傳送單元 MTU。
- 標識、標誌和片偏移這三個字段和分片相關。
- 生存期 (8 bit) 記爲 TTL (Time To Live)
表示IP數據報在網絡中的壽命,目前的單位是跳。 - 協議 (8 bit) 字段指出此數據報攜帶的數據使用何種協議以便目的主機的 IP 層將數據部分上交給哪個協議軟件處理。
- 首部檢驗和(16 bit)字段只檢驗數據報的首部,不包括數據部分。
這裏不採用 CRC 檢驗碼而採用簡單的計算方法。 - 源IP地址和目的IP地址都各佔 4 字節
【例】IP數據報
使用 Wireshark 採集某主機訪問南郵的網站服務器時所傳輸的報文,其中有個數據幀的內容如下圖所示(均用16進製表示),請分析該幀中封裝的IP數據報中的一些關鍵字段:
① 數據報首部長度爲多少字節?
② 數據報的總長度是多少字節?
③ 數據報的協議字段是多少,表示什麼協議?
④ 源主機和目的主機IP地址分別是什麼?
⑤ 已知初始TTL=64,從當前主機到南郵的網站服務器,大概經過了幾臺路由器的轉發?
解:首先來看封裝的關係,當以太網MAC幀首部中的類型字段是0800時,表示其數據部分封裝的是IP數據報。
IP數據報的分片與重組
爲什麼要進行分片? 發送的IP數據報總長度超出了某網絡的 MTU。
分片的工作由誰負責完成? 路由器。
數據報分片的重組工作由誰來負責? 由目的主機來完成分片的重組工作
如何分片? 標識、標誌和片偏移這三個字段和分片相關。
目的主機能夠根據分片中的源主機IP地址、標識、標誌字段中的MF位以及片偏移量來重裝出最初始數據報的完整副本,除非沒能收齊所有分片。
在實際應用中,如果需要分片,總是希望分片的個數越少越好,又因爲片偏移量是以8字節爲單位,所以除了最後一個分片外,其餘分片的數據部分的大小應儘量接近但不超過網絡 MTU,並且是8字節的整數倍。
【例】IP數據報的分片
在下圖所示的小型互聯網中,主機 A 向 B 發送了一個首部 20 字節,數據部分 1400 字節,且DF
位爲 0 的 IP 數據報,請問該數據報會被分片嗎?如果需要分片,請寫出分片結果。
解:
由於數據報首部爲 20 字節,因此實際分片後的數據部分長度爲 660 - 20 = 640;分片個數爲 1400 / 640 = 3。
片偏移字段表示該分片的數據部分的的第一個字節原數據報中數據部分的偏移量,該字段是以8個字節爲單位來計算偏移量的,因此分片1的片偏移爲 0 / 8 = 0;分片2的片偏移爲 640 / 8 = 80;分片3的片偏移爲 1280 / 8 = 160。
MF
標誌表示是否有後序分片,明顯分片1和分片2的MF
位爲1,分片3的MF
爲爲0。
4、因特網地址到物理地址的映射(地址解析協議ARP)
ARP的作用:地址解析ARP爲 網絡層(IP)地址 和 數據鏈路層(MAC)地址提供動態映射。
使用廣播的方式獲得物理地址
使用ARP高速緩存
- 每一個主機中都設有一個 ARP 高速緩存(ARP cache),裏面存放的是最近獲得的局域網上各主機和路由器的 IP 地址到硬件地址的映射表。
- 可以通過命令
arp -a
來查看本機的ARP緩存中內容
所以,當發送分組時,計算機在發送ARP請求之前總是先在 ARP緩存中尋找所需的綁定,若有,則無須廣播。
但這種方法中存在一個問題:信息可以在沒有任何警告的情況下變的“失效”。如何解決?
- 在協議中設置 一 計時器,典型的超時時間爲20分鐘,當計時器超時時則刪除狀態信息。
【思考題】ARP協議思考題
若想訪問南京郵電大學網站,在瀏覽器地址欄中輸入 http://www.njupt.edu.cn, 請問此時通過自己電腦中的 ARP 協議軟件獲得我們學校 WWW 服務器的物理地址嗎?
應當注意的問題:
- ARP 是解決同一個物理網絡上的主機或路由器的 IP 地址和硬件地址的映射問題。
- 從IP地址到硬件地址的解析是自動進行的,是由主機所運行的TCP/IP內核實現的,主機的用戶對這種地址解析過程是不知道的。
5、因特網控制報文協議 ICMP
ICMP 背景:
ICMP 概念:
- ICMP(Internet Control Message Protocol)是因特網控制報文協議。
- ICMP 用於在IP主機、路由器之間傳遞控制消息。
- ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。
- ICMP 報文作爲 IP 層數據報的數據,加上數據報的首部,組成IP數據報發送出去。
ICMP 報文的格式:
ICMP報文種類:
- ICMP差錯報告報文
- ICMP詢問報文
ICM差錯報告報文
- IP數據報出差錯的時候,路由器或者主機會發出此類報文
- ICMP報文僅發給引起問題的數據報的源站
- 複製了產生問題的IP數據報的首部和前64比特數據
五種ICMP差錯報告報文:
- 終點不可達
- 時間超過
- 源站抑制
- 參數問題
- 路由重定向
ICMP詢問報文
• 用於給網絡管理人員或應用程序對網絡進行可達性分析、地址掩碼設置、時鐘同步等檢測
四種ICMP詢問報文
- 回送請求和回答報文
- 時間戳請求和回答報文
- 掩碼地址請求和回答報文
- 路由器詢問和通告報文
ICMP的應用
- ICMP協議可以實現網絡可達性檢查、網絡時延測量、網絡路由追蹤、網絡安全排查等方面都有重要的應用。
- Tracert(跟蹤路由)基於ICMP終點不可達和時間超過差錯報告報文原理實現的。
- Ping(因特網包探索器)基於ICMP詢問報文類型中的回送請求和回答報文實現的。
6、子網編址
內容導入
- 因特網發展速度較快,大大超出預期;
- IP地址利用率較低;
- 在不放棄分類編址的情況下,如何適應網絡增長的需要呢?
- 能不能把一個大的網絡拆成若干個規模較小的網絡呢?
劃分子網、子網掩碼
- 從 1985 年起在 IP 地址中又增加了一個“子網號字段”,使兩級的IP 地址變成爲三級的 IP 地址。
- 使得多個物理網絡可以共用一個網絡前綴
- 這種做法叫作劃分子網(subnetting) 。劃分子網已成爲因特網的正式標準協議。
默認子網掩碼
A類網絡:255.0.0.0
B類網絡:255.255.0.0
C類網絡:255.255.255.0
【例】 求子網掩碼
【例】求子網地址
結論:子網地址 = 主機IP地址 & 子網掩碼
廣播地址
特點:主機號部分全爲 1
【例】求子網掩碼
分析:
若全0、全1的子網地址可以分配,則若借用 x 位進行子網劃分,可以劃分出2x個子網;
若全0、全1的子網地址不能分配,則若借用 x 位進行子網劃分,可以劃分出2x - 2個子網;
對於本題中,要劃分14個子網,x=4 至少劃分 24 - 2 = 14 個子網,無論哪種情況都滿足需求。
因爲是C類地址,所以其子網掩碼是 24+4=28 比特的 1, 32-28=4 比特的 0。
答案: 255.255.255.11110000 ——> 255.255.255.240
【例】子網編址綜合題
解:
根據網絡地址 210.xxx 或者 子網掩碼 255.255.255.xxx 可知,這是一個 C 類 網絡 。
主機號部分的位數也就是子網掩碼中0的個數,有6位。
每個子網中第一個可分配的IP地址:主機號部分除了最後一位爲1,其餘位均爲0的地址;
每個子網中最後一個可分配的IP地址:主機號部分最後一位是0,其餘位均爲1。
可得子網1的範圍是:210.10.30.0100001
~ 210.10.30.0111110
,即 210.10.30.60
~ 210.10.30.126
子網2的範圍是:210.10.30.1000001
~ 210.10.30.10111110
,即 210.10.30.129
~ 210.10.30.190
廣播地址就是主機號部分全爲 1 ;
可得子網1的廣播地址爲:210.10.30.01111111
,即 210.10.30.127
可得子網2的廣播地址爲:210.10.30.10111111
,即 210.10.30.191
【例】子網編址綜合題2
網絡地址爲 128.xxx,因此該地址爲 B 類地址,默認子網掩碼爲 255.255.xxx;
由題意可知,子網掩碼爲 255.255.11111111.11000000
,有10個1,可知借用了10位來劃分子網,由於全0全1的子網地址不分配,可以劃分 210 - 2 = 1022 個子網。
根據子網掩碼255.255.11111111.11000000
,最後有6個0,每個子網可以容納 26 - 2 = 62 個主機。
7、無分類編址與CIDR
內容導入
- 因特網的發展速度太快,對地址的需求量大;
- 缺乏適合於中等大小組織所需要的網絡類型;
- 即使採用劃分子網的辦法,對於B類地址也未能得到充分利用
- 1993年,B類網絡地址空間即將耗盡;
- 因特網主幹網上的路由表中的項目數增長迅速(從幾千個增長到幾萬個);
- 推出了無分類域間路由選擇(Classless Inter-Domain Routing,簡稱CIDR)過渡方案,一直使用到現在;
- 1993年發佈的有關CIDR的RFC文檔爲RFC1517~ RFC1520。
CIDR地址塊
應用:互聯網服務提供商(Internet Service Provider),簡稱 ISP
- 地址塊57.0.0.0/7被IANA(因特網編號管理局)分配給了亞太地區網絡信息中心;
- 亞太地區網絡信息中心再分成一個個地址塊分配給大型ISP;
- 大型ISP再根據用戶的需求劃分成小塊分配給單位或者小型ISP;
- 各單位再劃分出大小相等或者大小不能的若干塊,分配給各個物理網絡。
【例】CIDR地址塊最小、最大地址
題:128.14.32.0/20
表示的地址塊共有多少個地址?最大和最小的地址分別是什麼?
分析:因爲是一個/20
的地址塊,\20
表示網絡部分爲20位,所以主機號部分共有32-20=12位,所以地址個數是212=4096個。
主機地址全0或者全1不可用,所以可用地址爲 212 - 2 = 4094 個。
【例】根據需求分配地址塊
主要就是算出主機號需要多少位,然後要注意每個大學分配的地址不能重複!
A大學:申請4000個IP地址的地址塊,可知主機號部分需要12位,212 = 4096 > 4000;網絡前綴爲 32 - 12 = 20 位;
起始地址爲:202.192.00000000.0/20
,即 202.192.0.0/20
;
結束地址爲:202.192.00001111.255
,即 202.192.15.255
;
8、IP分組的轉發
內容導入
網絡設備—路由器
- 路由器實際上就是一種通信專用的計算機,具有和計算機類似的結構。
- 每臺路由器與兩個或兩個以上的物理網絡有直接的連接。路由器的每個網絡接口(network interface)都提供了雙向通信,包含輸入和輸出端口。
- 接口:控制檯接口、局域網接口、廣域網接口等;
- 整個路由器結構可分爲兩大部分:路由選擇部分和分組轉發部分。
- 分組轉發部分由三個部分組成:交換結構、一組輸入端口和一組輸出端口。
路由器的結構:
若路由器處理分組的速率趕不上分組進入隊列的速率,則隊列的存儲空間最終必定減少到零,這就使後面再進入隊列的分組由於沒有存儲空間而只能被丟棄。
路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因。
直接交付與間接交付
直接交付不需要使用路由器但間接交付就必須使用路由器。
【例】判斷直接交付與間接交付
如何判斷源和目的是否在同一個物理網絡中?
- 若採用傳統的分類IP地址,可以根據分類編址規則,很容易地從目的IP地址中抽取出目的網絡地址,再與本機IP地址所對應的網絡地址作比較。
例如:源主機202.119.224.201
和目的主機202.119.224.8
,根據都是C類地址,兩個IP地址中高24位都是一樣的,很容易判斷出來源和目的是屬於同一個網絡。 - 對於進行了子網劃分或者無分類編址的網絡,也是類似,仍然是根據目的IP地址、源IP地址分別和源主機所在的子網的子網掩碼相與的結果是否相等來判斷。
IP分組轉發算法
特定主機路由、默認路由
特定主機路由:出現在路由表第一列的不是一個網絡地址,而是某臺主機的IP地址。
比如,在調試網絡連接或路由表時,可能會需要爲單個主機指定一條特殊路由。所以,特定主機路由主要用於網絡測試,或者出於安全的考慮。
- 對於特定主機路由來說,在路由表中如何表示呢?
該行對應的子網掩碼爲255.255.255.255
默認路由:如果互聯網包含的物理網絡很多,讓路由表包含所有網絡將使路由表表項數很多,查找起來速度較慢。是把多個下一跳相同的表項合併成一個表項,即默認路由。
- 對於默認路由來說,在路由表中如何表示呢?
該行對應的子網掩碼爲0.0.0.0
,目的網絡地址爲0.0.0.0
【例】劃分子網
注意審題:R1的錄表結構!
子網掩碼:網絡號、子網號全爲 1,主機號全爲 0 。
解:
對於目的網絡IP地址202.118.1.0
:網絡前綴長度爲 25;
- 求得子網掩碼爲
255.255.255.10000000
,即255.255.255.128
由於是直接交付,下一跳路由器IP地址無,接口爲 E1
對於目的網絡IP地址202.118.1.128
:網絡前綴長度爲 25;
- 求得子網掩碼爲
255.255.255.10000000
,即255.255.255.128
- 由於是直接交付,下一跳路由器IP地址無,接口爲 E2
對於目的網絡IP地址DNS 202.118.3.2
:視爲特定主機路由
- 因此子網掩碼爲
255.255.255.255
,下一跳路由器IP地址爲202.118.2.2
,接口爲202.118.2.1
對於目的網絡IP地址互聯網,視爲默認路由:IP地址和子網掩碼都是 0.0.0.0
- 下一跳路由器IP地址爲
202.118.2.2
,接口爲202.118.2.1
解:
局域網1網絡IP地址爲 202.118.1.0
;
局域網2網絡IP地址爲 202.118.1.128
;
將他們不同的地方展開爲二進制:202.118.1.00000000
,202.118.1.10000000
,發現是連續的;
因此可以通過路由聚合技術,聚合爲 202.118.1.0
【例】路由聚合
最長前綴匹配
- 因爲裏面可能存在着小地址塊包含在大地址塊裏面的情況,所以,有可能找到的匹配項不止一項。
- 在多個匹配項中,究竟應該選哪個匹配項對應的下一跳路由器進行轉發呢?
- 選擇網絡前綴最長的匹配項,因爲前綴越長,地址塊中地址數量越少,這樣的路由就越具體。就稱爲最長前綴匹配。
私有地址
- IP地址資源是有限的,爲了節約地址的使用,IANA 保留了三塊只能用於專用互聯網內部通信的IP地址空間。
慕課作業
第一題
利用三臺路由器組建校園網,當前的網絡連接拓撲如題圖所示。已知路由器R2的E0.4.1接口配置的IP地址是 192.168.4.1
,請回答以下問題:
(1)假設某一個用戶攜帶筆記本電腦,想通過手動配置網絡,接入到192.168.4.0/24
物理網絡中,要想成功連網,則該用戶允許配置的最小主機IP地址、最大主機IP地址、子網掩碼和默認網關(路由器)IP地址分別是什麼?(要求均用點分十進制表示)
(2)現考慮將主機H2所連網絡劃分成兩個一樣大的子網,且每個子網規模儘可能的大,且不允許使用全0和全1的子網號。請寫出子網掩碼,每個子網對應的子網地址和子網廣播地址,以及每個子網允許接入的主機數目。
解:
(1)
根據 192.168.4.0/24
分析,有 24 位網絡前綴,所以借用了 24-24 = 0位,由於是C類地址,一眼看出子網掩碼爲 255.255.255.0
。
默認網關題目說是路由器,由於接入到 192.168.4.0/24
物理網絡中,並且已知路由器R2的E0.4.1接口配置的IP地址是 192.168.4.1
,直接看出默認網關爲 192.168.4.1
。
想要成功聯網,網絡前綴要一樣,由於路由器R2的IP地址 192.168.4.1
,因此最小主機IP地址爲 192.168.4.2
;最大主機IP地址爲 192.168.4.254
(去掉全1)。
(2)
192.168.5.100
是個C類地址,劃分兩個子網(不能全0和全1),借用2位主機位,前26位爲1,子網掩碼爲 255.255.255.11000000
,即 255.255.255.192
。
子網地址中高 24 位爲網絡號,肯定是 192.168.5
,子網地址中主機號部分全爲 0,由於不允許使用全0和全1的子網號,子網號要麼01
,要麼10
。
廣播地址 即 主機號全爲1。
子網1的子網地址:192.168.5.01000000
,即 192.168.5.64
;
子網1的廣播地址:192.168.5.01111111
,即 192.168.5.127
;
子網2的子網地址:192.168.5.10000000
,即 192.168.5.128
;
子網2的廣播地址:192.168.5.10111111
,即 192.168.5.191
;
因爲主機號部分的位數也就是子網掩碼中0的個數,有6位。
每個子網允許接入的主機數目:26 - 2 = 62 個(全0和全1的主機地址始終不分配)
第二題
某公司網絡如題4-4圖所示,IP地址空間202.119.5.0/24
已經被平分給研發部和市場部兩個子網(全0和全1的子網地址可以使用),並已經分別爲兩個子網內若干臺主機分配了IP地址,路由器兩個接口 F0 和 F1 的IP地址分別是202.119.5.1
和202.119.5.254
,研發部子網的MTU=1500字節,市場部子網的MTU=820字節。請回答下列問題:
(1)研發部子網和市場部子網的子網地址、廣播地址分別是什麼?
(2)若每臺主機僅分配一個IP地址,則研發部子網還能再連接多少臺主機?
(3)若研發部某主機202.119.5.2
向市場部某主機202.119.5.200
發送一個總長度是1500字節(首部長度20字節)的IP分組,則在路由器處會分成幾個分片?並寫出每個分片的片偏移字段的值以及數據部分的長度。
解:
(1)
由於IP地址空間202.119.5.0/24
被平分給兩個子網(全0和全1也可以用),所以從主機號借了1位(因爲全0和全1可以使用,所以劃分的就是全0和全1),子網掩碼爲255.255.255.10000000
,即 255.255.255.128
。
根據圖上的研發部已分配地址:202.119.5.2
— 202.119.5.20
,可得:
研發部子網地址:202.119.5.00000000
,即 202.119.5.0
;
研發部廣播地址,主機號全爲1:202.119.5.01111111
,即 202.119.5.127
;
根據圖上的市場部已分配地址:202.119.5.129
— 202.119.5.200
,可得:
市場部子網地址:202.119.5.10000000
,即 202.119.5.128
;
市場部廣播地址,主機號全爲1,:202.119.5.11111111
,即 202.119.5.255
;
(2)
研發部子網可分配IP地址的範圍是:202.119.5.1
— 202.119.5.127
,每臺主機1個IP,則總共127臺;
根據圖上的研發部已分配地址:202.119.5.2
— 202.119.5.20
,已分配了19臺,可得:
研發部子網還能連接 127 - 19 = 108 臺。
(3)
由於研發部的MTU=1500字節,所以不會分片。
市場部MTU=820字節,由於首部長度爲20字節,因此實際分片後的數據部分長度爲 820 - 20 = 800 字節;分片個數爲 1500 / 800 向上取整爲 2;
分片1:
片偏移:0 / 8 = 0;數據部分的長度:800字節;MF = 1。
分片2:
片偏移:800 / 8 = 100;數據部分的長度:700字節;MF = 0。