###### tags: `1111` `lsa` `ncnu` # Week 09 (2022/11/10) [TOC] - Book mode: https://hackmd.io/@ncnu-opensource/book ---  >[網路基礎](https://miahsuwork.medium.com/%E7%AC%AC%E5%85%AD%E9%80%B1-%E7%B6%B2%E8%B7%AF%E5%9F%BA%E7%A4%8E-tcp-ip-f89cc09f1f36) - 1.DNS 將 URL 轉換成實際的 IP Address,Browser 將 IP Address 包成一個 Request 送出去。 - 2.request 透過 Internet 傳送到 Server 。 - 3.收到 Request 的 Server 會跑去 Data center 撈取資料。 - 4.將撈取到的資料透過 Internet Response 回去。 - 5.Browser 解析資料並印於 Browser 上。 ## 分層架構 - TCP/IP - TCP/IP Protocol Suite或 TCP/IP Protocols - 用最核心的 TCP Protocol 和 IP Protocol 為命名 - 最早發源於美國國防部(DoD)的ARPA網項目,因此也被稱作DoD模型(DoD Model)。這個協定套組由網際網路工程任務組負責維護。 - OSI - 依據網路運作方式,OSI模型共切分成7個層,每級按照網路傳輸的模式,定義所屬的規範及標準。所謂的OSI,是由國際化標準組織(ISO)針對開放式網路架構所制定的電腦互連標準,該模型是一種制定網路標準都會參考的概念性架構,並非一套標準規範,也不是用來提供實現的方法,而是透過觀念描述,協調各種網路功能發展時的標準制定。 - 組織 ISO(International Organization for Standardardization) - 架構OSI(Open Systems Interconnection Reference Model)  ## TCP/IP ### Link Layer - 連接硬體相關 - link: 連接internet上相連的node - 傳送數位訊號(0101) #### Ethernet vs Wi-Fi | 網路 | 標準 | 功能 | 傳輸媒介 | 碰撞處理| | -------- | -------- | --- | -------- | ----- | | Ethernet | 802.3 | 區域網路連線上的通信協定 | 雙絞線 | CSMA/CD | | WiFi | 802.11 | 無線區域網路的電腦通訊標準 | 5GHz/2.4GHz 無線電波 |CSMA/CA |  #### CSMA/CD(Carrier Sense Multiple Access with Collision Detection)  > 多台電腦同時傳到一台電腦也會collision - 被動偵測 - 傳送步驟 1. 當節點要發送訊號時,會先偵測是否有其他節點正在使用( carrier sense )。 2. 當通道沒有被其他節點使用時,就傳送封包 3. 封包傳送之後立即檢查是否發生碰撞(carrier detection),若是發生碰撞則對通道發出高頻訊號,告知其他節點已經發生碰撞 4. 偵測後隨機等待一段時限,等待後重新發送封包。 5. 嘗試 15 次失敗的話則告知上一層 Timeout - 用於容易偵測碰撞的網路環境 - 有線網路 > 同一條線 #### CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance) - 主動避免 collision - 傳送步驟 1. 送出資料前,聆聽網路上的狀態。如果沒有人使用,維持一段時間後,再等待一段隨機的時間後如果還沒有人使用,才送出資料。由於每一個裝置採用的隨機時間不同,可以減少碰撞的機會。 2. 送出資料前,先送一個 RTS 封包給目標端,等待目標端做出回應有CTS封包後,才開始傳送 3. 當資料傳送完成後,傳送裝置會等待一小段時間接收確認封包(ACK),有收到才代表成功 > 當失效 32 次之後通知上層 Timeout - **多用於無線網路** - 無線的環境,不容易確實的偵測是否有發生碰撞,所以修改不用被動的碰撞偵測(CSMA/CD)  #### Header  [圖片來源](https://ithelp.ithome.com.tw/m/articles/10267704) ##### Link layer header - 傳送單位為 frame - Ethernet frame -  -  - Preamble 本身並沒有實際的意思,僅用於發送方和接收方之間同步時鐘和bit交流;當發送方發送數據時,會加上7個字節的報文,告訴接收方「請按照這種規律準備好,我馬上要發送數據了」;當接收方連續收到「10101010」這串代碼時,就需要調整字節的時鐘,準備接收數據。 - SFD(start of frame delimiter):他只有一個byte,內容是固定的 - CRC 錯誤更正 確認封包是完整的 #### MAC Address - 一張網卡 一個 MAC Address >同一區域網路mac addr絕對不能重復到,但不同區域可以接受(因為不同IP) - 在區域網路內的地址 > 班級內的座號,同班級只能有唯一一個座號,但不同班可以有相同座號。 - size: 6 bytes (48 bits) - 48 bits - 第 1 bit 為廣播地址(0) / 群播位址(1) - 第 2 bit 為廣域位址(0) / 區域位址(1) - 看第一個 byte 的最後一個 bit - unicast(0): 一次只能跟一個人溝通 - multicast(1):可以一次跟所有人溝通 > 可以看奇數(1) / 偶數(0) 判定 - 最後 24bits 由實際生產該網路裝置的廠商指定且不重複 - 區域網路位址(LAN Address)、Ethernet Address 或 Physical Address - broadcast 是特殊情況,全部 bit 為 1 (FF:FF:FF:FFFF) :::info  ::: :::success #### 練習 1. 4A:30:10:21:10:1A 2. 47:20:1B:2E:08:EE 3. FF:FF:FF:FF:FF:FF - 以上何為 multicast, unicast, broadcast? 答案: 1. unicast 2. multicast 3. broadcast 判別方法 - 若第一個 byte 最後一個 bit 為 0,代表為 偶數 > 4A 是偶數 - 若第一個 byte 最後一個 bit 為 1,代表為 奇數 ::: ::: info 如何查詢自己電腦的mac address ``` ifconfig | grep ether ``` ::: #### connecting device - hub - broadcast 收到資料就全部傳出去 > 不安全 - 半雙工(half-duplex) - 收資料或送資料不能同時,一次只能作其中一種 - switch - 可以建立 MAC address table > 依照價位儲存不同數量的 Mac address > 找不到就 broadcast - 每個 port 都是獨立的 collision domain - 全雙工  - LAN - 連接住宅、學校或辦公大樓有限區域內電腦的網路 - Ethernet(乙太網路) - Ethernet 為 LAN 中最常使用的一種技術 - 相關規範由IEEE訂定,收錄於IEEE 802.3 標準中 :::info #### 網路拓樸 > 現在大家最常用的是 STAR、TREE 1. Star  - 優點: - 每個人都獨立一條線,好處是**比較不會發生碰撞**,壞處是如果不常用的話比較浪費。 - 由中間管理,資料傳輸品質高、資料安全強及網路維護較容易,比較不會碰撞因為大家都有一條線。 - 缺點: 如果中間的 switch 死掉了,大家就都死了 2. Bus  - 優點:要在新增跟刪減電腦時容易。網路佈線簡單,只要一條網路主幹就能將網路上所有電腦連結起來,而且不管是要在該網路加入新電腦或想將那部電腦退出網路,都不需要做特殊處理。 - 缺點:較容易產生碰撞、中央若癱瘓一樣就不能用了。各工作站之間傳送資料還都必須透過同一傳輸媒介 3. Ring  - 優點:大家都是走同一個方向(順、逆時針),不會撞在一起。 - 網路上任何一個節點使用傳輸媒體的權限都相等,而且各節點使用傳輸媒體的機會平均分配,沒有爭執及碰撞的現象,尤其使用在高負載網路上非常適合。 - 缺點:架設比較困難;新增、刪減機器比較麻煩。 - 環狀拓樸圖上任何一個節點發生故障,可能使整個網路癱瘓。而且在佈放網路方面,由一個起始點開始佈放線路,經過整個網路區域後必須回到原點,在網路網路架設施工方面的確有困難。 4. Tree  - 可以當作星狀網路的延伸,像是root一樣會逐漸延伸分層下去 - 相對來說可用性較佳 - 優點:具有星狀的優缺點外,又可以改善星狀的缺點,當某一主機故障時,只會影響到該節點的周邊電腦不能通訊,而不會使整個網路癱瘓,其他節點還是可以正常運作。 - 缺點:整個網路的可靠度還是受限於各節點主機電腦 > 概念與實務還是會有所不同 [參考資料](https://www.atcnet.com.hk/newsContent_233.html) **考量的重點:** - 便利性 - 成本 - 可用性 > 之後會講到「備援機制」 ::: ### Internet Layer #### 網域 - 連線方式 - 同網域: 可以直接透過 CSMA/CD 傳送資料,網卡對網卡(MAC frame) - 不同網域:需要藉由 Router 將不同網域連接。 #### Router  - 若 PC01 要傳送資料給 PC11 時: 1. 看封包目標 IP 位置。 2. 查看自己主機的 Net_ID 是否與封包的相同(屬於同區網),若相同可以直接傳給目的主機。 3. 若不同,查詢 default gateway (此為 Server A) 並傳給它。 4. 不理會封包流向,default gatway 會執行上述動作繼續往目的地傳送。 :::info 如何查看自己的 routing table - `route`:主機已 domain name 的方式呈現 - `route -n` 主機名稱以 IP 的方式呈現 -  ::: #### IP 1. IPv4: IP address 以32 bits 表示為目前主流 - IP 位置枯竭:現在在網路上的主機數已將多過 IPv4 32位元可以表示的數量 2. IPv6: IP address 以 128 bits 表示,未來趨勢 以 128 bits 的方式呈現 :::info **NAT(Network Address Translation): 將私有IP位址轉成公開IP位址**  - **網站伺服器無法定位私有IP**,在電腦送request,router就會把來源的IP位址改成public IP(Router同時有兩個IP位置,區域內的私有IP位置,以及ISP指派的公開IP位置) - Router 在更改ip位置時 會將私有IP 與 request 目標 IP 記錄下來 - 因為可以多個主機共用一個公有 IP > 私有 IP: 在內網使用的 IP > 公開 IP: 在外網使用的 IP | | 處理事項 | |:-------:|:--------------------------------------------:| | router | 只轉送,不會記下封包狀態 | | NAT | 轉送外,還會幫你做 IP 的轉換 | | bridges | 連接兩個不同網段,可以是相同類型或不同類型。 | ::: #### IP 位置表示 - 二進位表示 - 00000000.00000000.00000000.00000000 => 0.0.0.0 - 全部都是 0 代表廣播 - 分為 Net_ID,Host_ID - Net_ID: 網路編號 - Host_ID: 主機編號 - Host_ID 不可全部都是 0 或 1 - 全0:表示網段的位置 - 全1:表示廣播的位置 #### ip種類  - 有A.B.C.D.E 五種 IP class - A Class 0 開頭:網域少、主機多,適合大型企業。 - B Class 10 開頭:適合中型企業 - C Class 110 開頭:適合家庭及小型企業使用 - D、E為特殊用途 - D Class 1110 開頭:群播用途。對另一個網段的所有主機做廣播 - E Class 11110 開頭:目前為保留,沒有定義用途 - 預設 Net Mask - A Class 的 mask: 255.0.0.0 - B class 的 mask: 255.255.0.0 - C class 的 mask: 255.255.255.0 - 算 Net ID and Host ID - IP 和 Net Mask 加以 AND 運算得到 Net ID - 先將 Net Mask 做一個 NOT 運算,然後再和 IP 做一次 AND 運算可以得到 Host ID > AND運算: > 1.2.3.4 AND 255.255.255.0 > --> 00000001.00000010.00000011.00000100 AND 11111111.11111111.11111111.00000000 > --> 00000001.00000010.00000011.00000000 - 有Public IP / Private IP - Public IP: INTERNIC 所統一的規畫的 IP,有這種 IP 才可以連上 internet > INTERNIC: 負責登記網域名稱與網路協定位置,並散播有關網際網路資訊的組織 - Private IP: - 私有 IP 無法接上 Internet,但可以內部互相連線。 - 如果要將私有 IP 連上 Internet,可以利用 NAT 基IP 進行轉換(偽裝),如此一來也可以使私有 IP 電腦連上去。 - 其中ABC三個CLASS當中又各保留一段作為Private網段,分別是: - 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 - 由於這三段 class 的 ip 是預留使用的,所以不能直接作為連接internet 支用,適合一些尚未具有public IP的企業內部用來規劃其網路設定 #### 子網路 - 公用:可以將網路切割成不同區塊,方便管理並可以快速定位(tree),也可以避免浪費沒有用到的 Host_ID - 切割網段 => 先決定想要分配的主機數: - 以 C Class 網路為例: - 網路遮罩: 11111111.11111111.11111111.**00000000** =>255.255.255.0 - 粗體為可變動位置 - 8 位元: 2 ** 8 -3 = 253 台主機 - `-2` : 多少台主機使用(IP) - `-3`:可以存放多少台主機,多扣一台switch (gateway使用) - `xxx.xxx.xxx.0`: 網段的第一個 IP,用於代表此區段網路 - `xxx.xxx.xxx.255`: 最後一個 IP,用於廣播 - 網路遮罩: 用來計算在哪個網段(利用IP與網路遮罩做AND可以得到此IP的網段) - 若要切割一網路區段為192.168.3.0 ~ 192.168.3.255 - `Netmask`: 255.255.255.0 => 11111111.11111111.11111111.00000000 - `Network`: 192.168.3.0 => 此網段第一個 IP, 代表此區段網路 - `Broadcast`: 192.168.3.255 => 最後一個 IP,廣播用途 - 若要將以上網段(192.168.3.0/24)再切分成2個子網路: - Netmask: 255.255.255.128 => 11111111.11111111.11111111.10000000(遮罩多1bit) => 主機數少一半 | 子網路 | Network | Broadcast | Netmask | |:------:|:-------------:|:-------------:|:---------------:| | 第一個 | 192.168.3.0 | 192.168.3.127 | 255.255.255.128 | | 第二個 | 192.168.3.128 | 192.168.3.255 | 255.255.255.128 | #### LAB - 尋找自己的網域 - `ifconfig`  > inet: 自己的IP位址 (本身) > netmask: 子網路遮罩 - 第三個byte 29和224做&運算 ``` 00011101 11100000 AND -------- 00000000 ``` - 得子網路位址network: 10.105.0.0 (所在網段) - 193.44.55.66 ==/25==: 表此遮罩**前 25 個 bit 都一樣**,屬於同一區段網路 - 193.44.55.66/8 - 所在的網段: 193.0.0.0 - 所在的網段用來 boardcast: 193.255.255.255 範例1: - 192.168.3.4 ==/25== -> 11000000.10101000.00000011.00000100 - network -> 11000001.00101100.00110111.0.... - 前25個要相同才是在同一網段 範例2: - 193.192.191.190 ==/27== > 11111111.11111111.11111111.10111110 - network 前 27 位元一樣, netmask: 11111111.11111111.11111111.11100000 - network: 11111111.11111111.11111111.10100000(193.192.191.160) - broadcast:11111111.11111111.11111111.10111111(193.192.191.191) - ip count : 32 - ip range: 193.192.191.160~193.192.191.191 --- - MAC - 區網下區分裝置 - 12 digits,6 對 16 進位 - 不能隨意更改 - physical address - 寫在網卡內的 bios 內 - IP addr - 控制裝置在全球網域下的溝通 - IPV4: 32 bits 4對3位十進位表示 - 192.168.0.121 - ex. IPV6: 128bits 8 對 4位 - ex. fe80::f060:18c6:27de:595d%55 - 可任意改變 - logical address - 在傳遞過程中改變  [圖片出處](https://www.techtarget.com/searchnetworking/answer/What-is-the-difference-between-an-IP-address-and-a-physical-address) :::warning ### LAN vs WAN - LAN(Local Area Network) - ip: 192.168.0.1 or 10.0.1.256 - WAN(Wide Area Network) - 接外部 IP 地址用 - WAN 就是由多個 LAN 組成之集合 ::: #### ICMP - 在發送封包時,我們不知道是否可以抵達目的,傳送失敗時,也想要知道發生什麼錯誤。IP封包本身並不會回報封包的傳送狀況,因此需要一個回報狀況的機制 ==> ICMP `traceroute <網站>`  #### ARP(Address Resolution Protocol)/RARP(Reverse Address Resolution Protocol) - ARP 封包是用廣播的 > ARP: 誰是`1.2.3.4`? > `1.2.3.4`: 是我 (此 IP 聽到要自己回) > 這種運作方式非常不安全,每個人都可以假裝自己的身分 - 傳遞資料時透過 IP 知道 MAC address 1. 向整個區網發出ARP封包(廣播的) 2. 對方回傳MAC Address 3. 開始傳送資料 4. 將該 IP/MAC 寫入 ARP Table 中(保持20分鐘) :::info **查看 ARP table** - `arp`指令: - `arp -n` : 主機名稱以 IP 型態顯示 - `arp -d` :將某筆 IP 從 ARP Table 刪除 - `arp -s`: 將某筆 IP/MAC 寫入 ARP Table 中 ::: ### Transport Layer
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up