# 企業資訊通訊與網路
## 引言
- 中文與英文是「協定」
- 透過中文或英文溝通是「通訊」
- 講話的內容是「資料」

- 使用的語言(協定)不同,理解不能
---

- 使用的語言(協定)一樣,溝通無礙
---
人類具有智慧、理解力,即使脫離原則,還是可以與對方溝通

但電腦沒有這樣的理解力,在電腦之間的通訊,無論是以太網路等實體層,還是應用程式的軟體層面,都需要明確規範並遵這個約定,這個約定就是「協定」
---
約定是約定了,但要聽誰的...?

---

---
## OSI 模型
> OSI 模型沒有具體的協定,而是抽象的參考模型,不是一個標準,而是一個在制定標準時所使用的概念性框架
| | 層 | 功 能 | 範 例 |
| - | --- | --- | --- |
| 7 | 應用層 | 針對應用程式的協定 | 電子郵件、檔案傳輸、遠端連線 |
| 6 | 表現層 | 負責資料的加密和解密,確保不同格式之間的轉換和壓縮 | JPEG、GIF |
| 5 | 會議層 | 決定通訊會話的建立、連接時間和切斷 | NFS會話控制、SIP會話發起協定 |
| 4 | 傳輸層 | 提供值得信賴的資料傳輸,可以進行流量控制、錯誤檢測和重傳 | TCP、UDP |
| 3 | 網絡層 | 確保封包在不同網路間的路由路徑選擇和轉發 | IP、路由器、ICMP |
| 2 | 資料鏈接層 | 負責 Message 與 bytes 之間的轉換 | MAC address、PPP |
| 1 | 實體層 | 負責網路硬體的傳輸方式,包括訊號的生成、電壓控制、訊號傳輸速率等 | 以太網路纜線、Wi-Fi、藍牙 |
---
我們用 HTTPS 來解釋 OSI 模型
### **應用層 Application Layer**
- HTTPS 會在這一層發起請求和接收回應。在瀏覽器中輸入網址後,應用層負責和 Web 伺服器之間進行通訊,建立一個 HTTPS 連線,並將 HTTP 資料封裝進這個連線中傳送。
### **表現層 Presentation Layer**
- 這層主要處理數據的加密和解密。HTTPS 使用的 TLS/SSL 加密技術就在這一層,將應用層的資料進行加密處理,確保數據傳輸的安全性和隱私性。
### **會議層 Session Layer**
- 在 HTTPS 中,會議層管理伺服器和客戶端之間的會話。例如,建立、維護和終止加密的 HTTPS 會話(如 TLS 會話)就在這一層進行。
### **傳輸層 Transport Layer**
- 這一層負責資料的傳輸和連接的可靠性。HTTPS 使用 TCP 來進行數據傳輸。當你建立一個 HTTPS 連線時,傳輸層會先建立一個 TCP 連接,保證數據包按順序、無遺失地傳遞。
### **網路層 Network Layer**
- 網路層處理資料包的路由與轉發。當使用 HTTPS 時,網路層會將資料包從客戶端傳送到伺服器,確保每個封包找到正確的路徑傳送到目的地。
### **資料連接層與實體層 Data Link & Physical Layer**
- 負責實際的硬體傳輸,像是光纖、Wi-Fi 等介質,數據會以電子訊號形式在硬體設備間傳輸。當我們使用 HTTPS 瀏覽一個網站時,資料的物理傳輸就在這一層進行。
---
雖然 OSI 模型劃分了七層,但在實際應用上,很少有產品可以符合 OSI 模型的定義,有些層數在實務上是可以合併的,這裡來談談 DoD 模型,別稱 TCP/IP 模型
---
## TCP/IP 模型
雖然兩種模型各有自己的架構,但基本上能互相對照

|OSI 模型||DoD 模型(TCP/IP 模型)|
|---|---|---|
|國際標準化組織 (ISO) |主要組織| 美國國防部(Department of Defense) |
|七層|層數|四層|
|理論性的分層模型,不常用|用途|現實世界中網絡通訊常用的模型|
## Fragments, Frames, and Packets

---
# Ch1&2 TCP/IP 各層內容
## Link layer

### Ethernet vs Wi-Fi
| 網路 | 標準 | 功能 | 傳輸媒介 | 碰撞處理(CH.6) |
| -------- | -------- | --- | --- | -------- |
| Ethernet 乙太網路 | 802.3 | 區域網路上的通訊協定 | 雙絞線 | CSMA/CD |
| Wi-Fi無線網路 | 802.11 | 無線區域網路的電腦通訊標準 | 5、2.4GHz無線電波 | CSMA/CA+ACK |
---
### MAC Address

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

:::
:::success
查看 ARP Table
- `arp -n`: 以 IP Address 查看 Table
- `arp -d <ip 位址>`: 刪除特定紀錄
- `arp -s <ip 位址> <Mac 位址>`: 新增一筆靜態紀錄
> 過了兩分鐘不會被刪除,但重新開機後就會被清除
:::
---
### Connecting device
- 早期用 hub

- broadcast 收到資料就全部傳出去
> 不安全,在連同一個 hub 的情況下,資料會互通
- 半雙工(half-duplex)
- 收資料或送資料不能同時,一次只能作其中一種

---
- 現在 switch 最常見

- 可以建立 MAC address table
> 不同種類、規格儲存不同數量的 Mac address
- 每個 port 會紀錄 client 的 Mac address
> 檢查 Mac address 後會指定一個 port 傳輸,解決資料互通的隱憂

- 全雙工
---
## 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
Internet Protocol 中的 IP Address (簡稱 IP)
同樣分 Source & Destination Address
- IPv4: IP address 以32 bits 表示,為目前主流
- 現在在網路上的主機數已將多過 IPv4 32位元可以表示的數量
- 2^32 = 4294967296
- IPv6: IP address 以 128 bits 表示,未來趨勢,以 128 bits 的方式呈現
---
### IP address
IP 位址(IPv4 位址)在電腦內部是以二進位 32bits 處理,但我們很難解讀二進位,所以我們採用分組的方式,將 32bits 的 IP 位址,以 8 位元分成一組,共分成四組,並以十進位表示,像是 10.107.26.215 就是
| | | | | |
| -------- | -------- | -------- | -------- | --- |
| 00001010 | 01101011 | 00011010 | 11010111 | BIN |
| 10 | 107 | 26 | 215 | DEC |
:::success
MAC Address VS IP Address
| MAC addr | IP addr |
| ----- | ----- |
| 區網路下區分裝置 | 控制裝置在全球網域下的溝通
| 12digits, 6 對 16進位 <br> EX: CC-3A-2A-E1-51-AA | IPV4: 32bits 4對3位十進位表示 <br> 192.168.0.121 <br> EX: IPV6: 128bits 8 對 4 位 <br> EX: fe80::f060:18c6:27de:595d...
| 不能隨意改變(要跟IEEE申請) | 可任意改變
| physical address | logical address
| 寫在網卡的 bios 內 | 在傳遞過程中改變
:::
:::info
:::spoiler 點擊展開 補充:Gateway
- 一般人放在家裡的**住宅閘道器**(residential gateway)通常提供:
- 通過網頁介面設定
- 在家庭網路與網際網路之間路由 (Router)
- 提供家庭網路的連通性,就像一台網路交換器 (Switch)
- 網路位址轉換(NAT)
- DHCP
- 防火牆功能
- 也可能內建
- 數據機 (modem,modulator-demodulator 的縮寫,俗稱小烏龜)
- 動態 DNS (DDNS)
- Wi-Fi 基地台
:::
:::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 組成之集合
同一網域 透過 switch 用 MAC address 溝通
不同網域 透過 Router 用 IP address 溝通
:::
---
## Transport Layer

