---
# System prepended metadata

title: 網路常見軟體、協定（FTP、TELNET 等）
tags: [計算機網路, Linux, 網路, Windows, 網路概論, 電腦雜談, 計算機概論, 電腦, 電腦常識]

---

# 網路常見軟體、協定（FTP、TELNET 等）

[TOC]

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](https://hackmd.io/_uploads/B1a_h5qgbx.png)

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

![image](https://hackmd.io/_uploads/Hkeoh99g-e.png)

接下來就可以試試看啦：

![image](https://hackmd.io/_uploads/By9AhcqeWg.png)

在登入以後，可以用：

* `ls`：列出檔案
* `cd [目錄名]`：切換目錄
* `get [檔名]`：下載檔案
* `put [檔名]`：上傳檔案
* `bye` 或 `quit`：離開

## 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，觀察回應即可。例如：

```
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）金鑰。

2. 對稱加密（Session Key）

連線後，雙方用協議產生的「會話（Session）金鑰」，

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

3. 資料完整性與驗證

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

### SSH 使用

一般來說格式都長這樣：

```bash
ssh [username]@[ip address]
```

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

若使用公鑰認證登入的話（無密碼），則是以下流程：

會先在本機端生成金鑰：

```bash
ssh-keygen
```

會得到 `~/.ssh/id_rsa`（私鑰）與 `~/.ssh/id_rsa.pub`（公鑰）。

然後將這組金鑰傳給 server：

```bash
ssh-copy-id tom@192.168.1.10
```

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

### SFTP

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

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

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

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

```bash
sftp user@server.example.com
```

若用的不是標準的 Port，可額外寫：

```bash
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](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F%40ncnu-opensource%2FrkLUNTfiel#%E9%81%A0%E7%AB%AF%E9%80%A3%E7%B7%9A%E8%88%87%E5%82%B3%E8%BC%B8)

[Telnet,Mstsc,SSH,FTP之间的比较和区别 - 上善若泪 - 博客园](https://www.cnblogs.com/jingzh/p/16018410.html)

[SSH介紹及應用 | 凌群電子報](https://www.syscom.com.tw/ePaper_Content_EPArticledetail.aspx?id=84&EPID...)

[鳥哥私房菜 - 第十三章、遠端連線伺服器 Telnet / SSH / VNC / XDMCP / RSH](https://linux.vbird.org/linux_server/centos4/0310telnetssh-centos4.php)

[Day9: 遠端連線 | iT 邦幫忙::一起幫忙解決難題，拯救 IT 人的一天](https://ithelp.ithome.com.tw/m/articles/10321343)

