###### tags: `lsa` `ncnu` # Network - Book mode: https://hackmd.io/@ncnu-opensource/book [TOC] ## 介紹 TCP/IP Protocol Suite - Protocol 協定 - 兩個裝置之間溝通需要共同遵守某個規則 - 例如:打電話 - 撥號、鈴響、接起來、打招呼、回應、掰掰、掛電話 - 分層 - 情境 (小明要用紙條約小睿看電影) - ![](https://i.imgur.com/Z5QPDcw.png) - ![](https://i.imgur.com/KGpYprZ.png) - ![](https://i.imgur.com/3kDG9NG.png) > 圖取自 [1112 LSA Network 講義 - HackMD](https://hackmd.io/@ncnu-opensource/By4H6JLNW/https%3A%2F%2Fhackmd.io%2F%40qtNgFtaqR4Or_CLAuotXjw%2FrkY9fXB0o?type=book#%E4%BB%8B%E7%B4%B9-TCPIP) - 上層內容依賴下層服務 - ![ Encapsulation of application data descending through the layered IP architecture](https://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/UDP_encapsulation.svg/1024px-UDP_encapsulation.svg.png) > 圖片取自 [en:User:Cburnett](https://en.wikipedia.org/wiki/User:Cburnett) original work, colorization by [en:User:Kbrose](https://en.wikipedia.org/wiki/User:Kbrose), [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/), via Wikimedia Commons, [Link](https://commons.wikimedia.org/wiki/File:UDP_encapsulation.svg) - ![](https://i.imgur.com/8TNIxUy.png) - TCP/IP - 名字取自 Transmission Control Protocol (TCP) 和 Internet Protocol (IP) - TCP 中定義了比較高階的動作,例如分割、重組、錯誤偵測 - IP 負責把資料傳到指定的另一端 - 在 1983 年 ARPANET 轉移到 TCP/IP 協議,成為 Internet 的標準 - | 層數 | 名稱 | | -------- | -------- | | 4 | 應用層 Application layer | | 3 | 傳輸層 Transport layer | | 2 | 網路層 Internet layer | | 1 | 資料連結層 Data link layer | - OSI 模型 - 全名 Open Systems Interconnection - 由國際標準化組織 (International Standards Organization, ISO) 提出 - 是一種概念模型,一個試圖使各種電腦在世界範圍內互連為網路的標準框架 - | 層數 | 名稱 | | -------- | -------- | | 7 | 應用層 Application layer | | 6 | 表現層 Presentation layer | | 5 | 會議層 Session layer | | 4 | 傳輸層 Transport layer | | 3 | 網路層 Network layer | | 2 | 資料連結層 Data link layer | | 1 | 實體層 Physical layer | - OSI Model 與 TCP/IP 的比較 - ![OSI Model 與 TCP/IP 的比較](https://hackmd.io/_uploads/H199TmS6a.png) > 圖取自 Chunte7 on Wikimedia Commons <a href="https://creativecommons.org/licenses/by-sa/3.0" title="Creative Commons Attribution-Share Alike 3.0"> CC BY-SA 3.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=16949432">Link</a> ## Link layer - 定義如何傳送 **frame** ,一個資料單元 - 為直接透過網路硬體裝置連接的電腦(同個子網路 subnet),建立相互通訊的連線 - 透過 Physical Address (**MAC address**) 找到對方 | 網路 | 標準 | 功能 | 傳輸媒介 | 碰撞處理 | |-|-|-|-|-| | Ethernet 乙太網路 | 802.3 | 區域網路連線上的通信協定 | 雙絞線 | CSMA/CD | | Wi-Fi 無線網路| 802.11 | 無線區域網路的電腦通訊標準 | 5GHz / 2.4GHz 無線電波 | CSMA/CA | ### Ethernet Frame 格式 ![](https://i.imgur.com/XnOkqSY.png) - **Preamble 前導碼 :** 在數據傳輸開始之前,發送方會先發送一個固定長度的前導碼,此 56 位元的前導碼為 0 與 1 交錯,當接收方收到連續的 0 與 1 ,就會知道傳輸即將發生,此外也會根據 0 與 1 的變化速度,讓接收方可以同步數據傳輸時序。 - **SFD :** 全名 Start Frame Delimeter,目的為區隔 Preamble 與接下來的內容,表示傳輸即將開始。 - **Destination/Source Address :** 分別為接收方與發送方的地址,各 48 Bits,以 MAC Address 表示。 - **Length or Type :** 如果該欄位的值小於或等於 1500,則表示這是一個長度字段,指示了 Frame 的長度;如果該欄位的值大於 1500,則表示這是一個類型字段,指示了 Frame 中所包含的協議類型。 - **Data :** Frame 中實際傳輸的數據部分,大小在 46 bytes 與 1500 bytes之間,如有超過這個長度就會拆成另一幀。 - **Frame Check Sequence :** 這是一個固定長度的校驗碼,用於檢測 Frame 中數據的錯誤。 ### MAC Address - 全名: Media Access Control Address - 網路卡卡號 - 長度 6 bytes (48 bits),常以 16 進位形式表示 :::info 看自己卡號方法,在 Linux 中下指令 `ip addr` ```=bash 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 30:5a:3a:81:13:3c brd ff:ff:ff:ff:ff:ff inet 192.168.0.104/24 brd 192.168.0.255 scope global dynamic noprefixroute enp2s0 valid_lft 73772sec preferred_lft 73772sec ``` link/ether 後的 `30:5a:3a:81:13:3c` 即是此卡卡號 ::: ![MACaddressV3.png](https://upload.wikimedia.org/wikipedia/en/3/37/MACaddressV3.png) > 圖取自 [File:MACaddressV3.png by Vtraveller on Wikipedia](https://en.wikipedia.org/w/index.php?title=File:MACaddressV3.png&oldid=887203797) - 第 1 bit 為單播位址 Unicast (0) / 群播位址 Multicast (1) - **例外:** 當每一個 bit 為 1 時 (FF:FF:FF:FF:FF:FF),則為 Broadcast 廣播位址 - Unicast 目的位址為單一目標 - Multicast 目的位址是一組目標,加入該組的成員均是封包的目的地 - 要看 link layer 支不支援,像 Ethernet 有支援,而[很多無線協議不支援](https://www.rfc-editor.org/rfc/rfc9119.html) - Broadcast 目的位址為網路中的全體目標 - 由第 2 bit 決定管理者 - **Global Unique:** 由 OUI 擁有者(即實際生產該網路裝置的廠商)自行決定後 24 Bits - **Locally Administered:** 網管可自行決定 24 Bits #### Organizationally unique identifier (OUI) 組織唯一標識符 - 用於唯一標識一個供應商、製造商或其他組織,由供應商至 IEEE 的註冊機構購買 - 即第 3~24 Bit 由 IEEE 決定 - 線上查詢工具: [Search - MAC or OUI address lookup](https://hwaddress.com/) - 例如[查上面我電腦 MAC](https://hwaddress.com/?q=30%3A5a%3A3a%3A81%3A13%3A3c) 得知製造者為 ASUSTek COMPUTER INC. - ![Screenshot of hwaddress.com](https://hackmd.io/_uploads/rJy7pdr6T.png) ### CSMA/CD - **Carrier Sense**: 監聽媒體使用情況,當 A 主機要發送網路封包時,要先監聽網路媒體,若無人使用才能發出 frame。 - **Collision Detection**: frame 有偵測碰撞能力,如果 A 主機與 B 主機剛好同時發 frame 時,2 方資料撞在一起,這 frame 即會損毀,此時 A 與 B 會各自等一段隨機時間,再次發送 frame 資料。 ![圖片](https://hackmd.io/_uploads/Hyc6aaL66.png) > 圖取自 TCP/IP Protocol Suite, 4th Edition by B. Forouzan (McGraw-Hill, 2010) > © The McGraw-Hill Companies, Inc. - 其實現在有線網路不太會遇到 collision,因為現在大家常用的網路設備:L2 switch 及 router,基本上一條線路兩端只會有網路設備、使用者裝置各一台 ### Hub 集線器 - 網路共享媒體,同一時間僅允許一部主機使用。 - 會有上面一段 collision 的問題 - [用來抓封包很方便](https://wiki.wireshark.org/CaptureSetup/Ethernet#capture-using-an-ethernet-hub) - 現在市面上很難找到了,[照片長這樣](http://ms15.ipv6.club.tw/~jiazheng/notes/images/hub_found_in_lab.jpg) ### Switch 交換器 - 這裡講的是 L2 switch,也叫 bridge,運作在 physical 和 link layer (能看到 MAC address) - **Forwarding information base (FIB)**: 或稱 forwarding table, MAC table,Switch 會用一張表記住哪個 port 上面有什麼 MAC address 的裝置 - **Learning**: 在有 frame 經過它的時候,記錄他的來源地址和哪個 port,就能把學到的對應加進表裡 - **Forwarding**: 從表裡查到後往正確的 port 送 - **Flooding**: 若發現目的地址不在表裡,就把 frame 傳給所有的 port ### CSMA/CA - Carrier Sense Multiple Access with Collision Avoidance ![](https://i.imgur.com/J8XAi1O.png) > [來源](http://www.tsnien.idv.tw/Network_WebBook/chap15/15-4%20IEEE%20802_11%20MAC%20%E5%8D%94%E5%AE%9A.html) 1. 發送端會去偵測網路是否有訊號傳輸。 2. 假如頻道中沒有其他訊號傳遞時,發送端會再等待一段隨機時間 (IFS, interframe space 一個訊框間隔時間),在這段時間過後,如果還是沒有偵測到任何訊號在傳遞,發送端就會將 request to send (RTS) control frame 傳送出去。 - 假如一開始就偵測到有訊號使用了這個頻道,發送端會等到頻道淨空之後、再等待一個隨機的後退(Backoff)時間,才重新發送。 - RTS/CTS 傳送機制: ![](https://i.imgur.com/UZ9XcJx.png) [來源](http://www.tsnien.idv.tw/Network_WebBook/chap15/15-4%20IEEE%20802_11%20MAC%20%E5%8D%94%E5%AE%9A.html) - 工作站首先利用較小的訊框(request to send, RTS 訊框)來測試網路是否空閒,如果可以收到對方的回應訊框(clear to send, CTS 訊框),那表示網路是真正的空閒。 - 每個工作站內都會有網路配置向量(Net Allocation Vector, NAV),可以藉由他人的 RTS/CTS 得知目前在傳輸的訊號會維持多久並填入 NAV 內,這段期間就不會進行偵側。 ## Internet Layer ### IP Address - IP = Internet Protocol - 通常在 Internet 中在同一時間內要是獨一無二的 <!-- (除非 [anycast](https://en.wikipedia.org/wiki/Anycast)) --> #### IPv4 - 32 bits,通常以 8 bit 一組,用點`.`隔開,每組裡用 10 進位數表示 - 例如: `163.22.17.70` = `10100011.00010110.00010001.01000110` - 特殊地址們 - 0.0.0.0 - 在裝置還不知道自己要用的 IPv4 地址時用的 - 設定成 server listen address 時,表示無論你從哪個 IP 地址存取這個服務都可以 - 255.255.255.255 - 廣播 - Loopback Address 127.0.0.0/8 - 本機 - Private Addresses - 由於這三段 Class 的 IP 是預留使用的,所以不能直接作為連接 Internet 之用,適合一些 Public IP 不充足的組織內部用來規劃在區域網路使用。 - | IP 地址範圍 | IP 數量 | CIDR | |-------------------------------|------------|------------------------------| | 10.0.0.0 – 10.255.255.255 | 16,777,216 | 10.0.0.0/8 (255.0.0.0) | | 172.16.0.0 – 172.31.255.255 | 1,048,576 | 172.16.0.0/12 (255.240.0.0) | | 192.168.0.0 – 192.168.255.255 | 65,536 | 192.168.0.0/16 (255.255.0.0) | - Multicast Addresses 224.0.0.0/4 - 每個區塊裡都有的 - Network Address - subnet 裡第一個位址 - Broadcast Address - subnet 裡最後一個位址 ### Subnet Mask (子網路遮罩) - 子網路 Subnet - 藉由將較大網路分成幾個相等部分所建立的較小網路 - 把一個 IP 地址分成兩段: **Network ID** 和 **Host ID** - 以一間公司的員工舉例:行銷部的陳小姐 - Network ID 網路位址,前綴 = 行銷部 - Host ID 主機位址,後綴 = 陳小姐 - 找出 Network ID 方法: bitwise AND operation 1. 先把 IP 轉成 2 進位表示 `163.22.17.70` = `10100011.00010110.00010001.01000110` 2. 拿到 Mask 也轉成 2 進位 `255.255.255.0` = `11111111.11111111.11111111.00000000` 3. 做 bitwise AND operation `10100011.00010110.00010001.01000110` AND `11111111.11111111.11111111.00000000` = `10100011.00010110.00010001.00000000` 4. 轉回 10 進位表示 = `163.22.17.0` - [暨大的 subnet 列表](https://ccweb.ncnu.edu.tw/ccnetsrv/ccnet_subnetlist.asp?pageno=1&t=ccnet_subnet&recperpage=100) :::info **AND 邏輯運算** 1 AND 1 = 1 1 AND 0 = 0 0 AND 0 = 0 ::: - Classless Inter-Domain Routing,簡稱 **CIDR** - 非固定限制長度的 Network ID 與 Mask - 表示法: 例如 163.22.22.64 **/27** - 等同於前 27 bit 都是 1,後 5 bit 都是 0 - `11111111.11111111.11111111.11100000` - `255.255.255.224` #### IPv6 - 因應 IPv4 快被用完,因此成為未來趨勢 - 128 bits,通常以 16 bits 為一組,每組以冒號「:」隔開,每組裡用 16 進位表示 - 可以用雙冒號「::」表示一組0或多組連續的0,但只能出現一次 - 例如: `2001:e10:6840:17::70` = `2001:e10:6840:17:0:0:0:70` ### Router 路由器 - 運作在 physical, data link 和 Internet layers (能看到 IP 地址) - 可以連結 LAN (區域網路) & WAN (廣域網路) - 轉送封包流程 1. 看封包目標 IP 位置。 2. 查看自己主機的 Net_ID 是否與封包的相同(屬於同區網),若相同可以直接傳給目的主機。 3. 若不同,查詢 default gateway (此為 Server A) 並傳給它。 4. 不理會封包流向,default gatway 會執行上述動作繼續往目的地傳送。 :::info **[住宅閘道器](https://zh.wikipedia.org/wiki/%E4%BD%8F%E5%AE%85%E7%BD%91%E5%85%B3)** - 一般人放在家裡的**住宅閘道器**(residential gateway)通常提供: - 通過網頁介面設定 - 在家庭網路與網際網路之間路由 (Router) - 提供家庭網路的連通性,就像一台網路交換器 (Switch) - 網路位址轉換(NAT) - DHCP - 防火牆功能 - 也可能內建 - 數據機 (modem,modulator-demodulator 的縮寫,俗稱小烏龜) - 動態 DNS (DDNS) - [Wi-Fi 基地台](https://iqmore.tw/cht-hinet-alcatel-i-040gw-login) > 來自維基百科 - [住宅閘道器](https://zh.wikipedia.org/wiki/%E4%BD%8F%E5%AE%85%E7%BD%91%E5%85%B3) ::: ## Transport Layer - 負責提供兩個應用程式之間的傳輸 - 用 **Port** 號碼來區分同 host 內不同程式 :::info ### 常見的 port | port 號 | 服務 | | -------- | -------- | | 21 | FTP,檔案傳輸協定的命令通道 | | 22 | SSH,較為安全的遠端連線伺服器 | | 23 | Telnet,早期的遠端連線伺服器軟體 | | 25 | SMTP,簡單郵件傳遞協定,用在作為 mail server 的埠口 | | 53 | DNS,用在作為名稱解析的領域名稱伺服器 | | 80 | WWW,全球資訊網伺服器 | | 110 | POP3,郵件收信協定 | | 443 | https,有安全加密機制的 WWW 伺服器 | `cat /etc/services` 可以看系統預先定義的列表 ::: ### UDP - User Datagram Protocol - Header Format ``` 0 7 8 15 16 23 24 31 +--------+--------+--------+--------+ | Source | Destination | | Port | Port | +--------+--------+--------+--------+ | | | | Length | Checksum | +--------+--------+--------+--------+ | | data octets ... +---------------- ... ``` - 提供不可靠的傳輸 - 對於即時性要求較高的應用程式通常用這種 - 適用場景 - 串流媒體,即時多人遊戲和網路電話 ### TCP - Transmission Control Protocol - Header Format ``` 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ``` - 可靠的 - sequence numbers and acknowledgments (**ACK**) - 當傳送端送一個封包的時候,目的端如果有收到,就會向傳送端傳 ACK 代表有正確收到,如果傳送端在 timer expire 之後還沒有收到 ACK 的話,它會假設封包丟失,並再重送一個封包 :::info #### Seqence Number & ACK - 正確收到封包: `sequence number` + `封包大小` = ACK 回傳數字 ![](https://i.imgur.com/AVpI83C.png =400x) ::: - 建立連線 - three-way handshake ``` TCP A TCP B 1. CLOSED LISTEN 2. SYN-SENT --> <SEQ=100><CTL=SYN> --> SYN-RECEIVED 3. ESTABLISHED <-- <SEQ=300><ACK=101><CTL=SYN,ACK> <-- SYN-RECEIVED 4. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK> --> ESTABLISHED 5. ESTABLISHED --> <SEQ=101><ACK=301><CTL=ACK><DATA> --> ESTABLISHED Basic 3-Way Handshake for Connection Synchronization ``` ## Application Layer ### DNS - 網域名稱系統 Domain Name System - 將域名和 IP 位址相互對映的一個分散式資料庫 - 光是 root name server 就[有 13 組、1719 台](https://zh.wikipedia.org/zh-tw/%E6%A0%B9%E7%B6%B2%E5%9F%9F%E5%90%8D%E7%A8%B1%E4%BC%BA%E6%9C%8D%E5%99%A8) - 例如: mirror.ossplanet.net -> 163.22.17.70 - 採樹狀階層式的架構 - ![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/DNS_schema.svg/1024px-DNS_schema.svg.png) - iterative query - ![](https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Example_of_an_iterative_DNS_resolver.svg/1280px-Example_of_an_iterative_DNS_resolver.svg.png) - `dig +trace mirror.ossplanet.net` 可以看得到這過程 - 有很多地方會暫存結果 - ![](https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/DNS_Architecture.svg/1024px-DNS_Architecture.svg.png) - 通常是用 UDP 或 TCP 的 port 53 #### 用 `dig` 來查 DNS - `dig [options] example.com [type]` - `dig mirror.ossplanet.net a` 對映到主機的 IP 地址 - `dig mirror.ossplanet.net aaaa` 主機名對映到 IPv6 地址 - `dig ossplanet.net ns` 找該域名由哪個 DNS 伺服器來進行解析 - `dig ncnu.edu.tw mx` Mail Exchange (MX) 郵件主機 - `dig ncnu.edu.tw txt` 各種純文字記錄 - `dig @8.8.8.8 www.ncnu.edu.tw` 指定要對哪一台伺服器送出 DNS 查詢 - 用來測 [TWNIC DNS RPZ](https://rpz.twnic.tw/e.html) - `dig +cdflag @8.8.8.8 example.com` 關閉 DNSSEC 驗證 ### HTTP - HyperText Transfer Protocol - 通常伺服器使用 TCP port 80 - 請求 - 下指令`nc example.com 80` 之後輸入以下內容加空行 - ``` GET / HTTP/1.1 Host: example.com ``` - 第一行 Request-Line 包含 - Method - GET - POST - Request-URI - HTTP-Version - 可以有更多 Request Header - 回應 - ``` HTTP/1.1 200 OK Age: 332180 Cache-Control: max-age=604800 Content-Type: text/html; charset=UTF-8 Date: Wed, 06 Mar 2024 13:59:38 GMT Etag: "3147526947+gzip+ident" Expires: Wed, 13 Mar 2024 13:59:38 GMT Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT Server: ECS (sac/2538) Vary: Accept-Encoding X-Cache: HIT Content-Length: 1256 <!doctype html> <html> <head> <title>Example Domain</title> ...內容省略 ``` - 第一行 Status-Line 包含: Status Code - Status Code - 1XX (參考訊息) - 2XX (成功) - 3XX (重新導向) - 4XX (客戶端錯誤) - 5XX (伺服器錯誤) ### DHCP - Dynamic Host Configuration Protocol - 當你連接到一個新的 Wi-Fi 網路時,你的裝置需要一個 IP 位址才能夠在網路上通訊 - 如果沒有 DHCP 協定,你需要手動設定 IP 位址和其他網路相關的設定,非常麻煩 - 但是有了 DHCP 協定,你的裝置可以自動向網路中的 DHCP 伺服器發送請求,然後獲取所需的 IP 位址和其他設定 - 當今天有100部電腦需要設置? - 藉由一部主機來自動的分配所有的網路參數給所有電腦 - 提供用戶端電腦動態的 IP 位址、子網路遮罩、預設閘道器與 DNS 的位址等 - 減少用戶手動設定 IP 位址的麻煩 - ![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/DHCP_session.svg/339px-DHCP_session.svg.png) 1. 使用者電腦發出 DHCPDISCOVER 廣播到整個子網路 2. DHCP 伺服器回應 DHCPOFFER 包含一個可用的地址 3. 使用者收到(可能很多個) OFFER 之後用廣播回應 DHCPREQUEST,跟伺服器說我要這個 4. 伺服器回應 DHCPACK ,真的把資源預留下來,告訴使用者可以用 5. 使用者收到 DHCPACK 之後把參數設定好拿來開始用 - DHCP client 用 UDP 來送訊息到 DHCP server (port 68),DHCP server 回應到 client 的 UDP port 67 ## 參考資料 - [1112 LSA Network 講義 - HackMD](https://hackmd.io/@ncnu-opensource/By4H6JLNW/https%3A%2F%2Fhackmd.io%2F%40qtNgFtaqR4Or_CLAuotXjw%2FrkY9fXB0o?type=book#%E4%BB%8B%E7%B4%B9-TCPIP) (Retrieved 03:34, March 6, 2024) - TCP/IP Protocol Suite, 4th Edition - B. Forouzan (McGraw-Hill, 2010) - TCP/IP协议族. (2024, March 2). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F&oldid=81747512 - Wikipedia contributors. (2024, February 9). OSI model. In Wikipedia, The Free Encyclopedia. Retrieved 03:34, March 6, 2024, from https://en.wikipedia.org/w/index.php?title=OSI_model&oldid=1205349643 - [國家教育研究院 樂詞網](https://terms.naer.edu.tw/) - [RFC 793 - Transmission Control Protocol](https://datatracker.ietf.org/doc/html/rfc793#autoid-11) - [RFC 768 - User Datagram Protocol](https://datatracker.ietf.org/doc/html/rfc768) - [DNS 除錯教學系列文章(4) – dig 指令教學 | 哈部落](https://haway.30cm.gg/dns-4-dig/) - Seqence Number & ACK 來自 [Week 10 (2022/11/17) TCP/IP & iptables - HackMD](https://hackmd.io/@ncnu-opensource/By4H6JLNW/https%3A%2F%2Fhackmd.io%2FCn2YtIi1R-iu1KN8agyejQ?type=book#Seqence-Number-amp-ACK) - [TCP 三向交握 (Three-way Handshake) - NotFalse 技術客](https://notfalse.net/7/three-way-handshake#Acknowledgment-Number) ## 延伸閱讀