:::info
- 如果只有 IP 位址,若有不同的軟體要同時進行傳輸,所有的資料就會從同一個出口一起通過,會產生碰撞。
- 連接埠:讓同一台電腦擁有多個對外的出口,讓網路傳輸有多工的能力
- 每個 Port 對應到不同的網路
:::
### Port (通訊埠(ㄅㄨˋ)口)
- 接收方與傳送方皆需要 port(連線通道)來傳遞資料
- 舉例: IP 為門牌號碼, port 為哪個窗口
- https: 443, www: 80
- 為TCP Header 的 Sourse Port 與 Destination
---
### UDP(User Datagram Protocol)
- 
- Checksum: 確認資料是否丟失
- 僅提供傳輸基本功能,負責處裡封包要傳送到哪個 Port

- 追求即時性且能容忍一些封包丟失的情況(盡力傳遞)
- 串流服務、視訊、音訊
- 優點:比較快、資料大小較小
---
### TCP
- 可靠的傳輸方式—>保障資料完整性
- 連線導向 (Connection-Oriented):傳輸資料前先建立連線,協調參數(用於資料確認與重送、流量控制)
> 利用三項交握建立連線
- 資料確認與重送:確認目的端是否收到已送出的資料
- 流量控制:視情況調整資料傳輸的狀況,盡量減少資料的流失
#### Three-way Open

| SYN | SYN, ACK |
| -------- | -------- |
|  |  |

#### 資料確認與重送
- A 傳送 packet1 給 B
- B 回應 ACK 封包給 A
- 如果A在時間內沒有收到B的ACK封包A就會重新傳送 packet 給 B
| SYN | SYN, ACK |
| -------- | -------- |
|  |  |
以這張圖為例,我發送了一個封包序號為 801223437 的封包, server 收到後會回應 801223438 也就是 801223437+1,表示 801223438 之前的資料都收到了。
假設今天這個封包在傳輸過程遺失了,我們過了一段時間都沒有收到來自 server 回傳的 Ack. Number = Seq. Number+1,我們就可以知道資料遺失,進而重新傳送資料,完成可靠性的通訊。
#### TCP Header

- SourcePort(來源埠號):
長度為 16 bits,用來記錄來源主機的 port
- DestinationPort(目的埠號):
長度為 16 bits,用來紀錄目的主機的 port
- SequenceNumber(序列號):
長度為 32 bits,用來記錄每個封包的序號。當 TCP 資料太大時(大於 IP 封包的容許程度)就必須進行分段,利用 Sequence Number 讓接收端組合資料
- AcknowledgmentNumber(確認號):
長度為 32 bits,接收端確定之前傳遞的封包已被正確收下
:::spoiler Code (Control Flags, 控制標誌碼):
長度 6 bits,用來控制訊息的傳遞。此欄位共 6 bits 分別代表 6 種不同功能的控制碼,只要該位元被設定為 1,表示此封包內有包括該訊息。
- URG(Urgent,緊急):
若為1表示該封包為緊急資料,接收端應該要緊急處理,並使 Urgent Point 欄位被啟用。
- ACK(Acknowledge,確認回應):
若為1表示該封包為回應封包,具回應確認功能,確認 Acknowledge Number 欄位中所指定的順序號碼。
- PSH(Push,推送):
若為1表示要求對方立即傳送緩衝區內的其他對應封包,無須等待緩衝區滿了才送。
- RST(Reset,重設):
若為1表示連線被立即結束(強迫性),無需等待終止確認手續,且發送端已斷線。
- SYN(Synchronous,同步):
若為1表示發送端通知對方要求建立連線。
- FIN(Finish,完成):
若為1表示傳送結束,通知對方資料傳輸完畢,是否同意斷線。發送者還在連線中等待對方回應。
:::
:::spoiler 其他
- Window(視窗大小):
代表「接受視窗」(receive window) 的大小,用來控制封包流量,告訴對方目前本身還有多少緩衝器(Receive Buffer)可以接收封包。
- Checksum(檢查碼):
確定所收封包是否在傳輸過程中出現錯誤
- UrgentPoint(緊急資料指標):
指出緊急資料在 TCP 資料的哪裡
ex. Urgent Pointer = 3 :arrow_right: TCP 資料的 0~3 個 bytes 是緊急資料
:::
#### Closing

---
### TCP/UDP 比較
| | TCP | UDP |
| ------- | ----------- | ----- |
| 可靠性 | 可靠 | 不可靠 |
| 封包確認 | ACK | - |
| 速度 | 慢 | 快 |
| 傳輸方式 | 封包按順序傳輸 | 封包以串流方式傳輸 |
| 錯誤檢查與修正 | 有 | 無 |
| 逾時處理 | 逾時重傳、高速重傳(指定封包) | 逾時重傳(全部封包) |
| 雍塞控制 | 有 | 無 |
| 適用服務 | **要求可靠運輸的服務**, ex :SSH、文字聊天、電子郵件、檔案傳輸...等不能漏缺資訊的服務 | **講求速度的即時服務** ex: 串流媒體、網路電話 |
---
## Application Layer




---
### HTTP(Hyper Transfer Protocol ,超文本傳輸協定)
- 全球資訊網(www)的網路通訊的基礎
- 用於網頁前後端溝通,瀏覽器向伺服器發送請求,伺服器回傳相應的資料

:::info
HTTP Request Method
- Get:
- 較 post 不安全
- 訊息會顯示在head,body 不傳資料
- 傳遞的參數會在URL上顯示
- 流程:
- 瀏覽器發出Get請求,只產生一個TCP封包
- 伺服器回應200 ,表示請求成功,同時返回資料
- Post:
- 較Get安全
- 將參數放至body中再發送request
- 不會在 URL 看到參數,適合用於隱密性較高的資料, EX: 登入的帳號、密碼等
- 流程:
- 瀏覽器發送 Get 請求,只產生一個 TCP 封包
- 伺服器回應 200 ,表示請求成功,同時返回資料
- Put:新增一項資料,如果存在就覆蓋過去(維持一筆資料)
- Patch:附加新的資料在已經存在的資料後面(資料必須已存在)
- Delete:刪除資料
- Head:只會取得 HTTP header 的資料
- Option:可以了解 server 提供哪些溝通方法
:::
### FTP
- FTP 是應用於檔案傳輸、檔案共享使用,將共享檔案存放於 FTP 伺服器,讓一般使用者可以透過網路來下載或上傳。他的重要是在異質性電腦之間,以及遠距離的檔案共享。

