###### tags: `1121` `lsa` `ncnu`
# Week 13 (2023/12/07) TCP/IP
- Book mode: https://hackmd.io/@ncnu-opensource/book
[TOC]
## 1.引言
---------
### 1.1什麼是通訊
> 我在搜尋的時候按下Enter之後發生了什麼?
> 我在網路上下訂單之後發生了什麼
1. 我今天想買一個大型的桌子,所以我到家居行(台北)的官網下訂單,要送到府(台南)並且要有專人安裝
2. 家居行收到我的訂單,把訂單交給員工,但因為我要買的桌子太大了所以員工就把桌子拆分成很多個箱子裝,並附上安裝說明書,打包完再聯繫台北快遞公司來取箱子
3. 快遞員到家居行後看到每個箱子上都有收件人的姓名,地址,電話,就把這些箱子拿給台北物流公司
4. 台北物流公司的物流士把這些包裹送到台南物流公司
5. 包裹在轉運站之間傳送
6. 台南物流公司的物流士拿到這些包裹之後送回台南的物流中心
7. 台南物流中心請台南快遞公司快遞員來領箱子,再送到我家
8. 一名專業的安裝師傅到我們家著說明書把桌子安裝好
9. 我拿到一個安裝好的桌子
| 步序 | 內容 | 對應到的TCP/IP模型 |
| - | - | - |
| 1 | 官網下載 | 應用層 |
| 2 | 分割包裹 | 傳輸層 |
| 3 | 設定地址 | 網路層 |
| 4 | 包裹配送 | 資料連結層 |
| 5 | 轉運站間運送 | 實體層 |
| 6 | 報告配送 | 資料連結層 |
| 7 | 送貨到府 | 網路層 |
| 8 | 到府組裝 | 傳輸層 |
| 9 | 拿到桌子 | 應用層 |
### 1.2什麼是通訊協定?
- 網路設備的溝通語言
> 講中文、講英文 ...
- 網路設備彼此溝通時的約定,都算是通訊協定
> 我們從現在開始都講英文喔
- 必須採用相同的通訊協定,網路設備才能夠互相交換資訊
> OK!
- 如果將這些約定具體化轉成文字便能成為規格,再透過具有公信力的國際性機構的認定,就變成了國際標準
:::info
簡單來說,通訊協定是讓不同設備能夠相互溝通的標準。它們定義了資料的格式、傳輸方式、錯誤檢測和糾正等內容。通訊協定可以分為不同層次,每層協定負責不同的功能。
:::
### 1.3什麼是通訊模型?
- 一個適當的模型能夠將事情具體化、簡單化
- 層對層分工合作獨立運作
> 如果居住在不同地區,訂單配送的流程仍然不變
- 常見模型:OSI模型、DoD 模型
## 2.通訊模型
### 2.1 OSI 模型
- Open System Interconnetcion Model
- ISO(國際標準化組織)於1984年發表了OSI模型,將整個網路系統分成七層,每層負責特定的工作
- 越高層越偏向軟體,越低層越偏向硬體
- OSI模型沒有具體的協定,而是抽象的參考模型
->不是一個標準,而是一個在制定標準時所使用的概念性框架


### 2.2 DoD模型
- TCP/IP 協定套件的開發早於DoD模型和OSI模型的理論提出
#### 2.2.1DoD模型的歷史與組織
- DoD 模型是在美國國防部的領導下為ARPANET(互聯網的前身)項目開發的
- DoD 模型成為了TCP/IP模型的前身,並在TCP/IP協定組合的基礎上進行發展
#### 2.2.2 TCP/IP 模型
- 由於網際網路最早起源於軍事用途,因此這個模型便以美國國防部(Department of Defense)來命名,但有些直接稱為TCP/IP模型
- 除了代表TCP/IP這兩種通訊協定外,更包含了與TCP/IP相關的數十種通訊協定,例如:SMTP、DNS、ICMP、POP、FTP、Telnet ... 等
- 雖然兩種模型各有自己的架構,但基本上能互相對照
### 2.3 OSI 模型vs. TCP/IP 模型

| 模型 | 主要組織 | 層數 | 用途 | 使用領域 |
| ---- | ------ | ---- | ---- | -------- |
| OSI | 國際標準化組織(ISO)| 七層 | 理論性的分層類型 | 做network device的人比較常用的規範|
| TCP/IP | 美國國防部(Department of Defense) | 四層 | 現實世界中的網路通訊的參考模型 | 做OS的人比較常用的規範 |
## Link Layer

