510 likes | 644 Views
第 8 章. IP 基礎與定址. IP 的基礎. IP (Internet protocol 網際網路協定 ) 位於 DoD 模型的網路層。 對上可載送傳輸層各種協定的資訊,例如: TCP 、 UDP 等等。 對下可將 IP 封包放到鏈結層,透過乙太網路、訊標環等各種技術來傳送。 提供之服務歸納成兩項 IP 封包的傳送 IP 封包的切割與重組. 傳送 IP 封包 --IP 定址. IP 負責網路之間訊息傳送之協定,將 IP 封包從來源裝置傳送到目的裝置,依賴以下兩種機制: IP 定址 IP 位址如同現實生活中的地址。
E N D
第 8 章 IP基礎與定址
IP的基礎 • IP (Internet protocol網際網路協定)位於DoD模型的網路層。 • 對上可載送傳輸層各種協定的資訊,例如:TCP、UDP等等。 • 對下可將IP封包放到鏈結層,透過乙太網路、訊標環等各種技術來傳送。 • 提供之服務歸納成兩項 • IP封包的傳送 • IP封包的切割與重組
傳送IP封包--IP定址 • IP負責網路之間訊息傳送之協定,將IP封包從來源裝置傳送到目的裝置,依賴以下兩種機制: • IP定址 • IP位址如同現實生活中的地址。 • 所有使用IP的裝置,至少都必須有一個獨一無二的IP位址,IP封包才能正確送達目的裝置。 • 負責分派IP位址的最高機構為Internet Corporation for Assigned Names and Numbers (ICANN, http://www.icann.org/)。 • ICANN依地區與國家,授權給公正的單位來執行IP位址分派的工作。 • 台灣是由財團法人臺灣網路資訊中心(TWNIC, http://www.twnic.net/)負責。
傳送IP封包—IP路由(1/2) • IP路由:Internet可視為由許多個網路連結起來所形成的大型網路。必須透過IP路由(IP Routing)的轉送,才能將IP封包經過一個個的網路,送達目的地
傳送IP封包—IP路由(2/2) • 路由器(Router) • 在實體上,每個網路是透過路由器來相互連接。 • 路由器的功能是為IP封包選擇傳送的路徑。 • IP封包必須靠沿途各路由器合作才能到達目的地。 • IP路由的過程中,是由路由器負責選擇路徑,而IP封包則是處於被動的狀態。 • 非連接式(Connectionless)的傳送特性 • IP封包使用Connectionless傳送方式。 • Connectionless:傳送封包前不用事先知會接收端,如寫信 • Connection-Oriented:傳送封包前需與接收端先建立連線 • 來源裝置不必理會目的裝置是否已準備好,只管將IP封包逐一送出即可。 • 目的裝置是否正確收到每個封包,則是由上層的協定(例如:TCP)來負責檢查
切割與重組IP封包 • 路由器必須將過長的封包加以切割,以便能在MTU較小的網路上傳輸。 • 切割後的IP封包,會由目的裝置重組,恢復成原來IP封包的模樣。(不在中間的路由器重組) • 每一種Data Link層的技術,都有其所能傳輸的最大封包長度(MTU, Maximum Transmission Unit)
IP封包 • IP表頭: • 記錄有關IP位址、路由、封包識別等資訊。長度為4 Bytes的倍數,最短為20 Bytes,最長可達60 Bytes。 • IP Payload: • 載送上層協定的封包。長度最短為8 Bytes,最長可達65515 Bytes。
IP封包的包裝 • IP對上可接受Transport層協定所交付的封包,形成IP Payload: • 對下則將整個IP封包交付給Data Link層的協定,包裝後直接在介質上傳送:
IP封包表頭中的重要資訊(1/2) • Destination Address (目的位址) • 記錄目的端的IP位址,路由時需用 • Source Address (來源位址) • 若目的端要回覆需用到這個資訊 • Protocol (協定) • 記錄上層所使用的協定。 • Identification (識別碼) • 識別碼由來源裝置決定,按照IP封包發出的順序遞增1。 • 每個IP封包到達目的裝置的先後順序可能與出發時的順序不同。目的裝置可利用此欄位,判斷IP封包原來的順序,並予以重組。
IP封包表頭中的重要資訊(2/2) • 切割與重組相關資訊 • 因傳送過程IP封包可能被切割,到終端再重組,而相關資訊即存在表頭的這些欄位 • 存活時間(Time to Live,TTL) • 記錄IP封包的存活時間,以限制IP封包在路由器之間轉送的次數。 • 當IP封包每經過一部路由器時,路由器便會將Time to Live欄位值減1。 • 當路由器收到此欄位值為1的IP封包時,便直接將之丟棄,不再轉送 • 一般不會收到TTL=0的封包,除非發生錯誤,若有收到以錯誤處理,所以會丟棄
擷取IP封包(1/4) • 以一個FTP協定的封包作為範例:
擷取IP封包(2/4) 1. Version:4代表此IP封包的版本為IPv4。 2. Header Length:IP表頭的長度為20 Bytes。 3. Precedence:優先等級為Routine,即最低的等級。 4. Type of Service:Normal Service代表Delay、Throughput、Reliability、Cost等欄位皆設為Normal。 5. Total Length:IP封包的長度。因為此例是在乙太網路上傳送的IP封包,因此長度為1500 Bytes。
擷取IP封包(3/4) 6. Identification:此IP封包的識別碼。 7.此為More Fragments欄位。因為是未經切割的IP封包,因此為0。 8.此為Don‘t Fragments欄位。1代表傳送過程中不可切割。 9.因為未經切割,所以Fragment Offset為0。 10. Windows 2000預設的Time to Live為128。當IP封包通過路由器時,Time to Live欄位值會遞減1。
擷取IP封包(4/4) 11.記錄Transport層所用的協定。FTP使用的是TCP協定。 12.這是錯誤檢查碼。每個IP封包可能會有不同的錯誤檢查碼。 13. IP封包來源裝置的IP位址。 14. IP封包目的裝置的位址。 15.這並非IP表頭的欄位,而是網路監視器自行計算所得的IP Payload長度。
IP封包的3種傳遞模式(1/3) • 依據目的裝置的不同,IP總共有3種傳遞模式 • Unicast • 一對一的傳遞模式,主要在Internet使用。 • 只有目的裝置會收到此IP封包。
IP封包的3種傳遞模式(2/3) • Broadcast • 一對多的傳遞,稱為『廣播』封包。 • 該網路內的所有裝置都會收到
IP封包的3種傳遞模式(3/3) • Multicast群播 • 介於Unicast與Broadcast間的傳送方式。 • 可將封包傳送給『一群』指定的裝置。 • 沿途路由器需支援相關協定才行
IP位址表示法 • 本質上是一個長度為32 Bits的二進位數值,看起來就是一長串的0或1 • 一般表成帶點之十進制以利閱讀 • 以8 Bits為單位,將IP位址分成4段 • 將各段的二進位數值轉換成十進位,再以『.』隔開
IPv4與IPv6 • IPv4位址由32 Bits組成,理論上會有232 = 4294967296 (約43億)種組合,但目前已快不夠用了。 • 下一版的IP規格─IPv6,其IP位址由128 Bits所組成,2128可說是天文數字,提供了非常充裕的IP位址空間。
IP位址的結構 • 網路位址(Network ID) • 位於IP位址的前端,用來識別所屬的網路。 • 同一網路上的裝置,都會有相同的網路位址 • IP路由便是依據IP位址的網路位址決定要將IP封包送至哪個網路。 • 主機位址(Host ID) • 位於IP位址的後端用來識別網路上個別裝置。 • 同一網路上的裝置是以主機位址來做區別。
IP位址的等級(Class) • 為了符合不同網路規模的需求,便依據Network ID的長度,劃分IP位址等級。 • 由第一個0所出現的位置可知何種類別(等級) • 共分為5種等級(Class)。一般用到的是Class A、B、C這三種等級的IP位址。
Class A • Network ID長度為8 Bits。 • 可用的Host ID有224 = 16777216個。 • 只有國家或特殊單位,會分配到Class A的IP位址。
Class B • Network ID的長度為16 Bits。 • IP位址介於128.x.y.z與191.x.y.z之間。 • 可用的Host ID有216 = 65536個。 • 通常分配給一些跨國企業或ISP使用。
Class C • Network ID的長度為24 Bits。 • IP位址介於192.x.y.z與223.x.y.z之間。 • 可運用的Host ID有28 = 256個。 • 通常用來分配給一些小型企業。
特殊的IP位址 • Network ID全為0代表『本網路』。 • Host ID全為0用來識別網路。 • Network ID與Host ID皆為0代表裝置本身。皆為1則稱為Local廣播封包。 • Host ID全為1代表網路中全部裝置。 • 除前導位元外,其餘的Network ID位元皆設為1,代表『Loopback』位址 • 有些網路雖然使用TCP/IP的協定組合,但不會與Internet相連。因此設計了Private (私人) IP位址,讓這些網路使用 • Class A: 10.0.0.0—10.255.255.255 • Class B: 172.16.0.0—172.31.255.255 • Class C: 192.168.0.0—192.168.255.255
Loopback位址 • 表示繞回來、不得出去的IP位址。 • 主要用來測試本機電腦上的TCP/IP。 • 此時IP封包不送到實體的網路上,而是送給系統的Loopback Driver來處理。 • 例如127.0.0.1。
子網路(Subnet) • 將同一個IP位址等級的網路再切割成數個子網路,如此網路規模較小,避免降低網路效能。 • 切割後的子網路可正常與其他網路互相連接。
切割子網路的原理 • 讓每個Subnet擁有一個獨一無二的Subnet ID,以便路由器能識別這些切割出來的Subnet。 • 從Host ID『借用』前面幾個Bit,作為Subnet ID。 • 一般習慣與建議是用前面幾個位元,但原標準並未規定
子網路遮罩 • 切割子網路後,路由器無法從前導位元來識別Network ID。 • 子網路遮罩(Subnet Mask)讓路由器能判斷IP位址中哪幾個位元為Network ID,哪幾個位元為Host ID。
子網路遮罩的特性(1/2) • 子網路遮罩(Subnet Mask)長度為32 Bits,與IP位址的長度相同。 • 必須由連續的1,加上連續的0所組成。 • 會轉成十進位以方便閱讀。
子網路遮罩的特性(2/2) • 必須與IP位址配對使用才有意義。 亦可這樣表示 『/』前面是正常的IP表示法,『/』後面的數字21則代表Subnet Mask中1的數目。
子網路切割實例 • 可用的IP位址範圍,要切成4個子網路 • 計算得子網路遮罩 • 一般子網路IP不使用全0或全1,除了一些可辦識全0的特殊路由器外
子網路注意事項 • 內部網路的路由器上要設定子網路的路由記錄(路由表),以便路由器轉送。 • 子網路可再切割成更小的子網路。 • 子網路切割時所作的設定,都是在內部網路。遠端的網路或路由器並不需知道您的網路是如何切割子網路。
無等級的IP位址 • Classless Inter-Domain Routing (CIDR),即Classless (無等級)的IP位址劃分方式 • 超網路(Supernet)的原理。 • 合併Class C的IP位址,挪給Class B使用 • 超網路與子網路的異同 • 異:子網路將較大之網路分成數個較小之網路,超網路則是將數個較小網路合成一個較大網路。 • 同:皆使用mask來區分Network ID與Host ID。
網路位址轉譯的架構(1/3) • 網際網路的裝置需有唯一獨特的位址,因裝置日漸增多而使IP位址不足 • 網路位址轉譯(NAT, Network Address Translation)讓多個裝置共用一個合法之IP位址 • 內部網路使用私人IP位址,透過一個合法的IP位址經專線或撥接(只要是對外連線皆可,乙太網路亦可)與外界連線
網路位址轉譯的原理(1/2) 送出封包時 收入封包時
網路位址轉譯的原理(2/2) • 送出封包時 • 使用私人IP的電腦送到NAT伺服器 • NAT伺服器將來源位址轉為合法位址 • 為區別不同之內部主機(與應用程式),給定不同TCP/UDP之連接埠,然後送出 • 收入封包時 • 根據埠號找出對應之私人位址(及埠號)取代收入封包之目的位址 • 送至區域網路,則原送出之主機便會收入
NAT的運作方式(1/3) • 以向某一Web伺服器要求資料為例
NAT的運作方式(2/3) • 用戶端向Web伺服器要求網頁,封包含 • 目的位址= 203.74.253.1 (Web伺服器) • 來源位址= 192.168.0.200 (NAT用戶端) • 目的連接埠= 80 (Web伺服器預設連接埠) • 來源連接埠= 5000 (由應用程式自行決定) • NAT伺服器收到用戶端要求用本機的某個連接埠來對應用戶端的IP位址與來源連接埠,然後產生新封包含 • 目的位址= 203.74.253.1 (Web伺服器) • 來源位址= 63.192.168.1 (NAT主機) • 目的連接埠= 80 (Web伺服器預設連接埠) • 來源連接埠= 6000 (由NAT主機自行決定)
NAT的運作方式(3/3) • Web傳回網頁資料,封包含 • 目的位址= 63.192.168.1 (NAT主機) • 來源位址= 203.74.253.1 (Web伺服器) • 目的連接埠= 6000 • 來源連接埠= 80 • NAT主機收到封包發現目的連接埠6000對應到192.168.0.200這個位址及5000這個連接埠,於是產生新封包含 • 目的位址= 192.168.0.200 (NAT用戶端) • 來源位址= 203.74.253.1(Web伺服器) • 目的連接埠= 5000 (用戶端應用程式的連接埠) • 來源連接埠= 80
網路位址轉譯的注意事項 • 無法使用某些加密協定 • 因某些加密協定會改變表頭,使NAT伺服器無法正確做轉換 • 增加伺服器的運算負擔 • 因需要持續紀錄埠號與位址對應關係,多個私人位址的電腦同時使用時很耗資源 • 外界主動存取時,設定較為複雜 • 剛才運作是以內部往外部送為例,但若外部網際網路主機要存取內部網路主機,因無紀錄可查詢,NAT伺服器便不知該送給誰
在NAT環境架設Web伺服器 • 若要外部可存取內部需手動設定轉譯機制 • 以Web server為例,可在主機設定80對應192.168.0.100:8080,指定收到特定連接埠80的封包,一律轉送到Web伺服器(192.168.0.100)的指定連接埠(8080)