網路常見軟體、協定(FTP、TELNET 等)

Hello Guys, I’m LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧!

另外本篇文章主要針對上課內容製作筆記,斟酌參考~

FTP(File Transfer Protocol)

FTP(File Transfer Protocol)直接翻譯就是檔案傳輸協定,專門用來在兩台電腦之間上傳和下載檔案。

假設你在學校寫好程式作業,想傳到家裡的電腦繼續改,就可以用 FTP。

FTP 使用明文傳輸,意思就是資料沒有加密。因此現代比較少單獨使用 FTP,反而搭配 SSH 使用 SFTP(Secure FTP)來加密傳輸。

而 FTP 採用主從式(Client-Server)架構,也就是客戶端對到一台伺服端。有一台主機作為 FTP 伺服器(用來儲存檔案),客戶端則用電腦(用戶端)連線並操作這台伺服器。

接下來 FTP 雙通道設計不像 HTTP 只用一個連線,FTP 同時開啟兩個 TCP 連線:

  • 控制通道(port 21):負責傳送指令與回應(如登入、切換目錄、開始下載/上傳)。
  • 資料通道(port 20 / 動態 port):只用來真正傳檔案的資料。

FTP 傳輸流程

  1. 建立連線:用戶端啟動 FTP 軟體,輸入伺服器位址、帳號和密碼,連到 FTP 伺服器。
  2. 認證登入:輸入正確帳密後,登入成功。
  3. 目錄導航:可透過 cd(切換目錄)、ls(檢視目錄)等指令查找和切換資料夾。
  4. 檔案操作:
    • 上傳(put 指令)
    • 下載(get 指令)
  5. 結束連線:當資訊傳輸完成,送出 quit 指令斷開連線。

FTP 使用方式

  1. 圖形化介面:如 FileZilla、WinSCP 等軟體,透過拖拉可直接操作檔案。或是部分瀏覽器有支援 FTP,但要打指令,經過實測發現 chrome 可以做到。
  2. cmd 操作:

開啟 cmd,輸入 ftp [伺服器網址][] 不用打)。

若想要試試看的話,以下這個網址可以測試 ftp 功能:https://www.smartftp.com/zh-tw/support/kb/2779

假設我輸入 ftp ftp.cs.brown.edu,會出現以下畫面,提示你輸入帳號:

image

輸入完後會有 ftp> 提示可輸入指令:

image

接下來就可以試試看啦:

image

在登入以後,可以用:

  • ls:列出檔案
  • cd [目錄名]:切換目錄
  • get [檔名]:下載檔案
  • put [檔名]:上傳檔案
  • byequit:離開

TELNET

TELNET 是最早期的遠端連線技術,使用 TCP port 23。讓你可透過網路連線到遠端電腦,並在上面執行指令。

他同樣也是採用主從式架構,電腦執行 TELNET 軟體(用戶端),連線到遠端伺服器(TELNET 伺服器,通常開啟 TCP port 23)。

在 TELNET 用戶端連到伺服器後,伺服器可能會傳送歡迎訊息。

接下來還會做身份驗證,請求用戶端送出帳號密碼(都是明文,沒加密的)。

在上面輸入的每個字元、按鍵,TELNET 都會即時送到遠端伺服器。伺服器處理命令後,把結果回傳,會在電腦上看到結果。

TELNET 預設用 ASCII Code,但可以協商其他編碼(如 UTF-8),如果兩端設定不同,會出現亂碼問題。

在安全性問題上,TELNET 所有資料都是用明文傳送,包括輸入的帳號、密碼和指令。只要中途網路被監控,就會被第三方竊聽。所以後來都由 SSH(Secure Shell)來取代了。

如何用 TELNET?

在 Windows 開啟 TELNET 的功能可至:https://unauna1129.medium.com/windows-%E9%96%8B%E5%95%9Ftelnet%E5%8A%9F%E8%83%BD-484e9f03f9b4

同樣打開 cmd,連線指令打:telnet [伺服器 IP] [port,預設23]

然而因為現在完全沒人再用這東西了,所以也成為時代的眼淚,接下來就不會實際操作,而是稍作說明。

