網路層的協定種類,包括:
Internet Protocol version 4 (IPv4):舊的 IP 協定,目前在使用的協定。
Internet Protocol version 6 (IPv6):新的 IP 協定,具有更多的主機位址。
Novell Internetwork Packet Exchange (IPX):已經很少用,或者說
根本用不到。
AppleTalk:麥金塔蘋果電腦上使用。
Connectionless Network Service (CLNS/DECNet)
------------------
IPv4
網路層協定被設計成低消耗(low overhead)。
它提供從一來源到目的傳遞封包在互聯網上
這層協定並沒有被設計成追蹤與管理封包的流量,因為會由其他層的協定完成
IPv4 基本特性:
非連接導向(Connectionless) – 傳送資料封包前沒有連接被建立。
盡力傳輸(Best Effort) – 沒有額外的消耗保證封包的傳輸,但是它也不可靠。
媒體不相依(Media Independent) – 不需靠特定的媒介運作來攜帶資料。
那麼非連接導向到底指的是什麼?
舉例來說就像一封信的寄送,郵局並不需要先通知收件者而把信件送出
非連接導向的工作類似這個原則,IP 封包送出去時,不需通知另一端主機這個封包來了...˙ˇ˙b
與可靠協定的表頭相較, IP 表頭較小,因此需要較少的消耗(overhead)
較小的消耗也意味著傳送時較少的延遲(delay)
IP 通常視為不可靠協定,但不是說它不適合當作資料通訊的協定
不可靠指的是它沒有去管理或復原無法傳送或已損壞之封包的能力
因為其他層會管理可靠的問題,所以 IP 只要非常有效率的在網路層傳送即可
------------------------
IP(Internet Protocal)
Network這層不考慮傳輸的媒介是什麼
不過會考慮一種主要特性,就是每一種媒體最大傳輸PDU是多少
這時就得從MTU(最大傳輸單元 Maximum Transmission Unit)這東西作為依據
因為Data Link Layer會把MTU送到這層(Network)
所以Network Layer決定了要把封包做的多大。
※中間裝置要從一個媒體傳送封包到另一媒體時,將會分割封包成為較小的 MTU(fragmentation)
-------------------
IP Source Address 來源位址:32-bit 二進數值,表示封包的目的地的網路層主機位址
IP Destination Address 目的位址:32-bit 二進數值表示封包的來源的網路層主機位址
Time-to-Live (TTL) 存活時間:
存活時間是一個 8-bit 二進位,表示封包剩餘的可繞送次數
由來源主機發出後,會在此欄位設定一個數值,每經過一顆路由器(此動作稱HOP)就會 -1
當HOP = 0時,會自動丟掉這個封包,因它可能正在無限迴圈式的進行無意義繞送
這個機制是為了預防無效的封包在網路上佔用太多時間造成擁塞。
Type-of-Service (ToS) 服務的型態:8-bit 二進位數值,用來決定每個封包的優先權(同時啟動Qos)
Fragment Offset (碎片位移):像前面所說的,封包從一媒體到另一種媒體時可能切成較小的 MTU
fragmentation 的情形發生時,IPv4封包使用碎片位移欄位以及MF旗標、表頭以在目的地上重建封包
而這些碎片位移可依據封包碎片的位置與順序,或者標上的序號重組。
---------------
網路分割
IP 為基礎的網路中,大的網路會被切割成較小的互聯網
這個較小的網路通常稱為子網路(subnets)
切割子網路可能會依據某些考量,包括:
Geographic location (地理位置):東西南北辦公室
Purpose (目的):依業務工作性質
Ownership (擁有者):例如在不同樓層的管理者
大網路的共同問題:
1. 效能降低:
最顯著的問題就是網路廣播(broadcasts)的消耗。主機要查詢未知主機就會送出廣播
每個主機都會收到並處理廣播因此廣播是必須的,但是大量的主機在廣播就會造成頻寬的消耗。
2. 安全議題(Security issues):
不同子網路給於不同存取內部或外部的權限
網路間的安全可以靠中間裝置 (router 或 firewall )來達成。
3. 位址管理(Address Management):
網路上有多少台電腦? 掐指一算也能有個幾千甚至幾百萬的數字吧?
子網路間直接可以通訊,若是目的地位址是在不同子網路,主機只要知道路由器的位址
將資料往中間裝置送就可以,這個稱為閘道(gateway)
通常是一台路由器管控網路的進出,而平均一個路由器就能管控數十個子網路。
------------------
網路部份(network portion)的bit數稱為
前綴長度(prefix length)
若一個網路使用24bits表示位址,那麼其前綴被稱為 /24
在 IPv4網路中,網路前綴會被表示成子網路遮罩(subnet mask)
例如:255.255.255.0 (即 11111111.11111111.11111111.00000000)
---------------
再來是網路的預設閘道,對外通訊或者連接ISP都必須經過這裡
每一個主機必須有一個預設閘道(default gateway)位址
閘道的位址就是在這網路中最靠近且已連接的路由器介面IP 位址
與其他子網路通訊時,就會透過此IP將封包轉出
而路由器中會有一個路由表,路由表中的每一條路徑(route)
告知了封包如何轉送到一下個位址(next-hop address),這個位址可能是另一台路由器
※目的地主機與來源主機在相同網路上,封包只會在本地的媒介(交換器之類),而不會用到路由器
※目的地主機與來源主機的IP在路由器上繞送的資料永遠不會變
----------------------
主機也會建立繞送表以轉送封包
它會自動加上所有直接連接的網路到路徑表中以及一條預設閘道路徑(圖中紅色)
DOS模式中執行 netstat -r、route或route PRINT 命令可以顯示主機上的路徑表
只要有設定預設閘道,就會出現 0.0.0.0 0.0.0.0 xxx.xxx.xxx.xxx 這一條預設路徑
此路徑負責將封包送到外部網路(outside network)
這裡的xxx.xxx.xxx.xxx 就是 Gateway 的 IP
-------------------------
路由器會將直接連接的網路路徑(子網路網段)加入路由表當中
其他的路徑訊息則必須透過管理者自行建立(靜態路由)或由繞送協定自行學習產生(動態路由)
路由表中的路徑有三個重要的欄位:
1. Destination network (目的地網路)
2. Next-hop (下一跳)
3. Metric(權值)
路由器會比對封包表頭中的目的地位址與路由表中的目的地網路是否相符
相符就送往下一跳(Via xxx.xxx.xxx.xxx)到其他的網段。
※若路由表中沒有符合的路徑就丟棄封包或者轉送到預設路由
常見的動態繞送協定:
Routing Information Protocol
(RIP)
Enhanced Interior Gateway Protocol
(EIGRP):Cisco獨有的協定
Open Shortest Path First
(OSPF)
動態繞送協定雖然可以更新路由表
但是路徑訊息交換時會產生頻寬消耗的成本,特別是在路由器間為低頻寬時
其次,路由器在處理計算這些路徑資訊時
必須要有充足的處理演算的能力(CPU消耗),又要負責轉送封包
靜態繞送則不會產生額外的消耗,因為其成本為管理性的
也就是管理者必須手動設定與維護路由表,工程浩大,故靜態僅適用區域網路或小型網路。