基礎網絡概念(三)TCP/IP協議、IP、Netmask、子網、CIDR、路由概念

聲明:本文爲筆者複習計算機網絡相關知識時的摘錄,文章中的圖片及語句均出自《鳥哥的Linux私房菜》,這裏僅作爲整理自用。

喜歡鳥哥文章的朋友可以到鳥哥的主頁查看:http://linux.vbird.org/


TCP/IP 的網絡層相關封包與數據
我們現在知道要有網絡的話,必須要有網絡相關的硬件,而目前最常見的網絡硬件接口爲以太網絡,包括網絡線、網絡卡、Hub/Switch 等等。而以太網絡上面的傳輸使用網絡卡卡號爲基準的 MAC 訊框,配合 CSMA/CD 的標準來傳送訊框,這就是硬件部分
在軟件部分,我們知道 Internet 其實就是 TCP/IP 這個通訊協議的通稱, Internet 是由 InterNIC(注 12) 所統一管理的,  但其實他僅是負責分配 Internet 上面的 IP 以及提供相關的 TCP/IP 技術文件而已。不過 Internet 最重要的就是 IP 啊!所以,  這個小節就讓我們來講講網絡層的 IP 與路由吧!

IP 封包可以達到 65535 bytes 這麼大,在比 MAC 大的情況下,我們的操作系統會對 IP 進行拆解的動作:


Time To Live(TTL, 存活時間)
表示這個 IP 封包的存活時間,範圍爲 0-255。當這個 IP 封包通過一個路由器時, TTL 就會減一,當 TTL 爲 0 時,這個封包將會被直接丟棄。說實在的,要讓 IP 封包通過 255 個路由器,還挺難的~ ^_^
Protocol Number(協定代碼)
來自傳輸層與網絡層本身的其他數據都是放置在 IP 封包當中的,我們可以在IP 表頭記載這個 IP 封包內的數據是啥,  在這個字段就是記載每種數據封包的內容啦!在這個字段記載的代碼與相關的封包協議名稱如下所示:

當然啦,我們比較常見到的還是那個 TCP, UDP, ICMP 說!
Source Address
還用講嗎?當然是來源的 IP 地址,從這裏我們也知道 IP 是 32 位喔!
 Destination Address
有來源還需要有目標才能傳送,這裏就是目標的 IP 地址。

IP 地址的組成與分級


Tips:
什麼是物理網段呢?當所有的主機都是使用同一個網絡媒體串在一起,  這個時候這些主機在實體裝置上面其實是聯機在一起的,那麼就可以稱爲這些主機在同一個物理網段內了!  同時並請注意,同一個物理網段之內,可以依據不同的 IP 的設定,而設定成多個『IP 網段』喔!

請注意,同一個 Net_ID 內,不能具有相同的 Host_ID ,否則就會發生 IP 衝突,可能會
造成兩部主機都沒有辦法使用網絡的問題! 

IP 在同一網域的意義
那麼同一個網域該怎麼設定,與將 IP 設定在同一個網域之內有什麼好處呢?
    Net_ID 與 Host_ID 的限制:
在同一個網段內, Net_ID 是不變的,而 Host_ID 則是不可重複,此外, Host_ID 在二進制的表示法當中,不可同時爲 0 也不可同時爲 1 ,因爲全爲 0 表示整個網段的地址 (Network IP),而全爲 1 則表示爲廣播的地址 (Broadcast IP)
    在區網內透過 IP 廣播傳遞數據
在同物理網段的主機如果設定相同的網域 IP 範圍 (不可重複),則這些主機都可以透過 CSMA/CD 的功能直接在區網內用廣播進行網絡的聯機,亦即可以直接網卡對網卡傳遞數據 (透過 MAC 訊框);
    設定不同區網在同物理網段的情況
在同一個物理網段之內,如果兩部主機設定成不同的 IP 網段,則由於廣播地址的不同,導致無法透過廣播的方式來進行聯機。  此時得要透過路由器 (router) 來進行溝通才能將兩個網域連結在一起。
    網域的大小
當 Host_ID 所佔用的位越大,亦即 Host_ID 數量越多時,表示同一個網域內可用以設定主機的 IP 數量越多。所以說,貴單位公司內的計算機羣,或者是你宿舍或家裏面的所有計算機,當然都設定在同一個網域內是最方便的,  因爲如此一來每一部計算機都可以直接透過 MAC 來進行數據的交流,而不必經由 Router (路由器) 來進行封包的轉遞呢。

IP的分級


ABC爲常用的段,E段是保留段

IP 的種類與取得方式
1. Public IP : 公共 IP ,經由 INTERNIC 所統一規劃的 IP,有這種 IP 才可以連上 Internet ;
2. Private IP : 私有 IP 或保留 IP,不能直接連上 Internet 的 IP , 主要用於局域網絡內的主機聯機規劃。
早在 IPv4 規劃的時候就擔心 IP 會有不足的情況,而且爲了應付某些企業內部的網絡設定,於是就有了私有 IP (Private IP) 的產生了。私有 IP 也分別在 A, B, C 三個 Class 當中各保留一段作爲私有 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

那麼萬一你又要將這些私有 IP 送上 Internet 呢?這個簡單,設定一個簡單的防火牆加上 NAT (Network Address Transfer) 服務,你就可以透過 IP 僞裝 來使你的私有 IP 的計算機也可以連上 Internet 囉!

3. 特殊的 loopback IP 網段