> 監控連線: 21 port,傳輸資料: 20 port
1. FTP 檔案傳輸系統採用 **主從式模式**,FTP伺服器端隨時監視埠口 21(TCP/21) 是否有連線要求,FTP 客戶端需要連線時,便由著名埠口 21 連結到 FTP 伺服器
> 主從式: client 向 server 發 request 才會有 response
2. 伺服器端同意連線後(驗證使用者及使用密碼),便建立並保持著控制連線,以便隨時間換訊息,當需要傳輸檔案時,再建立資料連線,傳輸後立即釋放該資料連線,一般伺服器端地連線資料連線都建在埠口 20(20/tcp)
3. 雙方透過資料連線來存取各自檔案系統(File System)中的檔案
### DNS
> UDP: 大部分時候
> TCP: :one:當封包過大時 :two:要確保此 DNS 資料庫資料和其他 DNS 相同時

- UDP 協議: DNS 查詢的資料包較小、機制簡單; UDP 協議的額外開銷小、有著更好的性能表現。
- TCP 協議: DNS 查詢由於 DNSSEC 和 IPV6 的引入迅速膨脹,導致DNS回應經常超過 MTU (傳輸單元最大值)造成資料的分片和丟失,我們需要依靠更加可靠的 TCP 協定完成資料的傳輸。
> 隨著 DNS 查詢中包含的資料不斷增加,TCP 協定頭以及三向交握帶來的額外開銷比例逐漸降低,不再是佔據總傳輸資料大小的主要部分
- 一般情況皆使用 UDP,因為在查找網址時較講求速度,就算掉包了再重送就好
> 注意!DNS 可能會同時使用 TCP 與 UDP 協定。
- UDP 封包大小較小,資料大小超過 512 位元組的限制時會被截斷,如果從 DNS 得到回應,3~5 秒後會使用 TCP 重送。
> TCP 會對封包
- DNS 區域轉送 (Zone Transfer),DNS 要確保資料庫(主 DNS 與副 DNS)資料相同,當有變動時,會用區域轉送來保持資料一致,此時會用 TCP 傳送。
---
## TCP/IP 統整
| 層級 | 資料型態 | 負責事項 | 常見協定 | 傳送依據 |
| -------- | --- | --- | -------- | -------- |
| Application | message | 定義應用程式如何提供服務 | HTTP, FTP, DNS, SMTP, SSH | |
| Transport| segment | 負責傳輸過程的流量控制、錯誤處理、資料重送等工作。 | TCP, UDP, RTP, SCTP | port |
| Internet(Network) | packet | 決定資料如何傳送到目的地。 | IP, ICMP | IP Address |
| Data Link | frame | 負責網路對硬體的溝通。 | Ethernet、Wifi | MAC Address |
:::success
### 常見服務對應的 port
| Port number | 服務 |
| --- | --- |
| 21 | FTP(File Transfer Protocol,檔案傳輸協定)|
| 22 | SSH(Secure Shell Protocol,加密式連線)|
| 23 | Telnet (遠端連線伺服器軟體)|
| 25 | SMTP (簡單郵件傳輸協議)|
| 53 | DNS (Domain Name Server,功能變數名稱伺服器)|
| 80 | HTTP (HyperText Transport Protocol,超文本傳輸協定),用在 www|
| 443 | HTTPS (超文字安全傳輸通訊協定是 HTTP 的安全版本) |
:::

---
## 懶人包
:::success
我(Host A)要寄水果(Message)到嘉義布袋給我爸(Host B)
:arrow_down:
TCP 幫我拆成蘋果、香蕉、葡萄三個 Segment
IP Address 加上目的地**嘉義**,起點**南投**、寄件人與收件人,Segment 包成 Packet
MAC Address 加上目的地**布袋**,起點**埔里**,Packet 包成 Frame
:arrow_down:
我大叫讓埔里郵局(Switch)收到消息之後幫我送Frame,大叫就是 Broadcast 廣播
:arrow_down:
埔里郵局看了我的Frame,發現**南投**裡面沒有地方叫**布袋**(目的地網卡卡號不在 LAN 區域網路),要到**其他縣市**(WAN 外網),所以送到南投大郵局(Router A)
:arrow_down:
因為我要送的地方在**嘉義**不在**南投**,南投大郵局(Router A)透過地圖(路由表)算出最短路徑(路由演算法),指定郵差幫我送到嘉義大郵局(Router B),這種指定傳送的方式稱為 Unicast 單播
:arrow_down:
嘉義大郵局(Router B)幫我轉送到布袋郵局(Switch)
:arrow_down:
布袋郵局(Switch)廣播叫我爸來領貨
:+1::+1::+1::+1::+1:
---
我(Host A)要寄一盒刀片到草屯~~分局~~某田性少年(Host B)
:arrow_down:
TCP 幫我拆成一片一片的刀片,Segment
IP Address 加上目的地**南投**,起點**南投**、寄件人與收件人,Segment 包成 Packet
MAC Address 加上目的地**草屯**,起點**埔里**,Packet 包成 Frame
:arrow_down:
我大叫讓埔里郵局(Switch)收到消息之後幫我送Frame
:arrow_down:
埔里郵局(Switch)看了我的Frame,發現**南投**裡面有地方叫草屯(目的地網卡卡號在 LAN 區域網路),所以直接寄到草屯郵局(Switch)
:arrow_down:
草屯郵局(Switch)看了IP與MAC Address,確實是寄到這,廣播收件人
:arrow_down:
田少年獲得刀片
:::
---
# Ch.3 Network Security
## DDoS

