# 網路架構觀念 ## LAN/WAN **LAN** 區域網(Local Area Network) 區域內由多台電腦/裝置互聯成的私人網路。區域網可以實現文件、應用軟體共享等功能。是一種封閉型的網路。 **WAN** 廣域網 (Wide Area Network) 跨越地域性的電腦網路的集合。通常跨省、市,或國家。廣域網包括大大小小不同的子網,子網可為區域網或小型的廣域網。 **區域網和廣域網區別** 區域網在某一區域內,而廣域網要跨越較大的地域,例如,一家公司的分公司遍布全國各地,若將所有的分公司都通過網路聯在一起,那一個分公司就是一個區域網,而整個公司網路就是廣域網。 ------- ## IP/網際網路協定(Internet Protocol) 網際網路協定( IP )是整個 TCP/IP 協定的基礎,功能包括如下﹕ 定義網際網路中傳輸的基本單位。 定義網際網路的定址方式。 負責網路存取層和傳送層之間的資料傳遞。 決定資料傳送的路由路徑。 執行資料的分解和重組。 ## IP/位址(IP Address) 網際協定中用於標識,傳送或接收資料裝置的一串數字。 當裝置連接網路,裝置將被分配一個IP位址,用作標識。通過IP位址,裝置間可以互相通訊。如沒有IP位址,將無法知道哪個裝置是傳送方、哪個是接收方。IP位址有兩個主要功能:標識網路/裝置和定址。 IP位址可分為 Net_ID (網路編號) 與 Host_ID (主機編號) 兩部份: **Net_ID (網路編號):** 辨認網路,同一網路中所有網路ID必須相同。 **Host_ID (主機編號):** 在同一網路中再去分裝置ID,用於辨識網路中的裝置。 **mask (遮罩):** 區分Net_ID 與 Host_ID。網路遮罩設定會引響網路(Net_ID)中可以乘載的裝置(Host_ID)數量。 * 第一個可用IP為Host ID全0+1。 * 最後可用IP為Host ID全1-1。 * 當 Host ID 全部為0的時候,指的是網路本身識別碼;而全部為1的時候,則為該網路的廣播位址,代表該網路上的所有主機。 * Net ID﹕127(二進位的 01111111) 為保留給本機回路測試使用,不可運用於實際的網路中。 * 計算方式如下圖示。 ---  ------  ------  [參考資料](https://www.youtube.com/watch?v=MEbRUxLYxjc ) --------------- ## IP位址分級 網際網路名稱與號碼分配組織 (ICANN) 負責分配 IP 位址,依分配的組織規模不同將整個 IP 網段分為五種等級,表示如下: ---- ### Class A (大企業、國家、研究機構等)  第1個bit一定是0,只要ip轉換成二進位是0開頭的,就可以認定它是屬於Class A級的IP,Class A的IP前8個bits決定它的網路位址,剩下的24個bit為主機位址。例如:13.0.0.1跟13.250.249.248是屬於同單位內的網段,(大型的組織或政府機構才有辦法拿到Class A級IP) **Class A級的IP範圍: 0.0.0.0 ~ 127.0.0.0** (第1個bit一定要是0,所以前8個bits最大到011111111,也就是127) ----- ### Class B (中企業等)  前2個bit一定是10,只要ip轉換成二進位是10開頭的,就可以認定它是屬於Class B級的IP,Class B級的IP前16個bits決定了它的網路位址,剩下的16個bits都是主機位址,例如:140.112.0.1跟140.112.250.251是屬於同單位內的網段。 **Class B級的IP範圍: 128.0.0.0 ~ 191.255.0.0** (前2個bit一定要是10,所以前16個bits最大到10111111.11111111,也就是191.255) ----- ### Class C (小企業等)  前3個bit一定是110,只要ip轉換成二進位是110開頭的,就可以認定它是屬於Class C級的IP,Class C級的IP前24個bits決定了它的網路位址,剩下的8個bits都是主機位址,例如:192.83.167跟192.83.167.254是屬於同單位內的網段。 **Class C級的IP範圍: 192.0.0.0 ~ 223.255.255.0** (前3個bit一定要是110,所以前16個bits最大到11011111.11111111.11111111,也就是223.255.255) ----- ### Class D (群播)  Class D級的IP較特別,是拿來做群播用途的,它的前4個bits是1110開頭,此外,它也沒有主機位址。 **Class D級的IP範圍: 224.0.0.0 ~ 239.255.255.255** ----- ### Class E (保留) **Class D級的IP範圍: 240.0.0.0 ~ 255.255.255.255** ----- ### 各Class統整  [參考資料](https://notes.andywu.tw/2018/ip%E7%AD%89%E7%B4%9A%E8%88%87%E5%AD%90%E7%B6%B2%E8%B7%AF%E9%81%AE%E7%BD%A9%E4%BB%8B%E7%B4%B9/) --------------- ## 子網路 (subnet) 子網路的劃分是一個將Host ID的若干位分配到Net_ID的過程。例如,對於一個給定的A類網路:10.0.0.0,子網路遮罩:255.255.0.0可以將其劃分為256個子網路(從10.0.0.0到10.255.0.0)——第一個八位位組表示網路位址,第二個表示子網路號,而最後兩個表示主機部分。 子網路遮罩不局限於整數個八位位組的情況。例如,255.254.0.0(或「/15」)同樣是一個有效的遮罩。如果將它應用到A類位址上,就會產生128個間隔為2的子網路(例如1.2.0.1~1.3.255.254,1.4.0.1~1.5.255.254等等)。這情況我們可以說是 Class A 的 network 向 host 借了 7個bits,也可以說是 host 向 Class B 的 network 借了 1個bits,後者又稱為超級線路網。 ## 子網路遮罩 (subnet mask) 不再特別強調Class A、Class B、Class C,而是所有的IP位址都可以使用子網路遮罩來分割出自己的網段,子網路遮罩與IP(IPv4)位址類似,以32個bits的二進位來運算。被1遮到的地方當成網路位址;被0遮到的地方當成主機位址。 Subnet Mask 是將本屬於 Host ID 的連續 bit 轉為 Subnet ID 來使用。也就是將預設的 Net Mask 的“1”逐漸的往右增加﹐相對地﹐Net Mask的“0”則越來越少。這樣可以獲得更多的 Net ID﹐也就是將一個大的 IP 網路分割成更多的子網路﹐而每一個子網路的主機數目卻相應的減少。  當借**用 1 個 bit 的 Host ID 來做 Subnet ID 時﹐會將網路切割開2個子網路(2¹ = 2)** ﹔如果借 **2 個 bit 則有 4 個子網路** ; **3 個 bit 則 8 個子網路**...。當所有的 Host ID 都借出去﹐可以得到最多數量的子網路﹐但這是毫無意義的﹐因為沒有 Host ID 了﹐就無法分配 IP 給主機,而 Host ID 只剩下一個 bit 也是不行﹐這樣每個網路只能得到 0 和 1 來作為 Host ID﹐而這兩個 ID 是不可以用來分配給主機。 因此,切割網路時﹐最少要留下 2 個 bit 來做 Host ID﹐這時候每個網路最多只能連接 2 台主機(2² 等於 4 但 Host_ID 不能是兩個 0 或兩個 1 ,所以只有2台主機)。這樣的網路通常會用在 WAN 與 WAN 之間的路由器連接。而在 LAN 中的應用﹐通常最少要保留 3 個 bit 來做 Host_ID。 **舉例:** 將192.83.167.X(Class C級的IP),範圍192.83.167.1到192.83.167.254的IP數量切一半 範圍1: 192.83.167.1到192.83.167.127給電腦教室學生用(不讓學生存取學校的server) 範圍2: 192.83.167.128到192.83.167.254給教授及行政用(可以存取學校的server) 可以把子網路遮罩設成255.255.255.128,二進位相當於設成1的25個bits決定網路位址,設成0的剩下7個bits決定主機位址。  讓上面的範圍IP經過子網路遮罩後     192.83.167的Class C級網段被切成兩段了 最後8個bits 0到127為一個網段(__0__0000000 到 __0__1111111) 最後8個bits 128到255為另一個網段(__1__0000000 到 __1__1111111) **練習:** 若要將192.83.167.X切成8個子網路,就要拿Host ID 的三個 bit 來做 Subnet ID ,可用原 Net Mask 與 Subnet Mask 做OR運算: Net Mask: 11111111.11111111.11111111.00000000 OR Subnet Mask: 00000000.00000000.00000000.11100000 得出新的Mask﹕ 11111111.11111111.11111111.11100000 十進位後:255.255.255.224 各子網路的實際 Net ID 為: 11000000.01010011.10100111.**000**00000 11000000.01010011.10100111.**001**00000 11000000.01010011.10100111.**010**00000 11000000.01010011.10100111.**011**00000 11000000.01010011.10100111.**100**00000 11000000.01010011.10100111.**101**00000 11000000.01010011.10100111.**110**00000 11000000.01010011.10100111.**111**00000 本來是 8 個 bit 的 Host ID 只剩下 5 個 bit ﹐也就是說每個子網路裡﹐最多只有 2⁵-2 = 30 台主機﹐而它們可分配的號碼分別由 00001 到 11110 之間。 在 Subnet ID 001 下的主機號碼﹐將會是從 00100001 到 00111110 之間﹐ 整個 IP 位址是從 192.83.167.33 到 192.83.167.62 之間。 --------------- ## 子網路遮罩快覽表  --------------- ## CIDR CIDR標記法的格式是由字首加上一個 0 ~ 32 數字的字尾所組成的,像 192.168.115.1/24,字尾的數字指的是字首的位數,也就是子網路遮罩 1 的數量,例如:24 就代表字首為 24bits,子網路遮罩是 24 個 1,其他為 0:  CIDR 標記法用在防火牆規則上,用來判斷 IP 是不是在所允許範圍內。將我們的 IP 跟子網路遮罩做 AND 運算,其結果若等於所設定的字首,防火牆就放行,若我的 IP 是 118.186.134.82,來源 IP 範圍設定為 118.186.134.82/32,這就表示只限定我的 IP 能通過防火牆。 若要設定任一 IP 皆能通過就設成 0.0.0.0/0,不過這等同在網路上裸奔。 [參考資料](https://guangyaw.blogspot.com/2020/11/cidr-classless-inter-domain-routing.html) ------- ## Domain Name(網域名稱) 在網路上辨別一台電腦的方式是利用 IP,但 IP 不容易記且無聯想意義,因此為網路上的伺服器取名這就是「Domain Name」的目的。 一個網域名稱 www.example.com.tw 用逗點 (.) 區隔,由右到左分別是、頂級域名 (Top-level domains, TLDs)、第二級域名、第三級域名、第四級域名,一個網域要有幾層就可以有幾層,理論上沒有限制 (但各家瀏覽器輸入 URL 長度有所限制)。  ### 頂級域名 (Top-level domains, TLDs) #### gTLD通用頂級域: 於1985 最早成立的一批頂級域名,一直沿用至今天,但由於網站成長數量太多,面臨大量競爭和不夠用的情況。  ----- #### sTLD贊助頂級域: 大多由特定企業、政府、團體贊助而來的TLD,目前在IANA列表上只存在14個sTLD,台灣常見的後綴網域名稱有:.edu.tw 、.gov.tw 。  ----- #### ccTLD國家代碼頂級域: TLD 列表上約有315個ccTLD可以做運用,基於 ISO-3166 兩個字母。  ----- #### New gTLD新頂級域名: 在2011年ICANN開放各個品牌、城市或組織申請屬於自身的gTLD,讓gTLD的數量突破1000大關,會開放申請頂級域的原因,在於原先的gTLD已無法支撐日趨龐大的網站數量,還有衍生的網域蟑螂問題。  ----- ### 公司組織或是個人名稱(二級或三級域名): 頂級域名下面是二級域名,它位於頂級域名的左側。二級域名或是第三級域名,通常會是公司組織或是個人名稱,例如 **google**.com 或者是 **cht**.com.tw。 ### 三階之後 該域名擁有者自行定義,例如 blog.twsiyuan.com 放置個人部落格資料,dev.twsiyuan.com 放置軟體開發筆記等等。 [參考資料](https://www.seoseo.com.tw/article_detail_610.html/) ------- ## DNS 網域名稱系統(Domain Name System) ### DNS功用: DNS是將域名和IP位址相互對映的一個分散式資料庫,讓使用者可透過網域名稱存取線上資訊,網路上的裝置都被分配了一個 IP 位址,必須有該位址才能找到相應的網際網路裝置,若在網頁瀏覽器中輸入 (example.com) 與機器使用的位址 (例: 192.168.1.1)之間必須進行轉譯,才能讓機器找到 example.com 網頁。 ### DNS運作方式: DNS分為Client和Server,Client扮演發問的角色,向Server提問一個Domain Name,而Server必須回答此Domain Name的真正IP地址。 **1.首先Client使用Recursive Query向當地的Recursive DNS Servers送出查詢。** * Recursive Query遞迴查詢 : 反覆查詢直到能夠回覆Client。 **2.Recursive DNS Servers會先查自己有沒有快取,有的話直接回傳。** **3.如果沒有快取,則Recursive DNS Servers會透過Iterative Query往上一層Root Server尋問域名的Top Domain是由哪些DNS Server負責,依照域名的Top Domain 返回最近的Top Domain Servers位址。** * Iterative Query反覆查詢 : 大多為DNS Server間的查詢模式為Recursive DNS Servers向Root Server / Top Domain Servers / Authoritative Name servers 反覆查詢。 * 快取 : 為了提高查詢效率,減輕根域名服務器的負荷和網上的DNS查詢報文數量,在域名服務器中廣泛地使用了高速緩存。高速緩存用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄。由於域名到IP地址的映射並不是永久不變,為保持高速緩存中的內容正確,域名服務器為每項內容設置計時器並刪除超過合理時間的項(例如,每個項目只存放兩天)。 **4.Recursive DNS Servers向Top Domain Servers詢問取得Authoritative Name servers位置。** **5.Recursive DNS Servers向Authoritative Name servers詢問,透過Non-Recursive Query取得主機 zh 的A記錄,存入自身快取並返回給客戶端。** * Non-Recursive Query非遞迴查詢 : Authoritative Name servers回答Recursive DNS Servers時因為已經知道所有被查詢的資料,所以不需要再向其他Servers查詢,所以這過程是非遞迴查詢。 **查詢示意圖:**  **查詢結構:**  [參考資料](https://www.pongo.com.tw/domain-name-system/) [DNS資源紀錄說明](http://dns-learning.twnic.net.tw/bind/intro6.html) ------- ## 路由器(Router) ### 用途: 連接2個以上個別網路的裝置,決定資料封包(檔案、訊息、網路互動等資料)傳輸的路徑,用來連接電腦、印表機等連網裝置。 ### 運作方式: 資料封包有很多階層,其中一個階層包含資料來源、檔案內容、檔案大小及目的地IP等資訊,路由器主要會讀取這個階層的訊息,決定資料傳輸的優先順序,找到最佳傳輸路徑,將資料傳送到指定的IP位址。 [參考資料](https://www.tp-link.com/tw/blog/111/%E8%B7%AF%E7%94%B1%E5%99%A8%E6%98%AF%E4%BB%80%E9%BA%BC-%E8%B7%AF%E7%94%B1%E5%99%A8%E7%94%A8%E9%80%94-%E9%A1%9E%E5%9E%8B%E5%8F%8A%E6%8C%91%E9%81%B8%E6%A8%99%E6%BA%96%E4%B8%80%E6%AC%A1%E5%91%8A%E8%A8%B4%E4%BD%A0/ ) ### 路由器與交換機的差別: 路由器是屬OSI第三層的產品,交換機是OSI第二層的產品。第二層的產品功能在於,將網路上各個電腦的MAC位址記在MAC位址表中,當區域網路中的電腦要經過交換機去交換傳遞資料時,就查詢交換機上的MAC位址表中的資訊,將封包傳送給指定的電腦,而不會像第一層的產品(如集線器)每台在網路中的電腦都發送。 而路由器除了有交換機的功能外,更擁有路由表作為傳送封包時的依據,在有多種選擇的路徑中選擇最佳的路徑。此外,並可以連接兩個以上不同網段的網路,而交換機只能連接兩個。並具有IP分享的功能。 -------
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.