:::info
- 處理電腦之間的物理連接和數據傳輸,使用幀 (frame) 當作傳輸的單位Link: 連接相鄰的節點
- 使用 Ethernet 和 Wi-Fi ,以有線和無線方式連接相鄰節點
- 只能在同一區域網路 (LAN) 內傳輸
:::
### 3.1 Ethernet / Wifi 介紹
| 網路 | 標準 | 功能 | 傳輸媒介 | 碰撞處理 |
| -------- | -------- | --- | --- | -------- |
| Ethernet 乙太網路 | 802.3 | 區域網路上的通訊協定 | 雙絞線 | CSMA/CD |
| Wi-Fi無線網路 | 802.11 | 無線區域網路的電腦通訊標準 | 5、2.4GHz無線電波 | CSMA/CA |
- Ethernet
- 有線連接,安裝需要佈線
- 安全性相對較高,因為訊號受到物理線路限制,不容易被竊聽
- 穩定性高,使用雙絞線
> 兩條電纜線纏繞在一起的結構,有助於減少干擾( 總共有八條線 )
絕緣層,防止電磁干擾
- Wifi
- 無線連接,有靈活性,適用於移動設備
- 訊號易受干擾、衰減,影響連接品質
- 受到其他無線設備和物理障礙的影響,造成訊號溢出
- 半雙工通訊,分時多工,所有截點一起收送
:::info
### 單工/半雙工/全雙工
#### 單工(Simplex):
- 在同一時間訊號單向流動,只能由一方發送,另一方只能接收
- 例子:傳統的廣播電台,電台發送節目內容,收聽者只能接收而不能回傳
#### 半雙工(Half Duplex):
- 允許雙方進行雙向通訊,但不能同時進行發送和接收
- 例子:對講機通訊,每當一方按下通話按鈕時,另一方就只能聽取而不能發言
#### 全雙工(Full Duplex):
- 在同一時間允許雙方都可以同時發送和接收數據
- 例子:傳統的電話通訊,雙方可以同時說話和聽取對方的聲音
:::
| | 乙太網 | WIFI |
| --- |:--------------:| ---- |
| 穩定性 | 高👍👍👍😁😁😁 | 低 |
| 干擾 | 不易👍👍👍😁😁😁 |易 |
|竊聽風險|低👍👍👍😁😁|高|
|移動|不易||
|部署|需要佈線|不需要佈線🤙🤙|
|適用場景|靜態設備或需要高穩定性的應用|移動設備或不便佈線的場景|
### 3.2Ethernet乙太網路:實體層
> 常見設備:網路線、集線器(Hub)
- 10 Base5 乙太網路 -> 10 Base2 乙太網路 -> 10 BaseT 乙太網路
- 10 Base5 乙太網路、 10 Base2 乙太網路的缺點匯流排拓樸:
- 任網路的任何一處斷線,都會導致整個網路停擺,而且追查斷線點較為困難
- 若有電腦要移動位置,佈線路徑可能要大幅修正
- 管理維護不方便,促使了 10 BaseT 乙太網路的誕生
- 10 BaseT 乙太網路:
- 採用無遮蔽雙絞線 (Unshielded twisted-pair cables, UTP) 作為傳輸介質,所有的電腦都透過集線器 (Hub) 互相連接。
- 電腦到集線器的最大長度為 100 公尺。
- 星狀拓樸優點:
- 每部電腦都獨立連接到集線器,如果電腦或線路發生問題,只會影響本身的這一段線路,不會影到其他電腦的運作
- 從集線器的燈號即可判斷是哪段線路故障,比較容易維護
- 移動電腦時只需要局部佈線路徑,整段佈線路徑不必更動
- 現今常用乙太網路規格 .IOBASE-T 、 IOOOBASE-LX 、 IOGBASE-T
#### Connecting Device