1. 阻斷服務攻擊(DoS攻擊)的目的是通過大量非法請求淹沒目標,導致Website、Server或其他網路資源的功能中斷。
2. 在分佈式阻斷服務(DDoS)攻擊中,直接攻擊受害者的程式通常被稱為機器人(bots)或殭屍電腦。這些是由更大的受感染機器網路組成,稱為機器人網(botnet),這些機器同時發送大量流量或請求以壓倒目標系統。
3. 在此背景下用於攻擊的受感染電腦集合被稱為“botnet”。這些機器通常被惡意軟體感染,使它們能夠在擁有者不知情的情況下被遠程控制。
4. 控制botnet的人通常被稱為“bot-master”或“bot-herder”,這個人可以命令botnet執行惡意活動,包括DDoS攻擊、發送垃圾郵件和竊取資料。
5. 在DDoS攻擊的背景下,攻擊者向botnet中的受感染電腦(bots)發送消息或命令。然而,這些命令的最終目標是攻擊者打算攻擊受害者的Server或基礎設施。
6. 機器人能夠從botmaster處接收更新的命令和軟體,botmaster能夠根據需求調整網路行為和部署各種類型的攻擊,以及通過改變策略來逃避檢測。
7. 分佈式阻斷服務(DDoS)攻擊的步驟通常包括:
:::spoiler 攻擊的步驟
- **招募**:透過釣魚攻擊、利用漏洞或嵌入可下載文件的惡意軟體來感染多台電腦,創建botnet。
- **控制**:攻擊者建立對botnet的控制,使用命令和控制(C&C)server,使得遠程指揮受感染的機器成為可能。
- **執行**:攻擊者向botnet發送命令以啟動攻擊。每個機器人向目標系統發送請求,如HTTP請求或TCP連接請求。
- **擴展**:在某些攻擊中,惡意流量被擴展,增加其效力。例如,使用開放的DNS或NTP server的擴展效應。
- **影響**:目標server或網絡因大量請求而壓倒,導致服務速度降低或造成服務中斷。
- **持續**:攻擊通常會持續一段時間,或間歇性重複,以持續阻斷服務或利用談判勒索。
:::
### 應對DDoS攻擊的防範方法,可參考使用CDN
[CDN](https://www.cloudflare.com/zh-tw/learning/cdn/what-is-a-cdn/)
---
## 其他攻擊
:::spoiler 點擊展開
### Malware Attacks
> 泛指任何惡意程式
#### Vulnerabilities and Patch
> 可藉由特殊攻擊或一連串攻擊,鎖定並攻擊存在缺陷的程式
### Viruses and Worms
#### Viruses
> 需要連接到目標程式
#### Worms
> 一個能獨立存在的惡意程式
#### Typical Propagation Vectors
> 泛指透過硬體連接或惡意軟體的攻擊手段,如USB-Killer
#### Directly propagating
> 可讓被感染的電腦做為病毒跳板及帶原者攻擊其他設備
#### Mobiles Code on Webpage
> 一種存在於網頁原始碼中的惡意程式
#### Trojan Horses
> 偽裝成無法辨識為病毒的木馬程式
#### Downloaders
> 啟動後會自動下載大量惡意或非惡意的檔案,嚴重占用儲存空間
### Payloads
> 專為造成嚴重傷害而生的惡意程式,能清除目標電腦的所有資料,亦或是透過遭感染的電腦對其他電腦發動攻擊
### Attack on Human Judgment
#### Social Engineering
> 惡意連結
#### Phishing(Physical fishing) Attacks
> 釣魚網站
#### Credit Card Number Theft
#### Identity Theft
> 竊取個資
:::
---
## Defend - Protecting dialogues cryptography
> Cryptography 運用數學函式的密碼學來保護資料
### Host-to-Host Visual Private Networks(VPNs)
**SSL/TLS**是 Webserver VPN中最常見的加密系統。**SSL/TLS**最初由Netscape創建為安全套接字層 **Secure Socket Layer(SSL)**。後來,IETF 接管了這個標準,將其重新命名為傳輸層安全性 **Transport Layer Security(TLS)**。今天它仍然被兩種名稱稱呼,因此我們稱之為**SSL/TLS**。
當我們使用 SSL/TLS,網址的URL開頭將變成 "**https://**",這時TCP的port號將從 **80** 變成 **443**
:::info
## Appendix - 加密式連線
- 將人看得懂的原始資料,經過演算法加密,變成人看不懂的亂碼後進行傳輸,而當接收端收到資訊想查閱時再進行解密。
> 情境例子:我為了不想讓周遭的人聽到我跟朋友的交談內容,我把我講的話翻譯成獨創語言,之後說給聽得懂獨創語言的朋友聽
### 常見加密方式
> 所以對稱,非對稱各自優缺差別在哪裡
#### 對稱式加密
- 接收端與發送端皆有相同的密鑰,用來做加密

REF
>REF_AES
>REF_DES
#### 非對稱式加密
- 一位使用者會有兩隻金鑰
- 公開金匙(Public Key):可給指定對象
- 私密金鑰(Private Key):自己保留用
>簡稱公鑰,私鑰
- 利用其中一隻進行加密,則一定要用另外一隻進行解密
- 公鑰加密私鑰解密
- 私鑰加密公鑰解密
> 兩模式皆可
> 就像兩人持有不同的翻譯機
> 我先拿了中翻英的系統加密,但一定要拿英翻中的系統才能解密
> 但公鑰是拿來給別人用的,所以私鑰加密公鑰解密這件事不會拿來加密訊息
> 加密數位簽章
- 
>Hash雜湊函數
>簡單來說就是加上了寄件者的簽章,而將Hash過的訊息當做簽章
- 到收件方除了利用自己的私鑰解密,也要用寄件者的公鑰進行簽章確認
- 就像是針對資料加密後再上一層指紋鎖
- 流程
- 
- 兩個雜湊數值相同即可證明是寄件人本人傳送
> REF_流程
REF_加密
:::
---
## Firewalls
### Limitations of Stateful Packet Inspection (SPI) Firewalls

For TCP, only packets with SYN segments attemp to open a connection.

> What will the SPI firewall do if the destination host is 10.47.122.79 and the service is 80?
Ans: Rule 2
> What will the SPI firewall do if the destination host is 10.47.122.79 and the service is 25?
Ans: Rule 1
> What packets will match the third row?
Ans: Brain not braining:x:

> What if the internal IP address is 128.171.34.5, the external IP address is 60.3.5.75 and the source and destination ports are 4747 and 25?
Ans: Not matched to either row. The packet will dropped and loaded.
> What if the internal IP address is 128.171.34.9, the external IP address is 60.3.5.75 and the source and destination ports are 4747 and 25?
Ans: Brain not braining:x:
### Next-Generation Firewall (NGFW) Operation (server)
> 傳統SPI firewalls 僅會觀察 IP Address 和 Ports 號,但Next-Generation Firewall (NGFW)還會對封包做細部的檢查,如下
#### Deep Packet Inspection(DPI)
> 對封包做深度檢查,DPI會檢查封包的所有東西,如Application Layer的messages、Transport Layer的segment、IP version, source IP address, destination IP address, time-to-live, etc.
#### Application Awareness
> NGFWs能夠識別經過網絡的應用程式(例如Facebook、YouTube或企業應用),這個技術很重要的原因是大部分傳輸都會用到 80port,一家公司可能會限制Youtube僅能佔用 80ports 5%的流量。
#### Intrusion Detection System (IDS) Instrusion Protection System (IPS) Functionality
> 入侵偵測(IDS)系統主要功能在負責監聽網路封包,依據預先設定的安全策略(Security Policy),對網路與系統的運行狀況進行監測,當發現異常,自動發出警訊通報給網管人員,記錄各種攻擊企圖、攻擊行為或者攻擊結果。
> 入侵防護(IPS)系統則化被動為主動,當發現網路異常封包或行為時,系統除發送警訊通報給網管人員,並立即採取必要的處置措施,例如阻斷來源IP。
#### Reputation Management
> 白名單黑名單
---
# Ch.4 Network and Security Management
## Network Quality of Service (QoS)

1. 頻寬: 連結速度。QoS 可以告訴路由器如何使用頻寬。例如,將特定頻寬量指派給不同流量類型的不同佇列。
2. 遺失: 由於封包遺失而消失的資料量,這通常是因為網路壅塞所導致。QoS 可讓組織判斷在此情況發生時,要捨棄哪些封包。
3. 抖動: 由於壅塞導致網路封包的速度不穩,可能導致封包延遲和不按順序到達。這可能會導致傳送的音訊和視訊發生失真或斷訊。
4. 延遲: 封包從來源到目的地所花費的時間。這通常會受到佇列延遲的影響,即在壅塞期間封包傳輸前在佇列中等待。QoS 可讓組織為特定類型的流量建立優先順序佇列,藉此避免發生這種情形。
### Rated speed v.s. Throughput
**Rated speed** 是網路供應商聲稱提供的速度,**Throughput** 則是實際速度
> You are in a Wi-Fi hot spot with 20 other people. The access point router is rated as following the 802.11ac standard with options providing 300 Mbps. Throughput is about 50%. At a certain moment, you and four others are sending and receiving. What individual throughput are you likely to receive?
Ans: 30 Mbps
### Service Level Agreements (SLAs)
> 服務水準協議 (SLA) 是一種網路供應商向客戶簽署的合約,保證其提供的網路具有一下幾種特性
#### Guarantees specify worst cases (no worse than)
- Lowest speed (e.g., no worse than 1 Mbps)
- Maximum latency (e.e., no more than 125 ms)
- SLAs are like insurance policies
#### Often written on a percentage basic
> 用百分比做為標準
- No more than 100 Mbps 99.5% of the time
- 想要提高百分比這個合約就會越來越貴
#### Residential services are rarely sold with SLA guarantees
> 通常僅有大型企業網路會需要簽訂SLA協議
---
## Network design 待補
---
## Strategic security planning principles
> "Security is a process, not a product."
### The Plan-Protect-Respond Cycle

---
## Centralized Network Management
### The Simple Network Management Protocol (SNMP)
Simple Network Management Protocol (SNMP) 是一種用於網路管理的協議。它被設計用來管理和監控網路設備(如Router, Switch, Servers等)上的數據。SNMP 提供了一個標準化的框架,通過它可以從網絡上的設備收集數據,監控和管理這些設備的運行狀況,並在發生異常時發出警報。

1. **Manager**:在 Network Operations Center(NOC),有一台名為Manager的電腦。Manager管理著大量的設備,例如Router, Switch, Servers等。
2. **Agent**:Manager並不直接與被管理的設備對話。每個被管理的設備都有一個Agent,Agents可以是硬體、軟體或兩者兼有。Manager與Agent對話,Agent則與被管理的設備對話。
3. **Management Information Base (MIB)**:NOC會使用 SNMP 不斷從被管理設備收集資料,並將這些資料放在MIB,使 NOC 管理員能夠了解網路的流量情況。
4. **Command**:SNMP 的常用指令
- **GET**:用來從Agent獲取資料。
- **SET**:用來設置Agent中的變數值。
- **TRAP**:Aggent主動發送給Manager的異常或狀態改變通知。
---
## Centralized Security Management
防火牆管理員使用一個集中化的系統來設定和管理所有的安全規章,所有的安全規章都會儲存在一個集中化的防火牆策略服務器上。

這個集中化的策略確保所有防火牆都遵循同一套規則,減少了策略分散管理所帶來的風險和錯誤。
當需要更新安全規章時,管理員只需在集中化的系統中進行修改,所有相關的防火牆都會自動接收到更新並進行應用,這大大提高了管理效率和策略的一致性。
---
# Ch.5 Ethernet (802.3) Switched LANs
## Ethernet physical layer standards

不同的實體介面,如:光纖(Optical fiber)、雙絞線(Twisted pair)等。其中**無遮蔽雙絞線**(Unshielded twisted-pair cables, **UTP**)取代同軸電纜成為主流。UTP由四對不同顏色的傳輸線互相纏繞所組成,被廣泛用於電腦網路,但由於使用過長的UTP電纜傳輸資料會引致訊號衰減問題,但其價格較光纖和同軸電纜低,因此UTP主要用作短途傳輸,一般不多於100米。

**RJ45**也取代AUI成為電腦跟雙絞線之間的連接器插頭,也被稱為**8P8C**(8 position 8 contact)意思是8個位置(Position,指8個凹槽)、8個觸點(Contact,指8個金屬接點)

### 雙絞線類型 (Twisted pair)
由兩條相互絕緣的導線按照一定的規格互相纏繞(一般以順時針纏繞)在一起,兩條線搭載著相同但相反的訊號,受到相同的noise干擾,在receiver端對這兩條做相減,noise就會被cancel掉。有許多類型:
| Name | Standard | Bandwidth | Speed | UTP Category | Length | Notes |
| ---- | ---------- | -------- | --- | ------------------------- | ---------- | -------------------- |
| Cat5 | 100BASE-TX & 1000BASE-T | 100MHz | 100 Mbps | Category 5e, 6, or higher | 100 meters | 最常用的乙太網電纜 |
| Cat5e | 100BASE-TX & 1000BASE-T & 2.5GBASE-T | 100MHz | 1 Gbps | Category 5e, 6, or higher | 100 meters | Cat5增強版本 |
| Cat6 | 10GBASE-T & 5GBASE-T | 250MHz | 10Gbps | Category 6 | 55 meters | 仍為四對雙絞線、RJ45 |
| Cat6A | 10GBASE-T | 500MHz | 10Gbps | Category 6A | 100 meters | |
### 命名規則
* **開頭數字**:傳送速率,10:10Mbits/s; 10G:10Gbits/s
* **BASE**:基頻Baseband,幾乎所有802.3標準都是基頻乙太網路
* **T**:Twisted pair; **X**:有X通常代表光纖,如:1000BASE-SX、-LX、-BX10 ; **5**:若為數字則代表傳輸距離,再乘100公尺
## 待補
---
# Ch.6 Wireless LANs I
## 待補
---
## 802.11 WLAN Operation
### Wireless Access Points
### Basic Service Sets (BSSs)
### Extend Service Sets (ESSs), Handoffs and Roaming
### Media Access Control
> 遵照 802.11 (WLAN) 標準的MAC在訪問遵循兩種機制,第一種是**CSMA/CA+ACK**,這是**強制性**的,**Access points**與**Hosts**皆要有此機制,第二種是RTS/CTS,非必要
> CSMA/CA+ACK
#### Carrier Sense Multiple Access (CSMA)
- Carrier Sence (CS) : 在傳送資料之前,MAC會先檢查廣播頻道是否空閒。這稱為「Carrier Sense」。
- Multiple Access (MA) : 談的是讓很多人共同來使用的資訊通道,而彼此不互相干擾,因此必須以多工技術(multiplex)架構來提供。
#### Collision Avoidance (CA)
當多個設備同時要使用頻道時,考量到封包延遲過久會被判定為傳送失敗,CA會隨機決定多個設備的使用時間,減少多個設備同時開始傳送資料的機會,從而減少碰撞的可能性,一種簡單暴力但沒效率的演算法。
> 像是隨機決定秒數的十字路口號誌,當綠燈那方的車輛皆通過後,紅燈那方仍須等待號誌燈切換(稱為Dead time),是不是很沒效率?
#### Acknowledgment (ACK)
> 請見 Ch.2 Transport layer
- 當傳送封包後,接收端在收到封包並確認無誤後,會傳送一個回應(ACK)給發送端,表示接收到ACK表示資料包已成功傳送和接收,沒有發生碰撞。
- 如果發送端在設定的期限(會考量 CA 介入的時間)內未收到ACK,它將認為傳送失敗(可能是由於碰撞或其他問題),並會重新嘗試傳送封包。
#### Request to Send/Clear to Send (RTS/CTS)
> TCP的SYN/ACK,當兩個host要建立連線時,一方會先傳送SYN,當另一方收到後會回傳SYN/ACK,之後前者會再傳送ACK,完成三項交握。
套到RTS/CTS,當兩個host要連線時,一方會傳送 **RTS** 訊息,另一方收到後會回傳 **RTS** 訊息並廣播 **CTS** 訊息,當**Access Points**收到有人廣播 **CTS** 訊息後,**Access Points**會限制其他 hosts 封包的傳送,除了新的 **RTS** 請求及**非使用 RTS/CTS(使用CSMA/CA)** 進行封包傳遞以外,其餘 Hosts 必須等待廣播 **CTS** 方傳送完封包,才能繼續傳遞封包。

所以比起**CSMA/CA**,**RTS/CTS**更沒效率,還會降低**Thoughput**
**RTS/CTS** 主要在兩個host都能聽到**Access point**但彼此聽不到對方的情況下有用。使用 **CSMA/CA+ACK** 時,這兩個站點可能會同時傳輸。**RTS/CTS** 消除了這種情況。
---
# Ch.7 Wireless LANs II
## The 802.11i(WPA2) WLAN Security Standard
> 按照加密強度由小到大
### 停用密碼

[Source](https://s.yimg.com/ny/api/res/1.2/18TOxeU5dq7NnRGEookweQ--/YXBwaWQ9aGlnaGxhbmRlcjt3PTk2MDtoPTYwMDtjZj13ZWJw/https://media.zenfs.com/ko/cool3c_598/bdbac1e38eade86266ae0bae2b1d40a7)
### Wire Equivalent Privacy (WEP)
> 別名 802.11 WLANs,是 802.11i (WPA2) 的前身
初期 Wi-Fi 遵循安全的技術標準,IEEE聲稱使用 WEP 的Wi-Fi跟使用有線網路一樣能保障資料安全,然而1997年發布後隨即被破解,駭客只要竊聽久一點即可得到加密規律,因此 WEP-40 與 WEP-104 遭到淘汰。
### Wireless Protected Access (WPA-X)
> 目前最廣泛使用的技術標準,簡單來說就是要密碼啦
#### WPA 1
修正 WEP 一些弱點,一種替代 WEP 過渡標準,但有些無線設備無法使用
#### WPA 2
目前最慣用的標準,幾乎能在所有設備上使用,最常見規範就是網路密碼要8個字以上,**本章重點**

技術上來說已經非常安全了,但有淺在的 Human security 風險
> 密碼無法破解,但可以被洩漏,所以叫 Pre-Shared
解法就是Ch.5 提到的**802.1x**, identify identity

#### WPA 3
2018年發布,更強的標準
---
## Beyond 802.11i(WPA 2) Security
> 就算一家企業完全遵照802.11i標準,仍有三種可能受攻擊的風險
### Rogue Access Points 流氓接入點

流氓接入點是指無線訪問點,該無線訪問點已安裝在一安全網絡上,然而卻沒有得到本地網絡管理員的明確授權,無論是由好心的員工還是由惡意攻擊者添加的,流氓接入點是整個系統防禦最弱的突破口。

[Source](https://www.google.com/url?sa=i&url=https%3A%2F%2Feen.extremenetworks.com%2F152307-beware-of-the-rogues&psig=AOvVaw0utmc6von4VRPJ0xgMlLT7&ust=1714273049727000&source=images&cd=vfe&opi=89978449&ved=0CBIQjRxqFwoTCMCEh_Wy4YUDFQAAAAAdAAAAABAE)
### Evil Twin Access Points and Vitual Private Networks
#### Evil Twin Access Points 邪惡的雙胞胎

攻擊者可透過建立**假的 AP(Access Points)**,最常以免費WiFi出現,他們通常具有非常強的訊號,以此引誘受害者連接,當受害者連接到**假的 AP** 後,**假的AP** 會自動連接到**正確的 AP**,讓受害者誤以為連接一切正常,但此時受害者傳出的封包都會被攻擊者監聽。

[Source](https://blog.pulsarsecurity.com/what-is-an-evil-twin-and-how-do-you-spot-one)
與上述攻擊法相同,但 Evil Twin Attack 的攻擊者僅是竊聽封包,而第三個攻擊則是主動攻擊受害者,攻擊者可以攔截、轉送、解鎖加密的封包,甚至將受害者的封包加密使得對方無法解密。也就是**中間人攻擊(Man-in-the-middle Attacks)**。

中間人攻擊非常難防範,除非中間人主動攻擊,受害者與真正的AP皆無法得知中間人的存在,目前最有效能防範主動攻擊的方法是VPN。
#### Vitual Private Networks 虛擬私有網路
> ~~SurfShark VPN~~

在 VPN 中,Client 端和 Server 使用一個從未傳遞的Key(Un-shared key)對所有通訊進行加密。當 Client 端發送消息時,它首先用 VPN 密鑰加密資料,然後再用 Client 端與 Evil Points 共享的密鑰加密一次。當 Evil Points 收到資料時,雖然它可以使用與 Client 端共享的密鑰對其進行解密。然而,它無法讀取資料,因為資料仍然使用 Pre-share key 進行加密。保持了機密性。
## 802.11 Wi-Fi Wireless LAN Management
---
## Bluetooth
---
## Other Local Wireless Technologies
### Near Field Communication (NFC)
> 專門設計用於極短距離傳輸的技術
### Radio Frequency ID
---
# Ch.8 TCP/IP Internetworking I
## IP Routing
- IP 位址可以一分為二,一段是 Network ID,一段是 Host ID
- 網路位址(Network ID)
- 位於IP的前端部分,用來辨識所屬的網路
- 暨大是 `163.22.0.0`
- 主機位址(Host ID)
- 位於IP 的後端部分,用來辨識網路上的各個裝置
- 暨大學校網站 `163.22.12.20`
- 只要在暨大網段裡面的網路都是 `163.22.x.x`
### IP address 的等級( Class )
早期只有一些大型的網路,例如 ARPANET,32 bits 的 IPv4 address 只會由 8 bits 的 Network ID 和剩下的 24 bits 的 Host ID 組成。
這使獨立的網路的數量不能太多(最多254個),在區域網路概念出現的時候,顯得不足夠了。
- 為了方便管理與識別,IP 可分為五種等級(Class),但一般會使用到的是 Class A、B、C 三種等級,以 Network ID 長度區分,分別使用在大、中、小型網路

- Network ID 和 Host ID 的長度分配
- 大型的網路應該使用較短的 Network ID,才有比較多的 Host ID,小型的網路應該使用較長的 Network ID
- Class A
- 政府機關、國家級研究單位
- Network ID 8 bits 最多 256-2 個
- Host ID 24 bits 可以分給 16777216-2 台主機
- Class B
- 大型企業、電信業者、學術單位
- Network ID 16 bits
- Host ID 16 bits,可以分給 65536-2 台主機
- Class C
- 一般企業、家庭
- Network ID 24 bits
- Host ID 8 bits,可以分給 256-2 台主機
:::info
2^n - 2
- n 是所用的位數,減 2 是因為第一個和最後一個位址都是無效的
- \*.\*.\*.00000000 此段網路第一個 IP,代表此區段網路 Subnet
- \*.\*.\*.11111111 最後一個 IP,用作 Broadcast
:::
:::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 為何?
Default Mask: 255.255.255.0
Net ID: 192.168.38
Host IP: 26
練習:有一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 時,自動分配
### Subnet 子網路
- 切割網段 => 先決定想要分配的主機數:
- Class C 網路為例:
- 網路遮罩: 11111111.11111111.11111111.**00000000** => 255.255.255.0
### NetMask(子網路遮罩)
- 由一串連續的1,加上一段連續的0
> 例如:11111111 11111111 11111111 00000000
> 通常寫作:255.255.255.0
:::success
### 計算Net ID and Host ID
- Net ID:`IP` AND `Netmask`
- Host ID: `IP` AND `~Netmask`
> FIXME: 用「保留幾個 bit 的講法」
#### Q:有一 IP Address:3.4.5.6 為 class A,請問 Net ID、Host ID為何?
class A 有 8 bits Network ID, 24 bits Host ID
Netmask 是 11111111.00000000.00000000.00000000
8 個 bits 的 1,那就保留
- Net ID:`3.0.0.0`
- Host ID:`0.4.5.6`
:::info
1. 有一 IP Address:192.168.38.26 為 class c,請問 Default Mask、Net ID、Host ID 為何?
2. 有一 IP Address:130.48.93.73 為 class B,請問 Default Mask、NetID、HostID 為何?
:::
### IP 的種類:主要分為兩種
剛才是有拆解 IP,至於哪裡可以應用呢?
1. public IP (公共 IP 或公開 IP 位址):
- 簡單來說我們能看到的所有網站
2. private IP (私有 IP 或保留 IP 位址):
- 當初設計 IPv4 時,預設保留給內部網路設定用的 IP 區段。
- 無法在公開網路上使用,只能在家裡、實驗室等等地方使用。
每個 class 裡都預留了一段作為 private,提供給用戶或企業來設定規劃自己的區域網路:
- Class A:10.\*.\*.\*,一組 Class A
- Class B:172.16.\*.\*, 172.17.\*.\*..., 172.31.\*.\*,共 16 組 Class B
- Class C:192.168.0.\*, 192.168.1.\*..., 192.168.255.\*,共 256 組 Class C
:::success
作業:下列哪幾個是屬於 private IP,需要透過 IP 分享或偽裝才能夠連上 Internet?
1. 172.15.1.1
2. 192.28.1.1
3. 10.100.1.1
4. 172.20.1.1
5. 192.168.5.1
6. 61.5.5.1
:::
:::info
分類網路(Classful Addressing),是引入 **CIDR** 之前在網際網路中使用的技術,但 class a, class b, class c 這樣的分類仍不夠彈性。
試想我們家裡有一台 router,被分類到最小的 class c,我們家裡可能最多只有 10 台需要連網的設備,然而 class c 仍然給了我們 254 台的空間作使用,這樣就浪費了 244 台空間。
在意識到這個問題後,工程師們發布了新的技術 **CIDR**,取代分類網路只能以 8 bits 為單位分類 class 的問題,簡單來說就是沒有硬性規定 Host ID 只能是 16 or 8 bits,可以是 10 bits,又或是以上面 10 台為例,就可以切出 28 bits 的 Net ID,剩下 4 bits 共 16 台就可以涵蓋我們需求了。
:::
---
## How Routers Process Packets
### 比較 Switching 與 Routing


1. **設備與操作**:
- **Switching**:第一張圖中的 Switch 1 有一個Switching Table,它記錄了哪個 MAC 地址與哪個Port相關聯。當數據到達某個Port時,Switch查看其 MAC 地址,並根據Table將數據轉發到正確的Port。
- **Routing**:第二張圖中的 Router A 有一個Routing Table,它記錄了不同的 IP 地址範圍應該通過哪個Interface轉發。當接收到一個Packet時,路由器檢查目的 IP 地址,然後根據Table決定通過哪個Interface和下一路由器轉發Packet。
### Routing table

---
## The internet Protocol Version 4 (IPv4) Fields

### ICMP 網際網路控制訊息協定
>是IP的輔助協議,屬於TCP/IP的3.5層
* IP傳輸
* **保障** 封包的定址和路由功能
* **不保障** 封包在傳送過程中發生的問題,例如:中間的網路可能因故障或其他問題因而導致封包的損壞或丟失。
> 寫地址但不保證郵差把信送到
* ICMP 是IP 的輔助協定,確保設備是否在線上、報告錯誤以及進行網路診斷
* 在IP routing 的過程中發生錯誤,例如:router找不到適合的路徑、無法成功送出封包
> IP負責郵寄信件,ICMP則是郵差的通知服務
* 常見ICMP工具
* Ping
* Traceroute

> Windows: tracert [ip]
## IP Version 6 (IPv6)
---
## UDP(User Datagram Protocol)
- 僅提供傳輸基本功能,負責處裡封包要傳送到哪個 Port

- 追求即時性且能容忍一些封包丟失的情況(盡力傳遞)
- 串流服務、視訊、音訊

---
## TCP
- 可靠的傳輸方式—>保障資料完整性
- 連線導向 (Connection-Oriented):傳輸資料前先建立連線,協調參數(用於資料確認與重送、流量控制)
> 利用三項交握建立連線
- 資料確認與重送:確認目的端是否收到已送出的資料
- 流量控制:視情況調整資料傳輸的狀況,盡量減少資料的流失
### TCP Header

- SourcePort(來源埠號):
長度為 16 bits,用來記錄來源主機的 port
- DestinationPort(目的埠號):
長度為 16 bits,用來紀錄目的主機的 port
- SequenceNumber(序列號):
長度為 32 bits,用來記錄每個封包的序號。當 TCP 資料太大時(大於 IP 封包的容許程度)就必須進行分段,利用 Sequence Number 讓接收端組合資料
- AcknowledgmentNumber(確認號):
長度為 32 bits,接收端確定之前傳遞的封包已被正確收下
:::spoiler Code (Control Flags, 控制標誌碼):
長度 6 bits,用來控制訊息的傳遞。此欄位共 6 bits 分別代表 6 種不同功能的控制碼,只要該位元被設定為 1,表示此封包內有包括該訊息。
- URG(Urgent,緊急):
若為1表示該封包為緊急資料,接收端應該要緊急處理,並使 Urgent Point 欄位被啟用。
- ACK(Acknowledge,確認回應):
若為1表示該封包為回應封包,具回應確認功能,確認 Acknowledge Number 欄位中所指定的順序號碼。
- PSH(Push,推送):
若為1表示要求對方立即傳送緩衝區內的其他對應封包,無須等待緩衝區滿了才送。
- RST(Reset,重設):
若為1表示連線被立即結束(強迫性),無需等待終止確認手續,且發送端已斷線。
- SYN(Synchronous,同步):
若為1表示發送端通知對方要求建立連線。
- FIN(Finish,完成):
若為1表示傳送結束,通知對方資料傳輸完畢,是否同意斷線。發送者還在連線中等待對方回應。
:::
:::spoiler 其他
- Window(視窗大小):
代表「接受視窗」(receive window) 的大小,用來控制封包流量,告訴對方目前本身還有多少緩衝器(Receive Buffer)可以接收封包。
- Checksum(檢查碼):
確定所收封包是否在傳輸過程中出現錯誤
- UrgentPoint(緊急資料指標):
指出緊急資料在 TCP 資料的哪裡
ex. Urgent Pointer = 3 :arrow_right: TCP 資料的 0~3 個 bytes 是緊急資料
:::
### Three-way Open

| SYN | SYN, ACK |
| -------- | -------- |
|  |  |

#### 資料確認與重送
- A 傳送 packet1 給 B
- B 回應 ACK 封包給 A
- 如果A在時間內沒有收到B的ACK封包A就會重新傳送 packet 給 B
### Closing

---
# Ch.9 TCP/IP Internetworking II
> 從此章開始,我們的角色從 Client 變成 Server 管理者
## Core TCP/IP Management Tasks
### IP Subnet Planning
:::success
- 為了方便管理與識別,IP 可分為五種等級(Class),但一般會使用到的是 Class A、B、C 三種等級,以 Network ID 長度區分,分別使用在大、中、小型網路
- Network ID 和 Host ID 的長度分配
- 大型的網路應該使用較短的 Network ID,才有比較多的 Host ID,小型的網路應該使用較長的 Network ID
- **同一個網域**:在同一個物理網段內,主機的IP 具有相同的 NetWork ID,並且具有獨特的Host ID
> 假設企業被分配到 Class B 的ip 位址,六萬多部(2^8* 2^8)電腦連接在同一個網路中會導致效率低落,若只連接十幾部電腦,會造成浪費
* 將分配到的網路切割成規模較小的子網路,再分配給多個實體網路
:::
#### The N = 2^b - 2 Rule
> A network subnet, or host part cannot be all 0s or 1s.
> 00000000.00000000:x:
> 11111111.11111111.11111111:x:
> If a part is b bits long, it can represent **2^b − 2 networks**, subnets, or hosts.

### NAT(Network Address Translation)
NAT 是一種實現內網主機與外網通訊的方法,它會在IP封包通過路由器或防火牆時重寫來源IP地址或目的IP位址的技術,NAT在真實的網絡環境中隨處可見,主要是為了處理兩個問題:
1. IPv4地址不夠用,IP地址只有32位,最多能提供 2^32 組(42億),NAT技術可讓本地的電腦設備,分享共同的公有IP位址
2. 安全問題。使用NAT後,可以把主機隱藏在內網中,不會讓真實的IP位址曝露,防止遭到駭客入侵

當封包從外部主機到達時,它們的目標IP位址欄位是60.5.9.8,目標 ports 欄位是4444。NAT防火牆在 Translation Table 中尋找這些值,用 Internal values 取代 External values,並將它們傳送到客戶端PC。
圖9-3 NAT為什麼安全
攻擊者可能會在公司的防火牆外安裝嗅探程式(sniffer),這個程式能讀取從公司發出的所有資料包。但有了NAT,竊聽者只能取得假的(External)IP位址和ports。理論上,如果攻擊者能夠立即發動攻擊,它可以向外部IP位址和連接埠號碼傳送封包,NAT防火牆將會將它們傳遞給內部主機。然而,攻擊者很少能立即採取行動,而且NAT表中的記錄最多只會保持活躍幾分鐘。儘管NAT操作簡單,但它提供了相當多的安全性。
為了支援NAT,IANA 宣告了三個只能在公司內部使用的 private IP 位址範圍:
- 10.x.x.x
- 192.168.x.x
- 172.16.x.x到172.31.x.x
:::success
| Network ID | Assigned bits | Remaining bits | default NetMask | Class |
| --------------------- | ------------- | -------------- | --------------- | --- |
| 00001010 | 8 bits | 24 bits | 255.0.0.0 | Class A |
| 11000000.1010100 | 16 bits | 16 bits | 255.255.0.0 | Class B |
| 10011010.0001\-\-\-\- | **8+4 bits** | 20 bits | 255.240.0.0 | Class B |
:::
192.168.x.x最有名,因為它允許公司分別使用255.255.0.0和255.255.255.0的network和sub net mask。不過,其他兩個私有IP位址範圍也被廣泛使用。
### DNS(Domain Name System)

1. **DNS請求消息**:
- 來源主機(在圖中左側的電腦)向DNS發送請求,請求解析主機名稱"daikine.pukanui.com"的IP地址。這是查找過程的起始點。
2. **轉發DNS請求**:
- Hawaii.edu的DNS server收到請求後發現自己不知道,於是它將請求轉發到負責“pukanui.com”這個域的 Authoritative DNS server。
3. **DNS響應消息**:
- Authoritative DNS server查找到"daikine.pukanui.com"的IP地址為"60.32.6.87",並將這個響應消息發送回Hawaii.edu的DNS server。
4. **傳送DNS響應消息**:
- Hawaii.edu的DNS server接收到Authoritative DNS server提供的IP地址後,將這個資訊發送給最初發請求的來源主機。
### SNMP(Simple Network Management Protocol)
SNMP 包括如Manager、Agent和MIB,詳細請看Ch.4 Network and Security Management的筆記。
---
## Securing Internet Transmission
### Virtual Private Network
:::spoiler 第七章筆記
:::success

在 VPN 中,Client 端和 Server 使用一個從未傳遞的密鑰對所有通信進行加密。當 Client 端發送消息時,它首先用 VPN 密鑰加密消息,然後再用 Client 端與 Evil Points 共享的密鑰加密一次。當 Evil Points 收到消息時,雖然它可以使用與 Client 端共享的密鑰對其進行解密。然而,它無法讀取消息,因為消息仍然使用 Pre-share key 進行加密。保持了機密性。
:::
### IPsec VPNs
IPsec(Internet Protocol Security)是一組協議用於在 Internet Layer 提供加密和認證的安全通訊。它確保Packet的數據完整性、數據來源認證以及數據保密。IPsec廣泛用於虛擬私人網路(VPN)之間的安全通訊,包括企業網絡之間或企業網路與遠程用戶之間的連接。

### IPsec Transport Mode
在Transport Mode下,IPsec僅加密Packet的部分內容,不包括IP header。主要用於端到端的通訊,例如兩台主機之間的加密連接。
- 實現真正的端對端加密,保護了數據的隱私性和完整性。
- 成本高,因為需要在每台主機上配置Digtal Certificate。
- 防火牆無法過濾加密的流量,可能對網路監控和管理造成困難。
### IPsec Tunnel Mode
Tunnel Mode加密整個Packet(包括IP header)並將其封裝在一個新的Packet中。這常用於Gateway到Gateway或主機到Gateway的通訊,例如VPN。
- 經濟高效,因為不需要在每個端點進行複雜的配置。
- 容易於大規模部署,適合企業和大型組織。
- 但不提供端到端的安全性,只在Gateway間提供安全保護。
### Remote-Site-Access and Site-to-Site VPNs
### IPsec Security Associations and Policy Servers
### SSL/TLS VPNs

---
# Ch.10 Carrier Wide Area Networks (WANs)
## Lans and Wans (and Mans)
### LANs versus MANs and WANs

> LANs 存在於公司的場地內,而 WANs連接組織內不同的地點或組織之間。
### Carrier WAN Components and Business Uses

### The Telephone System

## Residential Wired Internet Access
---
# Ch.11
### send and recieve of mail
| | protocol |
| --------| ---------|
| send | SMTP |
| recieve | POP, IMAP|