iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
自我挑戰組

THM30天挑戰:從菜鳥到小駭客系列 第 11

Day 11. Networking 2

  • 分享至 

  • xImage
  •  

今天來繼續昨天提到的封裝和TELNET

Encapsulation 封裝

封裝(Encapsulation)是指每一層在接收到的資料單元上添加頭部(有時也添加尾部),並將**「封裝好的」**單元發送到下一層的過程

每個封包都包含了兩大部分:

  1. 資料本身(Payload,像是網頁的文字或圖片片段)
  2. 控制資訊(Header,例如來源 IP、目的地 IP、協定類型等等)

封裝是一個至關重要的概念,因為它允許每一層專注於其預期功能

封裝有四步:

  1. Application data(應用程式資料)
    • OSI:應用層
    • 使用者輸入的原始資料(例如一封 Email、一張圖片、一段訊息)
  2. Transport segment/datagram(傳輸層段)
    • OSI:傳輸層
    • 加上 TCP/UDP Header,包含來源/目的 Port 號用以建立TCP segment/UDP datagram
  3. Network packet(網路封包)
    • OSI:網路層
    • 加上 IP Header,包含來源/目的 IP 位址以獲得IP packet
  4. Data link frame(資料鏈路訊框)
    • OSI:資料連結層
    • 加上 MAC Header + CRC(來源/目的 MAC 位址 + 錯誤檢查碼)形成 WiFi / Ethernet Frame,然後交給物理層傳送

依順序依下列圖示:
https://ithelp.ithome.com.tw/upload/images/20250913/20158215zjCR1mCnD7.png

在接收端,這個過程要反向進行,逐層去除協定標頭,最後才能拿到真正的應用層資料

The Life of a Packet

一個完整的Packet會經歷以下過程

  1. 產生(Creation)
    • 使用者在應用程式上輸入資料
    • 應用程式把資料交給系統IP處理
  2. 封裝(Encapsulation)
    • 資料經過 OSI/TCP-IP 各層處理,逐層加上Header
    • 最後變成一個完整的「封包」
  3. 傳輸(Transmission)
    • 封包經由網路介面卡 (NIC) 發送,可能經過交換器、路由器等設備
    • 在網路中「跳躍 (hops)」直到到達目的地
  4. 解封裝 (Decapsulation)
    • 封包抵達接收端,由底層開始逐層剝除標頭
    • 最後只留下原始的應用程式資料
  5. 交付 (Delivery)
    • 接收端應用程式拿到資料,呈現給使用者(例如:網頁顯示出來)

現在我們大致了解了所謂封裝和它的結果封包
現在我們來看一下昨天提到的 TCP/UDP 連線跟他有什麼關係
TCP 連線為例

一個完整的 TCP 連線生命週期

  1. 建立連線 (Connection Establishment)
    • 透過三次握手 (Three-way Handshake):
      • 客戶端送出 SYN
      • 伺服器回應 SYN + ACK
      • 客戶端再送出 ACK
    • 雙方確認彼此「有空、能通」後,連線建立
  2. 資料傳輸 (Data Transmission)
    • 進入「封包的一生」流程:
      • 產生:應用程式輸入資料
      • 封裝:逐層加上 Header (TCP、IP、MAC...)
      • 傳輸:經 NIC、交換器、路由器傳送
      • 解封裝:接收端逐層拆開
      • 交付:資料交給應用程式,呈現給使用者
  3. 連線終止 (Connection Termination)
    • 使用四次揮手 (Four-way Handshake) 來斷開:
      • 一方送出 FIN(我要結束)
      • 對方回 ACK(好,我知道了)
      • 對方再送出 FIN(我也要結束)
      • 最後回 ACK(OK,掰掰)
    • 連線安全結束,資源釋放

Telnet

介紹

  • TELNET (Teletype Network) 是一種應用層協定,最早設計用於遠端登入 (Remote Login),讓使用者透過網路在遠端電腦上開啟終端機並操作
  • 工作在 TCP port 23
  • 傳輸方式:純文字傳輸,不加密 → 資料(帳號、密碼、指令)以明文方式傳送,容易被攔截

因為安全性問題,現在已大多被 SSH (Secure Shell) 取代

用途

  • 遠端登入:早期管理伺服器、路由器、交換機
  • 網路測試:檢查某個主機或服務的連線是否正常(尤其是 TCP port 測試)
  • 除錯:測試應用程式伺服器是否能正常回應,例如 HTTP、SMTP、POP3 等協定

基本指令/操作

1. 連接到主機

	$ telnet <IP/主機名> <Port>

2. 登入操作

若遠端設備啟用了 Telnet,連線成功後會出現:
login: 
password: 

3. 測試其他協定

  • 測試 SMTP (郵件服務):
	telnet mail.example.com 25

  會看到:

	220 mail.example.com ESMTP Postfix

  代表郵件伺服器正常。
  - 測試 HTTP (網頁服務)

  telnet example.com 80

  然後輸入:

	GET / HTTP/1.1
	Host: example.com

  伺服器會回傳 HTTP 回應標頭與 HTML 內容

剛剛提到的 TELNET,就是利用今天說過的 TCP 連線,將我們所講的三次握手建立連線、資料封包傳輸四次揮手結束連線的過程,轉化成用戶端可以直接操作的應用層工具

⚠️TELNET 傳輸資料是以明文方式進行,包括帳號、密碼和指令,都可能被攔截,因此在現代網路環境中,大多數情況會使用加密的 SSH 取代 TELNET,以確保資料傳輸的安全性

好了Networking concepts房間到此就結束了
網路的大概架構和傳輸基礎已經基本講一遍了
接下來要就要講之前提過的網路傳輸會用到的一些協定協定與技術
例如:DHCP、ARP、ICMP、NET


上一篇
Day 10. Networking
系列文
THM30天挑戰:從菜鳥到小駭客11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言