常見指令流程:

  • open [伺服器位址]:建立連線
  • quit:離開 TELNET
  • 直接輸入命令操作遠端主機(如 Linux 指令:ls, cd, cat...

而 TELNET 還能用來測試伺服器端口(如 Web 服務是否活著),直接用 telnet 指令,輸入 IP+port,觀察回應即可。例如:

1
telnet www.example.com 80

SSH(Secure Shell)

SSH 基本上就是 TELNET 的替代版本,因為 SSH 安全,有個 Secure。

SSH(Secure Shell,安全殼層協定)是一種可以安全遠端連線與操作伺服器的網路協定,在類 Unix 系統中應用最廣泛,也支援在 Windows、macOS 及多種設備。

SSH 為所有資料傳輸提供加密、身分驗證和完整性保護,廣泛應用於遠端維運、檔案傳輸、隧道加密等。

SSH 預設用 TCP port 22。

SSH 運作原理

  1. 非對稱式加密:Asymmetric Encryption(公鑰 / 私鑰)

當連線伺服器時,伺服器先送出「公鑰」。

用戶端用公鑰加密敏感資料(如登入密碼或用來協議的對稱金鑰),只有伺服器能用「私鑰」解開這些資料。

主要目的是驗證伺服器身分、協商會話(Session)金鑰。

  1. 對稱加密(Session Key)

連線後,雙方用協議產生的「會話(Session)金鑰」,

所有後續資料通訊都用對稱加密(如 AES、ChaCha20)。

  1. 資料完整性與驗證

利用雜湊演算法(如 SHA-2、HMAC)確保資料沒被竄改,也會反覆校驗封包。

SSH 使用

一般來說格式都長這樣:

1
ssh [username]@[ip address]

第一次連線時需要輸入密碼。

若使用公鑰認證登入的話(無密碼),則是以下流程:

會先在本機端生成金鑰:

1
ssh-keygen

會得到 ~/.ssh/id_rsa(私鑰)與 ~/.ssh/id_rsa.pub(公鑰)。

然後將這組金鑰傳給 server:

1
ssh-copy-id tom@192.168.1.10

之後使用私鑰就可安全登入,不用每次都要輸密碼。

SFTP

SFTP(SSH File Transfer Protocol),稱為 SSH 檔案傳輸協定,是一種基於 SSH 協定的安全檔案傳輸方式。實際上就是 FTP 的安全版啦。

有什麼差異呢?除了安全以外。

SFTP 的 Port 全都使用 22,而連線通道從原本的 FTP 的雙通道,降到 1 通道,就這樣。

而 SFTP 的連線語法跟 SSH 是一樣的:

1
sftp user@server.example.com

若用的不是標準的 Port,可額外寫:

1
sftp -P 2222 user@server.example.com

而一旦進入到互動式介面時,操作就跟原本的 FTP 是一樣的了。

總結

FTP(File Transfer Protocol)

FTP 是早期用於兩台電腦間傳送檔案的協定,採主從式架構,使用明文傳輸,因此不安全。

採雙通道設計:

  • 控制通道:port 21,用於指令與回應。
  • 資料通道:port 20 或動態埠,用於傳輸檔案。

基本流程包含:建立連線 → 登入 → 瀏覽目錄 → put/get 上傳下載 → quit 離開。

可用圖形化工具(FileZilla、WinSCP)或 cmd 操作。

由於明文不安全,現代多以 SFTP 取代。

TELNET

TELNET 是早期的遠端文字介面登入技術,使用 TCP port 23。

採主從式架構,所有資料(包含帳密)皆為 明文,容易遭竊聽,因此已被淘汰。

用法為:telnet [IP] [port]

除遠端登入外,也常用來測試伺服器埠是否開啟。

已全面被 SSH 取代。

SSH(Secure Shell)

SSH 是安全版的 TELNET,使用 TCP port 22。

提供加密、身份驗證與資料完整性保護,是現代標準的遠端連線方式。

運作方式:

  • 非對稱加密(公私鑰)用於身分驗證與協商金鑰。
  • 對稱加密(Session Key)負責後續傳輸。
  • 雜湊驗證確保資料未被竄改。

登入方式:ssh user@ip
也可使用 key pair(ssh-keygen + ssh-copy-id)達成免密碼安全登入。

SFTP(SSH File Transfer Protocol)

SFTP 是 FTP 的安全版本,基於 SSH 建立,使用 單一 port 22。

語法與 SSH 類似:sftp user@server

進入後的 put/get/ls 指令與 FTP 類似。

參考資料

遠端連線與傳輸講義 - HackMD

Telnet,Mstsc,SSH,FTP之间的比较和区别 - 上善若泪 - 博客园

SSH介紹及應用 | 凌群電子報

鳥哥私房菜 - 第十三章、遠端連線伺服器 Telnet / SSH / VNC / XDMCP / RSH

Day9: 遠端連線 | iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天