- 集線器(Hub)
- 半望工 (half-duplex):同一時間只能發送(接收〕資料
- 以廣摇(Broadcast)方式進行傳輸,看接收端要接收封包遏是丟掉
>不安全,還會有碰撞的問題
- 當HUB 達接非常多電腦時,網路就會髮慢
- 交換器(Switch)
- 全雙工:在同一時間允許雙方都可以同時發送和接收數據
- 不會都是廣播,Switch會記錄封包中的MAC位址,必要時才會廣播
> 判斷決定要送往哪一台電腦,所以會有一些延遲
:::info
#### IEEE對各種類型
- 以10 Base5 為例
- 10:頻寬為10Mbps
- B:表示訊號類型為「基頻 Baseband」
- 5:表示介質的最大傳輪距離為500公尺,後來部分改成以介質的代碼表示,例如:T(雙絞線)、F(光纖)
:::
:::info
### 區域網路內拓樸
> 常用:星狀拓樸、樹狀拓樸
#### 匯流排拓樸

- 特色:各工作站連接在同一傳輪媒介上,形成匯流排結構
- 優點:簡單佈線,適合小型網路
- 缺點:傳輪媒介斷線導致整個網路停擺,故障定位困難,不適用於大型網路
#### 環狀拓譜

#### 星狀拓譜

- 特色:由中央主機 (Switches) 控制,與周圍的工作站點對點連接
- 優點:資料傳輸品質高、資料安全強、網路維護較容易
- 缺點:中央主機故障會使整個網路癱瘓,佈線成本較高
#### 樹狀拓譜

- 特色:多部主機作為中心控制,以點對點方式連接,形成樹狀結
- 優點:具星狀優點,故障影響較小,且擴充性較好
- 缺點:部署和維護柜對複雜,如果主節點失效,會影響整個分支
:::
### 3.3Ethernet乙太網路:資料連結層
> 常見例子:網路卡地址(MAC Adress),Switch
- 由於乙太網路上的所有電腦,都共用同一個傳輸介質(網路線),所以就會面臨(誰先用,誰後用的問題),因此訂下了一套傳輸介質使用管理辦法,MAC Method(Media Access Control Method)
- 乙太網路採用的 MAC Method 稱為 CSMA/CD
#### 3.3.1 CSMA/CD (Carrier Sense Multiple Access / Collision Detection) 工作原理
> 要提到 802.1 的 CSMA/CA
- 碰撞偵測處理
- 適用在多個裝置共享同一傳輸媒介(例如共用的網路電纜)的情況下,ex.乙太網路
- CSMA/CD 並未指派每台電腦的傳輸優先順序,而是開放給大家公平競爭。在電腦數量不多時,是一種高效率的方法,但 隨著電腦數量遞增,發生碰撞的機率也越來越高,效率也隨之下降
- 假設會議室每個座位都有一支麥克風🎤🎤🎤,大家都需透過麥克風發出聲音,但為了避免同時發出聲音,所以一次只有一支麥克風能發出聲音,大家必須公平競爭

1. 要傳送資料前,先偵測媒介上是否有訊號傳輸,如果有訊號,就等到訊號結束,如果沒有就開始傳遞訊號
2. 同時也要監聽是不是有其他訊號同時傳送而導致訊號碰撞
3. 如果設備在傳送過程中偵測到其他設備的訊號(發生碰撞),會立即停止傳送,並發送一個特定的「擾亂訊號 (Jamming signal) 」,來通知其他設備知道碰撞已經發生,並停止傳送
4. 在碰撞發生後、所有參與碰撞的設備都會停止傳送並等待一段隨嘰的時間,然後重新嘗試傳送
5. 而每碰撞一次,代表資料沒有成功傳送,就會裝置內的計數器就會加一,直到嘗試失敗 16 次後就不再傳送,代表此次傳送失敗。

:::info
#### Ethernet Frame格式

- Preamble 同步
- 8bytes
- 前七個欄位是為了讓接觸的時脈能與封包的時脈同步
- 第八個欄位為 SFD 欄位,代表 Preamble 與封包內容的分界
- 獨立 SFD 欄位
- start Frame Delimiter 封包起始分界
- Destination Address 目的位址
- 6 bytes
- 前 3 bytes 為廠商代號,後 3 bytes 為流水號
- 廣播位址全部bits都是1,代表所有的接收端都必須接收此封包
- Source Address
- 6 bytes
- 前3 bytes 為廠商代號,後3 bytes 為流水號
- 記錄此封包的來源 MAC位址
- Length
- Payload 的長度(46-1500)
- Payload 的前三個byte 定義了上層協定的方法
- Data(Payload)資料
- 46-1500 bytes
- CRC 封包檢查結果
- 4 bytes
- 網卡會自動產生 CRC值,接收端收到封包時也會產生一個 CRC值,藉由比對兩個 CRC值,判斷封包是否完整無毀損
### 最大傳輸單元(MTU,Maximum Transmission Unit)
- 乙太網路 (Ethernet)的 MTU 為1500個位元組
- Ethemet Frame 中,最大的長度為1518 位元組 (octet),最短為64位元組(octet),不足的話就用填充位元 (padding) 填滿至64為止
- 不同的資料鏈結層,有不同的MTU

### 巨型封包 (Jumbograms)
- 超過 Ethernet Frame 的MTU,最高可到9000位元組(octet)
- 高效傳輸,但要整個通訊路徑都支援Jumbo Frame
### 最大區段大小(MSS, TCP Maximum Segment Size)
- TCP封包在網路上,每個封包可以傳輸的最大的 data 大小
- TCP協證在建立連接的時候要協商雙方的MSS值
- MSS = MTU - 20 octet(TCP固定表頭)-20 octet(IP 固定表頭)
:::
#### 3.3.4 MAC Address

- 乙太網路採用(廣播)方式傳送封包,封包送出後,網路上的所有電腦都會收到封包,但為了知道不該接受封包,以及封包要傳送的對象,所以每張Ethernet網路卡都邊有一個獨一無二的位置,稱為Media Access Control Address
- MAC 層的每個封包都會記載「從哪裡送出」(來源 MAC Address),「到哪裡去」(目的MACAddress),比對過後就可以得知自己是否為傳送的對象,看是要丟棄此封包,還是要繼續處理此封包
> 舉例:XxX 電話!如果不關我的事就假裝沒聽到
- 在每一張 Ethernet 網卡出廠之前就已經將 MAC Address 寫在網路卡的 ROM,一張網卡就有一個MAC Address在裡面
-可以虛擬、重設定
> 也有人將 MAC Address 稱為硬體位址、 Physical address 、 Layer 2 Address
- 所有想生產網卡的廠商需要向IEEE註冊,取得合法的廠商代號,稱為OUI,目的是為了確保全球唯一性,避免MAC Address重複
- MAC地址是以6 Bytes(48bits)表示
- 第 1 bit 為單播位址 lJnicast ( 0 )/群播位址 MuIticast ( 1 )。
- 第 2 bit 為廣域位址( 0 )/區域位址( 1 )。
- 前 3 ~ 24 bits 為廠商代號。
- 後 24 bits 為產品流水號。例外: MAC 地址中所有 bit 都為 1 (FF:FF:FF:FF:FF:FF),代表是廣播位址
> 所有公寓的住戶都在一起慶祝特殊活動,使用喇叭廣播音樂,這樣每個人都能聽到


:::info
### 第 1 bit
#### 單播位址(Unicast,第1位為0)
- 一對一的傳遞模式(傳送給一個指定的人)
> 今天看到一個好笑的影片,我傳給住在我隔壁的鄰居
#### 群播位址(Multicast,第1位為1)
- 一對多的傳遞模式(傳送給指定的人)
- 封包可以經過路由器傳到其他區域網路
> 把好笑的影片放在ig,可以分享到全球的不同地方,有追蹤我的人都可以看得到
#### 廣播位址(Broadcast,第1位為1且其餘位也都為1)
- 一對多的傳遞模式
- 在區域網路內所有的人都會收到
- 主機都會檢查這個信息是否是發給它的,如果不是,它會忽略它
> 到公寓大廳廣播,讓大家都知道這個好笑的影片,但只有那些有興趣的人會真正去看
### 第 2 bit (U/L bit)
#### 廣域位址(Wide Area Address,第2位為0)
- 在全域具有唯一性
> 像是國際電話號碼,在世界各地都具有唯一性
#### 區域位址(Local Address,第2位為 1)
- 這種 MAC Address 只在特定的區域網路中是唯一的,而在其他地方可能有相同的
> 像是管理學院237教室,只在「管理學院」這個區域內有意義
:::
:::success
### 練習 😎😎😎
- AC:C5:12:45:67:89 uniqlocast
- C9:00:5E:10:00:0A multicast
- FF:FF:FF:FF:FF:FF broadcast
以上MAC Address 何為multicast,unicast,broadcast?
:::
### 3.4 802.11 無線區域網路: 資料連結層
> Review:在有線網絡中,因為只有與網路線相連的電腦才能存取網路,因此雙方可以透過網路線上電壓的變化進行碰撞偵測
- 因為無線電波在空氣中行進時,訊號的強度會隨著距離端增加而衰減,再加上發送訊號時所用的強度和接收訊號時所感知的強度差異大,因此在發送強訊號的同時,不易偵測其他較弱的訊號
- 無線網路有隱藏節點的問題,沒辦法察覺對方傳送的訊號
- 無線網路不易偵測碰撞,採用的 MAC Method 稱為 CSMA/CA
#### 3.4.1 CSMA/CA (Carrier Sense Multiple Access / Collision Avoidance) 工作原理

1. 傳送端在傳送資料之前,要先偵測他所用的頻道是否有別人正在使用先經過一段時間後 (DIFS) ,再加上一個亂數時間
2.
3. 若這段時間有人使用,就重新開始下一次的偵測。若無人使用,傳送端送出 RTS (Request tosend) 封包給接收端,通知對方要傳送資料
4. 接收端收到 RTS 封包後,會在時間內回應 CTS (Clear to send) 封包給接收端
5. 傳送端收到 CTS 封包後,就會開始傳送資料封包。若傳送端沒有收到 CTS 封包,就假設發生了碰撞,表示傳送失敗,會回到第一步重新嘗試
6. 接收端收到資料後會回應 ACK (Acknowledge) 封包進行確認。若傳送端沒有收到 ACK 封包,表示傳送失敗,會回到第一步重新嘗試
## 4. Internet Layer

:::info
Q:為什麼需要IP?
A:達到全球範圍的通訊、MAC Adress只在區域網路中具有唯一性,無法實現跨網路的通訊
- 相同網域:直接透過CSMA/CD使用MAC地址直接傳遞資料
- 不同的網域:需要透過Router連接不同網域,代為傳送
- 協議數據單元(Protocol Data Unit ,PDU)為Packet或Datagram
:::
### 4.1 Internet Protocol(IP)
- IP 是網際網路通用的傳輸協定, IP 負責將 IP 封包從來源裝置傳送到目的裝置(例如:你的電腦->學校的 www 伺服器),要透過 IP 位址、 IP 路由 (IP Routing)
- IP Routing
- 除了要確保網路上每個裝置都有一個公開且經正規管道分配的 IP ,還必須要有轉送的機制,才能將封包透過一個一個的網路,送到目的地
- 目的是要為封包選擇傳送的路徑

- 若 PC01 要傳資料給 PC11 時:
- 看封包目標 IP 位置
- 查看自己主機的 Net_ID 是否與封包的相同 (屬於同區網) ,若相同可以直接傳給目的主機
- 若不同,查詢 default gateway (此為 Server A ) 並傳給它
- 不理會封包流向,default gateway 會執行上述動作繼續往目的地傳送

### 4-2 IP address
- Internet Protocol 中的IP Address (簡稱ip)
- IP 必須負責將封包由來源裝置傳送到目的裝置為了能夠標識出裝置的正確位置,所有使用IP 的裝置,至少都必須有一個獨一無二的IP 位址可以辨識,才能傳送IP 封包
> 郵差要送信必須要有地址(標示出建筑物的位罟)
- ip 分配
> IP 由IANA全球樹狀分配

#### 4.2.1 IP address 表示法
> 點分十進位 (Dot-decimal notation)
- 目前主要有兩個ip版本,IPv4與IPv6。IPv4使用32位元表示,總共約有42億個IP位址;而IPv6則使用128位元,擁有龐大的2^128(約3.4*10^38)個ip位址,解決了IPv4位址不足的問題。
| | IPv4 | IPv6 |
| --- | --- | --- |
| 位址數量 | 2^32 | 2^128 |
| 表示方式 | 192.168.64.23 (用.) | 2001:0db8:85a3:0000:0000:8a2e:0370:7334 (用:) |
> 以下以IPv4舉例講解
- IP位址本質是一個32bits的二進位數值,但為了方便記憶,以8bits為單位,將IP位址分成四段,再轉成十進位,用`.`隔開
> 路由器必須要從IP位址來判斷封包如何傳送到哪個網路
- IP位址是由兩個部分組成,合起來為 32 bits
- 網路位址(Network ID)
- 位於IP的前端部分,用來辨識所屬的網路
- 企業或組織申請IP 位址時,所得到的會是一個獨一無二、可以被辨識的 Network ID
- 同一網路上的所有裝置,都會有相同的 Network ID,因此 Router 可以判斷要將封包送至哪個網路
- 主機位址(Host ID)
- 位於IP 的後端部分,用來辨識網路上的各個裝置
### 4.3 IP address 的等級( Class )
- 為了方便管理與識別,IP 可分為五種等級(Class),但一般會使用到的是 Class A、B、C 三種等級,以 Network ID 長度區分,分別使用在大、中、小型網路
- Network ID 和 Host ID 的長度分配
- 大型的網路應該使用較短的 Network ID,才有比較多的 Host ID,小型的網路應該使用較長的 Network ID
- **同一個網域**:在同一個物理網段內,主機的IP 具有相同的 NetWork ID,並且具有獨特的Host ID
- Class A
- 政府機關、國家級研究單位
- Class B
- 大型企業、電信業者、學術單位
- CIass C
- 一般企業、家庭
- Class D
- Multicast
- Class E
- 保留用途


- Network ID
| |Host ID 長度| 前導位元 | 個數 | Range | default NetMask |
| --- | --- | --- | --- | --- | ---- |
| A | 8 Bits | 0 開頭 | 2^7 | 0.xx.xx.xx~127.xx.xx.xx | 255.0.0.0 |
| B | 16 Bits | 10 開頭 | 2^14 | 128.xx.xx.xx ~ 191.xx.xx.xx | 255.255.0.0 |
| C | 24 Bits | 110 開頭 | 2^21 | 192.xx.xx.xx ~ 223.xx.xx.xx | 255.255.255.0 |
:::success
### 計算Net ID and Host ID
- Net ID:`IP` AND `Net mask`
- Host ID: `IP` AND `~Net mask`
#### Q:有一IP Address:3.4.5.6為classA,請問Net ID、Host ID為何?
- NetID:`3.0.0.0`
| IP Address | 3.4.5.6 |
| - | - |
|Binary|`00000011.00000100.00000101.00000110` |
|Netmask|`11111111.00000000.00000000.00000000`|
|AND|------------------------------------------|
|Net ID|`00000011.00000000.00000000.00000000`|
- Host ID:`0.4.5.6`
| IP Address | 3.4.5.6 |
| - | - |
|Binary|`00000011.00000100.00000101.00000110` |
|~Netmask|`00000000.11111111.11111111.11111111`|
|AND|------------------------------------------|
|Host ID|`00000000.00000100.00000101.00000110`|
練習:有一IP Address:192.168.38.26 為class c ,請問net id 、host ip 為何?
Net ID: 192.168.38
Host IP: 26
192 = 11000000
168 = 10101000
38 = 00100110
26 = 00101010
練習:有一IP Address:130.48.93.73為classB,請問NetID,HostID為何
`ipcalc`
:::
- Public ip / Private ip
- ClassA、B、C 中都保留了一些Private IP, 不能直接連上Internet 的 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 地址 : 169.254.0.0到169.254.255.255
>沒有辦法取得有效的 ip 時,自動分配
### 4.4 Subnet 子網路
* 解決彈性不足的問題,可以自行在內部網路切割 Subnet
> 假設企業被分配到 Class B 的ip 位址,六萬多部電腦連接在同一個網路中會導致效率低落,若只連接十幾部電腦,會造成浪費
* 將分配到的網路切割成規模較小的子網路,再分配給多個實體網路
#### 4.4.1切割的原理
- 讓每個子網路擁有一個獨一無二的 Subnet ID,使 router 能夠辨識切割出來的子網路
- 使用 Host ID 的前面幾個 bits 當作 SubNet id
- 用 Network ID + SubNet ID 作為新的 Network ID
- n個 bit 可以切割出 2**n 個 subnet
- Network ID:此段網路第一個IP,代表此區段網路
- Broadcast ID:此段網路最後一個IP,廣播用途
#### 4.4.2 NetMask(子網路遮罩)
- 路由器不確定 Network id、host id 各自的位元數
- NetMask 長原為32 bits・與ip位址的長度相同
- 由一串連續的1,加上一段連續的0
> 例如:11111111 11111111 11111111 00000000
> 通常寫作:255.255.255.0
- 與ip 位組合可寫作:168.95.192.1/21
> 21代表 subnet Mask 中`1`的数目
:::success
### 求一網段之至多分配主機數
- 以class C 為例 255.255.255.0(11111111.11111111.11111111.00000000)
- Host ID 共8bits
- 2 ** 8-3=253
- 共253台,扣3為廣播位置(Boardcase)、網段位置(Net ID)、Gateway
#### Q:有一IP Adress :192.168.64.23/20,請問他的Net ID 、Broadcast IP 以及此網段可分配之主機數?
- Net ID:192.168.64.0
| IP address | 192.168.64.23 |
| -------- | -------- |
| Binary |11000000.10101000.01000000.00010111|
| Netmask |11111111.11111111.11110000.00000000|
|AND|--------------------------------------------|
|Net ID|11000000.10101000.01000000.00000000|
- Broadcast ID:`192.168.79.255`

- 子網路內IP數量:2 ** (32-20) = 4096
- 可分配之主機數:2 ** (32-20)- 3 = 4093
- range:192.168.64.1 - 192.168.79.254
### 練習
Q:有一IP Address:19.21.68.100/21,請問他的Network ID 、Broadcast IP、子網路內ip數量、此網段可分配之主機數、Range ?
>Ans:
>Network ID: 19.21.64.0
>Broadcast IP: 19.21.71.255
>子網路內ip數量: 2,048
>此網段可分配之主機數: 2,046
>Range: 19.21.64.1 ~ 19.21.71.254
Q:有一ip Address:94.21.138.72/18,請問他的Network ID、Broadcast IP、子網路內ip數量、此網段可分配之主機數、Range ?
A:Network ID: 94.21.128.0
Broadcast IP: 94.21.191.255
子網路內IP數量: 16384
此網段可分配之主機數: 16382
IP範圍 (Range): 94.21.128.1 到 94.21.191.254

:::
### 4.5 ICMP(Internet Control Message Protocol)
>是IP的輔助協議,屬於TCP/IP的2.5層
* IP傳輸
* **保障** 封包的定址和路由功能
* **不保障** 封包在傳送過程中發生的問題,例如:中間的網路可能因故障或其他問題因而導致封包的損壞或丟失。
> 寫地址但不保證郵差把信送到
* ICMP 是IP 的輔助協定,確保設備是否在線上、報告錯誤以及進行網路診斷
* 在IP routing 的過程中發生錯誤,例如:router找不到適合的路徑、無法成功送出封包
> IP負責郵寄信件,ICMP則是郵差的通知服務
* 常見ICMP工具
* Ping
* Traceroute
:::success
### Ping
- 發現網路連線異常,可以發送 Echo Request 給特定主機或 router,由近而遠逐步鎖定問題
- `ping<参數><網址 或 ip>`
- `ping 127.0.0.1`:測試 tcp/ip 協定
### Traceroute
- 找出至目的IP 所經過的所有 router
- `traceroute <參数><網址 或 ip>`
:::
### 4.6 ARP/RARP
#### ARP(Address Resolution Protocol)
- 只能在區域網路內解析網路裝置的 MAC Address
- 知道裝置的IP 時,查詢對應的MAC Address
- A 電腦要傳送封包給C電腦,A電腦知道C電腦的IP 位址,但不知道MAC位址
- A 電腦發送 ARP request 給區網上的所有裝置(廣播封包)
- 用這個 IP 的裝置會回應 ARP reply(C電腦會產生回應)
- A把C電腦的 MAC 位址回傳
- Cache: A 將該筆 IP/MAC 寫入 ARP Table 中,保持20分鐘


:::success
### 查看 ARP Table
- `arp -n`:以 IP Address 查看 Table
- `агр -d <1р位址>`:刪除特定紀錄
- `arp -s <ip位址> <Mac 位址>`:新增一𥯤靜態紀錄
> 過了兩分鐘不會被刪除,但重新開機後就會被清除
:::
:::info
### ARP spoffing
- 偽造惡意的 ARP reply,覆蓋原本的 ARP Table
- 讓後續的IP 封包傳送到攻擊者電腦上
- 如果攻擊者也對通訊的另一端發送惡意 ARP reply,即能監聽雙向流量(被動式封包嗅探,passive sniffing)
- 篡改後再轉送封包(中間人攻擊,man-in-the-middle attack)

:::
#### RARP (Reverse Address Resolution Protocol)
> 大部分現代作業系統已經不再支援 RARP,被 DHC取代
- 從 MAC address 反查出 IP
- 主機每次啟動時需要使用 RARP 向網路上的伺服器(如 DHCP Server)請求分配一個IP 位址