計算機網絡(四)網絡層
- 一、概述和功能
- TCP/IP協議棧
- IP數據報格式
- IP數據報分片
- 二、ipv4
- 網絡地址轉換(NAT)
- 子網劃分
- 子網掩碼
- ARP協議(地址解析協議)
- DHCP協議
- ICMP協議
- 二、ipv6
- ipv4和ipv6的區別
- IPv6基本地址類型
- IPv6向IPv4過渡的策略
- 三、路由算法及路由協議
- 內部網關協議IGP
- RIP(距離向量路由算法)
- RIP特點
- 距離向量算法
- OSPF協議
- 特點
- 鏈路狀態路由算法
- OSPF的區域
- 外部網關協議(EGP)
- BGP協議
- BGP協議報文格式
- BGP協議特點
- BGP-4的四種報文
- 三種路由協議比較
- 四、IP組播
- IP組播地址
- 硬件組播
- IGMP協議
- 組播路由選擇協議
一、概述和功能
主要任務是把分組從源端傳到目的端,為分組交換網上的不同主機提供通信服務。
網絡層傳輸單位是數據報
功能一:路由選擇與分組轉發
功能二:異構網絡互聯
功能三:擁塞控制(方法一:開環控制 方法二:閉環控制)
TCP/IP協議棧
IP數據報格式
版本:指IP的版本
首部長度:占4位,以32位為單位,最大60B,常用首部20B
總長度:占16位,指首部和數據之和的長度,單位1B
標識:占16位,它是一個計數器,每產生一個數據包+1,并賦值給標識字段。當數據報的長度超過網絡的MTU時,必須分片。
標志:占3位,標志字段最低位位MF,MF=1標識后面還有分片,MF=0標識最后一個分片。
片偏移:占13位,指較長的分組分片后,某片在分組的位置
首部檢驗和:占16位,IP數據報的首部檢驗和分組中的首部
生存周期(TTL):占8位,數據報在網絡中通過的路由器數的最大值,確保分組不會永遠在網絡中循環
協議:占8位,指出此分組攜帶的哪種協議。
源地址字段:占4B,發送方的ip地址
目的地址字段,4B,接收方的ip地址
IP數據報分片
以太網的MTU是1500字節。超過需要進行分片。
二、ipv4
IP地址:全世界唯一的32位/4字節標識符,標識路由器主機的接口。
IP地址={<網絡號>,<主機號>}
特殊IP地址:
私有IP地址:
分類的IP地址
網絡地址轉換(NAT)
網絡地址轉換NAT(Network Address Translation):在專用網連接到因特網的路由器上安裝NAT軟件,安裝了NAT軟件的路由器叫NAT路由器,它至少有一個有效的外部全球IP地址。
子網劃分
分類的IP地址的弱點:
1.IP地址空間的利用率有時很低。
2.兩級IP地址不夠靈活
子網掩碼
已知IP地址是141.14.72.24,子網掩碼是255.255.192.0,求網絡地址。如果子網掩碼是255.255.224.0,求網絡地址
77的二進制:01001011
子網掩碼:11111100
廣播要全為1,選C
路由器轉發分組的算法:
1)從收到的分組的首部提取目的IP地址,記為D.
2)先判斷是否為直接交付。對路由器直接相連的網絡逐個進行檢查:用各網絡的子網掩碼
和D逐位相“與”,看結果是否和相應的網絡地址匹配。若匹配,則將分組直接交付,否
則間接交付,執行步驟3)。
3)若路由表中有目的地址為D的特定主機路由,則將分組傳送給路由表中所指明的下一-跳
路由器;否則,執行4)。
4)對路由表中的每一行(目的網絡地址、子網掩碼、下一跳地址)中的子網掩碼和D逐位
相“與”,其結果為N。若N與該行的目的網絡地址匹配,則將分組傳送給該行指明的下
跳路由器; 否則,執行步驟5)。
5)若路由表中有一個默認路由,則將分組傳送給路由表中所指明的默認路由器:否則,執
行步驟6)。
6)報告轉發分組出錯。
ARP協議(地址解析協議)
由于在實際網絡的鏈路上傳送數據幀時,最終必須使用MAC地址。
ARP協議使用過程:
檢查ARP高速緩存,有對應表項則寫入MAC幀,沒有則用目的MAC地址為FF-FF-FF-FF-FF-FF的幀封裝并廣播ARP請求分組,同一局域網中所有主機都能收到該請求。目的主機收到請求后就會向源主機單播一個ARP響應分組,源主機收到后將此映射寫入ARP緩存(10-20min更新一次)。
ARP協議4種典型情況:
1.主機A發給本網絡上的主機B:用ARP找到主機B的硬件地址;
2.主機A發給另一網絡上的主機B:用ARP找到本網絡上一個路由器(網關)的硬件地址;
3.路由器發給本網絡的主機A:用ARP找到主機A的硬件地址;
4.路由器發給另一網絡的主機B:用ARP找到本網絡上的一個路由器的硬件地址。
DHCP協議
動態主機配置協議DHCP是應用層協議,使用客戶/服務器方式,客戶端和服務端通過廣播方式進行交互,基于UDP。
DHCP提供即插即用聯網的機制,主機可以從服務器動態獲取IP地址、子網掩碼、默認網關、DNS服務器名稱與IP地址,允許地址重用,支持移動用戶加入網絡,支持在用地址續租。
1.主機廣播DHCP發現報文
2.DHCP服務器廣播DHCP提供報文
3.主機廣播DHCP請求報文
4.DHCP服務器廣播DHCP確認報文
ICMP協議
ICMP差錯報告報文(5種):
1.終點不可達:當路由器或主機不能交付數據報時就向源點發送終點不可達報文。
2.源點抑制:當路由器或主機由于擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送速率放慢。
3.時間超過:當路由器收到生存時間TTL=0的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把已收到的數據報片都丟棄,并向源點發送時間超過報文。
4.參數問題:當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,并向源點發送參數問題報文。
5.改變路由(重定向):路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)。
不應發送ICMP差錯報文的情況:
1.對ICMP差錯報告報文不再發送ICMP差錯報告報文。
2.對第一個分片的數據報片的所有后續數據報片都不發送ICMP差錯報告報文。
3.對具有組播地址的數據報都不發送ICMP差錯報告報文。
4.對具有特殊地址(如127.0.0.0或0.0.0.0)的數據報不發送ICMP差錯報告報文。
ICMP詢問報文:
1.回送請求和回答報文:主機或路由器向特定目的主機發出的詢問,收到此報文的主機必須給源主機或路由器發送ICMP回送回答報文。測試目的站是否可達以及了解其相關狀態。
2.時間戳請求和回答報文:請某個主機或路由器回答當前的日期和時間。用來進行時鐘同步和測量時間。
二、ipv6
ipv4和ipv6的區別
1.IPv6將地址從32位(4B)擴大到128位(16B),更大的地址空間。
2.IPv6將IPv4的校驗和字段徹底移除,以減少每跳的處理時間。
3.IPv6將IPv4的可選字段移出首部,變成了擴展首部,成為靈活的首部格式,路由器通常不對擴展首部進行檢查,
大大提高了路由器的處理效率。
4.IPv6支持即插即用(即自動配置),不需要DHCP協議。
5.IPv6首部長度必須是8B的整數倍,IPv4首部是4B的整數倍。
6.IPv6只能在主機處分片,IPv4可以在路由器和主機處分片。
7.ICMPv6:附加報文類型“分組過大”。
8. IPv6支持資源的預分配, 支持實時視像等要求,保證一定的帶寬和時延的應用。
9.IPv6取消了協議字段,改成下一個首部字段。
10.IPv6取消了總長度字段,改用有效載荷長度字段。
11.IPv6取消了服務類型字段
IPv6基本地址類型
單播:一對一通信,可做源地址+目的地址
多播:一對多通信,可做目的地址
任播:一對多的一個通信,可做目的地址
IPv6向IPv4過渡的策略
雙棧協議:雙協議棧技術就是指在一臺設備上同時啟用IPv4協議棧和IPv6協議棧。這樣的話,這臺設備既能和IPv4網絡通信,又能和IPv6網絡通信。如果這臺設備是一個路由器,那么這臺路由器的不同接口上,分別配置了IPv4地址和IPv6地址,并很可能分別連接了IPv4網絡和IPv6網絡。如果這臺設備是一個計算機,那么它將同時擁有IPv4地址和IPv6地址,并具備同時處理這兩個協議地址的功能。
隧道技術 :通過使用互聯網絡的基礎設施在網絡之間傳遞數據的方式。使用隧道傳遞的數據(或負載)可以是不同協議的數據幀或包。隧道協議將其它協議的數據幀或包重新封裝然后通過隧道發送。
三、路由算法及路由協議
內部網關協議IGP
路由器間彼此交換信息,按照路由算法優化出路由表項
路由更新快,適用大型網絡,及時響應鏈路費用或網絡拓撲變化。算法復雜,增加網絡負擔。
RIP(距離向量路由算法)
RIP是一種分布式的基于距離向量的路由選擇協議,是因特網的協議標準,最大優點是簡單。
RIP協議要求網絡中每一個路由器都維護從它自己到其他每一個目的網絡的唯一最佳距離記錄(即一組距離)。
距離:通常為“跳數”,即從源端口到目的端口所經過的路由器個數,經過一個路由器跳數+1。特別的,從一路由器到直接連接的網絡距離為1。RIP允許一條路由最多只能包含15個路由器,因此距離為16表示網絡不可達。
RIP特點
1.僅和相鄰路由器交換信息
2.路由器交換的信息是自己的路由表
3.每30秒交換一次路由信息,然后路由器根據新信息更新路由表。若超過180s沒收到鄰居路由器的通告,則判定鄰居沒了,并更新自己路由表
距離向量算法
對于每個相鄰路由器發過來的RIP報文,具體步驟:
1.修改相鄰路由器發來的RIP報文中所有表項,對地址為X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把“下一跳”字段中的地址改為X,并把所有的“距離”字段+1。
2.對修改后的RIP報文中的每一個項目,進行以下步驟:
- (1)R1路由表中若沒有Net3,則把該項目填入R1路由表
- (2)R1路由表中若有Net3,則查看下一跳路由器地址:
若下一跳是X,則用收到的項目替換源路由表中的項目;
若下一跳不是X, 原來距離比從X走的距離遠則更新,否則不作處理。
3.若180s還沒收到相鄰路由器X的更新路由表,則把X記為不可達的路由器,即把距離設置為16。
4.返回
例題:
已知路由器R6的路由表,現收到相鄰路由器R4發來的路由更新信息,試更新路由器R1的路由表:
RIP協議是好消息傳得快,壞消息穿得慢
假設網1發生故障,R1路由器更新路由表 1 16 _ 表示網1不可到達,R2要發消息給網1,R1接收到了R2發來得RIP報文,修改R2得RIP報文 1 3 R2,與自己的1 16 _比較發現,可以通過R2到達網1實際上不能的,最后雙方不斷發RIP報文更新到16,不可達。
OSPF協議
特點
1.使用洪泛法向自治系統內所有路由器發送信息,即路由器通過輸出端口向所有相鄰的路由器發送信息,而每一個相鄰路由器又再次將此信息發往其所有的相鄰路由器
2.發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態
3.只有當鏈路狀態發生變化時,路由器才向所有路由器洪泛發送此信息。
最后,所有路由器都能建立一個鏈路狀態數據庫,即全網拓撲圖。
1.每隔30min,要刷新一次數據庫中的鏈路狀態。
2.由于一個路由器的鏈路狀態只涉及到與相鄰路由器的連通狀態,因而與整個互聯網的規模并無直接關系。因此當互聯網規模很大時,OSPF 協議要比距離向量協議 RIP 好得多。
3.OSPF不存在壞消息傳的慢的問題,它的收斂速度很快。
鏈路狀態路由算法
1.每個路由器發現它的鄰居結點【HELLO問候分組】,并了解鄰居節點的網絡地址。
2.設置到它的每個鄰居的成本度量metric。
3.構造【DD數據庫描述分組】,向鄰站給出自己的鏈路狀態數據庫中的所有鏈路狀態項目的摘要信息。
4.如果DD分組中的摘要自己都有,則鄰站不做處理;如果有沒有的或者是更新的,則發送【LSR鏈路狀態請求分組】
請求自己沒有的和比自己更新的信息。
5.收到鄰站的LSR分組后,發送【LSU鏈路狀態更新分組】進行更新。
6.更新完畢后,鄰站返回一個【LSAck鏈路狀態確認分組】進行確認。
只要一個路由器的鏈路狀態發生變化:
5.泛洪發送【LSU鏈路狀態更新分組】進行更新。
6.更新完畢后,其他站返回一個【LSAck鏈路狀態確認分組】進行確認。
7.使用Dijkstra根據自己的鏈路狀態數據庫構造到其他節點間的最短路徑
OSPF的區域
為了使 OSPF 能夠用于規模很大的網絡,OSPF 將一個自治系統再劃分為若干個更小的范圍,叫做區域。每一個區域都有一個 32 位的區域標識符(用點分十進制表示)。區域也不能太大,在一個區域內的路由器最好不超過 200 個
外部網關協議(EGP)
BGP協議
BGP 所交換的網絡可達性的信息就是要到達某個網絡所要經過的一系列 AS。當 BGP 發言人互相交換了網絡可達性的信息后,各 BGP 發言人就根據所采用的策略從收到的路由信息中找出到達各 AS 的較好路由。
BGP協議報文格式
一個 BGP 發言人與其他自治系統中的 BGP 發言人要交換路由信息,就要先建立 TCP 連接,即通過TCP傳送,然后在此連接上交換 BGP 報文以建立 BGP 會話(session),利用 BGP 會話交換路由信息。
BGP協議特點
BGP 支持 CIDR,因此 BGP 的路由表也就應當包括目的網絡前綴、下一跳路由器,以及到達該目的網絡所要經過的各個自治系統序列。
在 BGP 剛剛運行時,BGP 的鄰站是交換整個的 BGP 路由表。但以后只需要在發生變化時更新有變化的部分。這樣做對節省網絡帶寬和減少路由器的處理開銷都有好處。
BGP-4的四種報文
1.OPEN(打開)報文:用來與相鄰的另一個BGP發言人建立關系,并認證發送方。
2.UPDATE(更新)報文:通告新路徑或撤銷原路徑。
3.KEEPALIVE(保活)報文:在無UPDATE時,周期性證實鄰站的連通性;也作為OPEN的確認。
4.NOTIFICATION(通知)報文:報告先前報文的差錯;也被用于關閉連接。
三種路由協議比較
RIP是一種分布式的基于距離向量的內部網關路由選擇協議,通過廣播UDP報文來交換路由信息。
OSPF是一個內部網關協議,要交換的信息量較大,應使報文的長度盡量短,所以不使用傳輸層協議(如UDP
或TCP),而是直接采用IP。
BGP是一個外部網關協議,在不同的自治系統之間交換路由信息,由于網絡環境復雜,需要保證可靠傳輸,所
以采用TCP。
四、IP組播
當網絡中的某些用戶需要特定數據時,組播數據發送者僅發送一次數據,借助組播路由協議為組播數據包建立組播分發樹,被傳遞的數據到達距離用戶端盡可能近的節點后才開始復制和分發,是一種點對多點傳輸方式。
IP組播地址
IP組播地址讓源設備能夠將分組發送給一組設備。屬于多播組的設備將被分配一個組播組IP地址(一群共同需求主機的相同標識)。
組播地址范圍為224.0.0.0~239.255.255.255(D類地址),一個D類地址表示一個組播組。只能用作分組的目標地址。源地址總是為單播地址。
1.組播數據報也是“盡最大努力交付”,不提供可靠交付,應用于UDP。
2.對組播數據報不產生ICMP差錯報文。
3.并非所有D類地址都可以作為組播地址。
硬件組播
同單播地址一樣,組播IP地址也需要相應的組播MAC地址在本地網絡中實際傳送幀。組播MAC地址以十六進制值01-00-5E打頭,余下的6個十六進制位是根據IP組播組地址的最后23位轉換得到的
IGMP協議
1.某主機要加入組播組時,該主機向組播組的組播地址發送一個IGMP報文,聲明自己要稱為該組的成員。本地組播路由器收到IGMP報文后,要利用組播路由選擇協議把這組成員關系發給因特網上的其他組播路由器
2.本地組播路由器周期性探詢本地局域網上的主機,以便知道這些主機是否還是組播組的成員。只要有一個主機對某個組響應,那么組播路由器就認為這個組是活躍的;如果經過幾次探詢后沒有一個主機響應,組播路由器就認為本網絡上的沒有此組播組的主機,因此就不再把這組的成員關系發給其他的組播路由器。
組播路由選擇協議
組播路由協議目的是找出以源主機為根節點的組播轉發樹。構造樹可以避免在路由器之間兜圈子。對不同的多播組對應于不同的多播轉發樹;同一個多播組,對不同的源點也會有不同的多播轉發樹。