一、概述
1、網絡層是OSI參考模型中的第三層,介於傳輸層和數據鏈路層之間,它在數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通信,將數據設法從源端經過若干個中間節點傳送到目的端,從而向運輸層提供最基本的端到端的數據傳送服務。
2、網絡層向上只提供簡單靈活的、無連接的,盡最大努力交付的數據報服務。
3、服務類型:(1)虛電報服務(可靠通信應當由網絡來保證)
(2)數據報服務(TCP/UDP采用:可靠通信應當由用戶主機來保證)
二、網絡層的協議
1、網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一。與 IP 協議配套使用的還有三個協議:
地址解析協議 ARP (Address Resolution Protocol)
網際控制報文協議 ICMP (Internet Control Message Protocol)
網際組管理協議 IGMP (Internet Group Management Protocol)
2、虛擬互連網絡:當互聯網上的主機進行通信時,就好像在一個網絡上通信一樣,而看不見互連的各具體的網絡異構細節。
但是我們利用 IP 協議就可以使這些性能各異的網絡從用戶看起來好像是一個統一的網絡。只需要通過尋址,就可以完成交互。
三、IP地址:每個主機或者路由器的每一個接口的唯一標識符
1、分類
一個IP地址在整個因特網范圍內是唯一的。這種兩級的IP地址可以記為 IP地址 ::= {<網絡號>, <主機號>}。
2、IP地址的重要特點:
(a) IP地址管理機構在分配IP地址時只分配網絡號(第一級),而剩下的主機號(第二級)則由得到該網絡號的單位自行分配。這樣就方便了IP地址的管理。
(b) 路由器僅根據目的主機所連接的網絡號來轉發分組(而不考慮目的主機號),這樣就可以使路由表中的項目數大幅度減少,從而減小了路由表所占的存儲空間以及查找路由表的時間。
四、地址解析協議ARP:通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
在發送數據時,數據從高層到低層,然后才到通信鏈路上傳輸。使用IP地址的IP數據報一旦交給了數據鏈路層,就被封裝成了MAC幀。MAC幀在傳送時使用的源地址和目的地址都是硬件地址。連接在通信鏈路上的設備(主機或路由器)在接收MAC幀時,根據是MAC幀首部的硬件地址。在數據鏈路層看不到隱藏在MAC幀中的IP地址。只有在剝去MAC幀的首部和尾部后把MAC層的數據交給網絡層后,網絡層才能在IP數據報的首部中找到源IP地址和目的IP地址。
(1)原理 : 在每台安裝有TCP/IP協議的電腦或路由器里都有一個ARP緩存表,表里的IP地址與MAC地址是一對應的\
(2)ARP工作時:
(1)當主機A要想向本局域網上的某個主機B發送IP數據報時,就先在其ARP高速緩存中查看有無主機B的IP地址,若有則在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入MAC幀,然后通過局域網把該MAC幀發往此硬件地址。
當查不到主機B的IP地址時,主機A就會自動運行ARP:
(a) ARP進程在本局域網上廣播發送一個ARP請求分組,請求的主要內容是“我的IP地址時209.0.0.5,硬件地址是00-00-C0-15-AD-18。我想知道IP地址為209.0.0.6的主機的硬件地址。”;
(b) 在本局域網上的所有主機上運行的ARP進程都收到此ARP請求分組。
(c) 主機B在ARP請求分組中見到自己的IP地址,就向主機A發送ARP響應分組,並寫入自己的硬件地址。其余的所有主機都不理睬這個ARP請求分組,ARP響應分組的主要內容是“我的IP地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A。”注意ARP請求分組是廣播發送的,ARP響應分組是普通的單播,即從一個源地址發送到一個目的地址。同時主機A的這一地址映射也寫入了主機B自己的ARP高速緩存中。
(d) 主機A收到主機B的ARP響應分組后,就在其ARP高速緩存中寫入主機B的IP地址到硬件地址的映射。
(2) 注意:ARP 是解決同一個局域網上的主機或路由器的 IP 地址和硬件地址的映射問題。
對於不在同一個局域網的主機,並不需要知道其硬件地址,只要先通過IP地址找到路由器(需要知道其硬件地址)進行轉發即可。
緩存表中路由器的硬件地址,通過 ARP 找到一個位於本局域網上的某個路由器的硬件地址,然后把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡。剩下的工作就由下一個網絡來做。
五、IP數據包的格式:
一個 IP 數據報由首部和數據兩部分組成。首部的前一部分是固定長度,共 20 字節,是所有 IP 數據報必須具有的。
生存時間(TTL:Time To Live):一個數據報每經過一個路由器,值減一,當值為0時,丟棄該數據報。
六、路由表:(目的網絡地址,下一跳地址):
路由表是一個存儲在路由器或者聯網計算機中的電子表格(文件)或類數據庫,。路由表存儲着指向特定網絡地址的路徑
IP層轉發分組的流程:
分組轉發算法:
(1) 從數據報的首部提取目的主機的 IP 地址 D, 得出目的網絡地址為 N。
(2) 若網絡 N 與此路由器直接相連,則把數據報直接交付目的主機 D;否則是間接交付,執行(3)。
(3) 若路由表中有目的地址為 D 的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。
(4) 若路由表中有到達網絡 N 的路由,則把數據報傳送給路由表指明的下一跳路由器;否則,執行(5)。
(5) 若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)。
(6) 報告轉發分組出錯。
七、划分子網:從主機號借用若干個位作為子網號 subnet-id,而主機號 host-id 也就相應減少了若干個位
子網掩碼是一個網絡或一個子網的重要屬性。
對應的路由表發送變化:<目的網絡地址,子網掩碼,下一跳地址>
路由器在收到 IP 數據報后,再按目的網絡號 net-id 和子網號 subnet-id 找到目的子網。
路由器的路由表中的每一個項目,除了要給出目的網絡地址外,還必須同時給出該網絡的子網掩碼。
一個網絡如果不划分子網,路由表中就使用默認子網掩碼,即與網絡號對應。
使用子網時分組的轉發:
(1) 從收到的分組的首部提取目的 IP 地址 D。
(2) 先用各網絡的子網掩碼和 D 逐位相“與”,看是否和相應的網絡地址匹配。若匹配,則將分組直接交付。否則就是間接交付,執行(3)。
(3) 若路由表中有目的地址為 D 的特定主機路由,則將分組傳送給指明的下一跳路由器;否則,執行(4)。
(4) 對路由表中的每一行的子網掩碼和 D 逐位相“與”,若其結果與該行的目的網絡地址匹配,則將分組傳送給該行指明的下一跳路由器;否則,執行(5)。
(5) 若路由表中有一個默認路由,則將分組傳送給路由表中所指明的默認路由器;否則,執行(6)。
(6) 報告轉發分組出錯。
八、構成超網(無分類編制CIDR、無分類域間路由選擇): 解決因特網主干網上的路由表中的項目數急劇增長問題
IP 地址從三級編址(使用子網掩碼)又回到了兩級編址。
例如:CIDR 把網絡前綴都相同的連續的 IP 地址組成“CIDR 地址塊”。
128.14.32.0/20 表示的地址塊共有 2^12 個地址(因為斜線后面的 20 是網絡前綴的位數,所以這個地址的主機號是 12 位)。
這個地址塊的起始地址是 128.14.32.0。
在不需要指出地址塊的起始地址時,也可將這樣的地址塊簡稱為“/20 地址塊”。網絡前綴越長,其地址塊就越小
128.14.32.0/20 地址塊的最小地址:128.14.32.0
128.14.32.0/20 地址塊的最大地址:128.14.47.255
全 0 和全 1 的主機號地址一般不使用。
使用 CIDR 時,路由表中的每個項目由“網絡前綴”和“下一跳地址”組成。在查找路由表時可能會得到不止一個匹配結果。
應當從匹配結果中選擇具有最長網絡前綴的路由:最長前綴匹配;
使用二叉線索查找路由表:使用唯一前綴構建二叉索引,同時每個節點要包含對應網絡前綴和子網掩碼,
用於檢查這個唯一前綴對應的前綴號,是否為要查找的,不是則丟棄該分組,是則轉發該分組。
九、網際控制報文協議 ICMP:
1、目的:為了提高 IP 數據報交付成功的機會
2、實現:ICMP 報文作為 IP 層數據報的數據,加上數據報的首部,組成 IP 數據報發送出去;
3、ICMP 應用舉例:
(1)PING 用來測試兩個主機之間的連通性。
PING 使用了 ICMP 回送請求與回送回答報文。
PING 是應用層直接使用網絡層 ICMP 的例子,它沒有通過運輸層的 TCP 或UDP。
(2)tracert 用來跟蹤一組從源點到終點的路徑,通過依次增加TTL,並返回ICMP 時間超過報文 來實現。
十、路由選擇協議
因特網的規模非常大,把它分為n個小的自治系統(AS),自治系統是在單一技術下管理一組路由器,這些路由器使用本自治系統內部的路由協議和共同的度量。
盡管一個 AS 使用了多種內部路由選擇協議和度量,但重要的是一個 AS 對其他 AS 表現出的是一個單一的和一致的路由選擇策略。
1、因特網有兩大類路由選擇協議:
內部網關協議 IGP (Interior Gateway Protocol) : 即在一個自治系統內部使用的路由選擇協議。目前這類路由選擇協議使用得最多,如 RIP 和 OSPF 協議。
外部網關協議EGP (External Gateway Protocol) : 若源站和目的站處在不同的自治系統中,當數據報傳到一個自治系統的邊界時,就需要使用一種協議將路由選擇信息傳遞到另一個自治系統中。這樣的協議就是外部網關協議 EGP。在外部網關協議中目前使用最多的是 BGP-4。
2、內部網關協議 RIP (Routing Information Protocol):
(1)工作原理:
路由信息協議 RIP 是內部網關協議 IGP中最先得到廣泛使用的協議,但很少被使用。
RIP 是一種分布式的基於距離向量的路由選擇協議。
RIP 協議要求網絡中的每一個路由器都要維護從它自己到其他每一個目的網絡的距離記錄。
2. 距離的定義:
從一路由器到直接連接的網絡的距離定義為 1。
從一個路由器到非直接連接的網絡的距離定義為所經過的路由器數加 1。
RIP 協議中的“距離”也稱為“跳數”(hop count),因為每經過一個路由器,跳數就加 1。
這里的“距離”實際上指的是“最短距離”,
RIP 認為一個好的路由就是它通過的路由器的數目少,即“距離短”。
RIP 允許一條路徑最多只能包含 15 個路由器。“距離”的最大值為16 時即相當於不可達。可見 RIP 只適用於小型互聯網。
RIP 不能在兩個網絡之間同時使用多條路由。RIP 選擇一個具有最少路由器的路由(即最短路由),哪怕還存在另一條高速(低時延)但路由器較多的路由。
3. RIP協議的三個要點:
僅和相鄰路由器交換信息。
交換的信息是當前本路由器所知道的全部信息,即自己的路由表。
按固定的時間間隔交換路由信息,例如,每隔 30 秒。
采用UDP進行傳輸
4. 路由表的建立:
路由器在剛剛開始工作時,只知道到直接連接的網絡的距離(此距離定義為1)。
以后,每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由信息。
經過若干次更新后,所有的路由器最終都會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器的地址。
RIP 協議的收斂(convergence)過程較快,即在自治系統中所有的結點都得到正確的路由選擇信息的過程。
5. RIP的優點:
RIP 協議最大的優點就是實現簡單,開銷較小。
6. RIP的缺點:
1. RIP 限制了網絡的規模,它能使用的最大距離為 15(16 表示不可達)。
2. 路由器之間交換的路由信息是路由器中的完整路由表,因而隨着網絡規模的擴大,開銷也就增加。
3. 當網絡出現故障時,要經過比較長的時間才能將此信息傳送到所有的路由器。因此,RIP算法好消息傳得快,壞消息傳得慢,導致更新過程的收斂時間過長。
3、內部網關協議 OSPF (Open Shortest Path First):開放最短路徑優先
(1)OSPF 是一種分布式的基於鏈路狀態數據庫的路由選擇協議,使用Dijkstra 提出的最短路徑算法來計算路由表的下一跳。
(2)三個要點:
向本自治系統中所有路由器發送信息;
發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分信息。(比RIP 傳送的數據小);
只有當鏈路狀態發生變化時,路由器才用洪泛法向所有路由器發送此信息。(比RIP 定時交換數據合理);
(3)OSPF 的其他特點 :
OSPF 還規定每隔一段時間,如 30 分鍾,要刷新一次數據庫中的鏈路狀態。
由於一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,因而與整個互聯網的規模並無直接關系。因此當互聯網規模很大時,OSPF 協議要比距離向量協議 RIP 好得多。
OSPF 沒有“壞消息傳播得慢”的問題,據統計,其響應網絡變化的時間小於 100 ms。
4、外部網關協議 BGP:邊界網關協議
(1)BGP 是不同自治系統的路由器之間交換路由信息的協議。
(2)邊界網關協議 BGP 只能是力求尋找一條能夠到達目的網絡且比較好的路由(不能兜圈子),而並非要尋找一條最佳路由。
(3)BGP發言人:每一個自治系統的管理員要選擇至少一個路由器作為該自治系統的“ BGP 發言人” 。
(4)一個 BGP 發言人與其他自治系統中的 BGP 發言人要交換路由信息,就要先建立 TCP 連接,然后在此連接上交換 BGP 報文以建立 BGP 會話(session),利用 BGP 會話交換路由信息。
十一、虛擬網絡VPN:在公用網絡上建立專用網絡,進行加密通訊。
1、 本地地址和全球地址:
本地地址——僅在機構內部使用的 IP 地址,可以由本機構自行分配,而不需要向因特網的管理機構申請。
全球地址——全球唯一的IP地址,必須向因特網的管理機構申請。
2、專用地址:
本地地址和全球地址會在因特網上出現二義性,因此規定了專用地址,這些地址的數據報一律不准轉發。
10.0.0.0 到 10.255.255.255
172.16.0.0 到 172.31.255.255
192.168.0.0 到 192.168.255.255
3、 用隧道技術實現虛擬專用網:
十二、路由器的構成
1、路由器是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組。
從路由器的某個輸入端口收到分組,按照分組要去的目的網絡,把分組從路由器的某個合適的輸出端口轉發給下一跳路由器,下一跳路由器重復此操作,直到轉發到終點。
轉發表:包含從要到達的目的網絡到輸出端口和某些MAC地址信息的映射。
2、路由器的轉發分組正是網絡層的主要工作:接受IP數據報--->查表--->轉發
十二、IGMP協議(Internet Group Manage Protocol)
1、概述
IGMP : Internet組管理協議,提供internet網際多點傳送的功能,即將一個ip包拷貝給多個host,windows系列采用了這個協議,因為此項技術尚不成熟,因此被一些人用來攻擊windows系統,尤其是對win98,因為對win95有oob攻擊,受到IGMP攻擊的症狀是首先出現藍屏,然后網速變得極慢,有的甚至鼠標,鍵盤均不管用非得重啟不可。
2、IGMP協議用於多播
廣播:老師在台上講課,你們能隨時看到老師的電腦屏幕,因為采用的廣播,每個人度能接受到老師屏幕上所有的數據包
多播:在一個局域網中,有三個多播組,A、B、C,A在放java視頻,B在放C++視頻,C在放娛樂視頻,如果你想看Java視頻,
那么你就調到A這個多播組中學習java視頻,學習累了,你就可以換到C這個多播組中看看娛樂節目,這就是多播的意思,相對廣播來說,自己需要什么就調什么,而不是跟廣播一樣,被動接受,他播到哪,就只能看到哪,多播能自由控制速度。
單播:50個人想看視頻,就得發送50個數據包。多播的話就發一個,然后通過路由器轉發50分給不同的人。
3、工作過程