好了,那麼除了這個預留的 IP 網段的問題之外,還有沒有什麼其他的怪東西呢?當然是有啦!不然鳥哥幹嘛花時間來唬 XX 呢?沒錯,還有一個奇怪的 Class A 的網域,那就是 lo 這個奇怪的網域啦 (注意:是小寫的 o 而不是零喔)!這個 lo 的網絡是當初被用來作爲測試操作系統內部循環所用的一個網域,同時也能夠提供給系統內部原本就需要使用網絡接口的服務 (daemon) 所使用
簡單的說,如果你沒有安裝網絡卡在的機器上面, 但是你又希望可以測試一下在你的機器上面設定的服務器環境到底可不可以順利運作,這個時候怎麼辦, 嘿嘿!就是利用這個所謂的內部循環網絡啦!這個網段在 127.0.0.0/8 這個 Class A,而且默認的主機 (localhost) 的 IP 是 127.0.0.1 呦!所以囉,當你啓動了你的 WWW 服務器,然後在你的主機的 X-Window 上面執行 http://localhost 就可以直接看到你的主頁囉!而且不需要安裝網絡卡呢!測試很方便吧!
此外,你的內部使用的 mail 怎麼運送郵件呢?例如你的主機系統如何 mail 給root 這個人呢?嘿嘿!也就是使用這一個內部循環啦!當要測試你的 TCP/IP 封包與狀態是否正常時,可以使用這個呦!(所以哪一天有人問你嘿!你的主機上面沒有網絡卡,  那麼你可以測試你的 WWW 服務器設定是否正確嗎?這個時候可得回答:當然可以囉!使用 127.0.0.1 這個 Address 呀! ^_^ ) 


IP 的取得方式
基本上,主機的 IP 與相關網域的設定方式主要有:
直接手動設定(static):  你可以直接向你的網管詢問可用的 IP 相關參數,然後直接編輯配置文件 (或使用某些軟件功能) 來設定你的網絡。 常見於校園網絡的環境中,以及向 ISP 申請固定 IP 的聯機環境;
透過撥接取得:  向你的 ISP 申請註冊,取得賬號密碼後,直接撥接到 ISP ,你的 ISP 會透過他們自己的設定,讓你的操作系統取得正確的網絡參數。  此時你並不需要手動去編輯與設定相關的網絡參數啦。目前臺灣的 ADSL 撥接、光纖到大樓、光纖到府等,大部分都是使用撥接的方式。  爲因應用戶的需求,某些 ISP 也提供很多不同的 IP 分配機制。包括 hinet, seednet 等等都有提供 ADSL 撥接後取得固定 IP 的方式喔! 詳情請向你的 ISP 洽詢。
自動取得網絡參數 (DHCP):  在局域網絡內會有一部主機負責管理所有計算機的網絡參數,你的網絡啓動時就會主動向該服務器要求 IP 參數, 若取得網絡相關參數後,你的主機就能夠自行設定好所有服務器給你的網絡參數了。最常使用於企業內部、 IP 分享器後端、  校園網絡與宿舍環境,及纜線寬帶等聯機方式。


Netmask, 子網與 CIDR (Classless Interdomain Routing)


子網切分
剛剛提到 Class C 還可以繼續進行子域 (Subnet) 的切分啊,以
192.168.0.0 ~192.168.0.255 這個情況爲例,他要如何再細分爲兩個子域呢?我們已
經知道 Host_ID 可以拿來當作 Net_ID,那麼 Net_ID 使用了 25 bits 時,就會如下
所示:



例題:



無層級 IP: CIDR (Classless Interdomain Routing)

路由概念
我們知道在同一個區網裏面,可以透過 IP 廣播的方式來達到資料傳遞的目的。但如果是非區網內的數據呢? 這時就得要透過那個所謂的郵局 (路由器) 的幫忙了。

下列圖示當中共有兩個不同的網段,分別是 Network A 與 Network B,這兩個網段是經由一部路由器 (Server A) 來進行數據轉遞的,好了,那麼當 PC01 這部主機想要傳送數據到 PC11 時, 他的 IP 封包該如何傳輸呢?


我們知道 Network A(192.168.0.0/24) 與 Network B(192.168.1.0/24) 是不同網段,所以 PC01 與 PC11 是不能直接互通數據的。不過,  PC01 與 PC11 是如何知道他們兩個不在同一個網段內?這當然是透過 Net_ID 來發現的!那麼當主機想要傳送數據時,他主要的參考是啥? 很簡單!是『路由表 (route table)』,每部主機都有自己
的路由表』, 讓我們來看一看預設的情況下, PC01 要如何將數據傳送到 PC02 呢?
1.    查詢 IP 封包的目標 IP 地址:
當 PC01 有 IP 封包需要傳送時,主機會查閱 IP 封包表頭的目標 IP 地址;
2.    查詢是否位於本機所在的網域之路由設定:
PC01 主機會分析自己的路由表,當發現目標 IP 與本機 IP 的 Net_ID 相同時(同一網域),則 PC01 會直接透過區網功能,將數據直接傳送給目的地主機。 
3.    查詢預設路由 (default gateway):
但在本案例中,  PC01 與 PC11 並非同一網域,因此 PC01 會分析路由表當中是否有其他相符合的路由設定, 如果沒有的話,就直接將該 IP 封包送到預設路由器 (default gateway) 上頭去,在本案例當中 default gateway 則是 Server A 這一部。
4.    送出封包至 gateway 後,不理會封包流向
當 IP 由 PC01 送給 Server A 之後,  PC01 就不理會接下來的工作。而 Server A 接收到這個封包後, 會依據上述的流程,也分析自己的路由信息,然後向後繼續傳輸到正確的目的地主機上頭

Tips:
Gateway / Router :網關/路由器的功能就是在負責不同網域之間的封包轉遞 (IP Forwarding),由於路由器具有 IP Forwarding 的功能,並且具有管理路由的能力,  所以可以將來自不同網域之間的封包進行轉遞的功能。此外,你的主機與你主機設定的 Gateway 必定是在同一個網段內喔!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章