---
# System prepended metadata

title: CN Lab (第二組) Final Project Report

---

# CN Lab (第二組) Final Project Report


## 專題動機

隨著智慧型手機的普及，現代人的手機內往往存放著大量的照片、影片。然而，如何將手機內的檔案存到電腦備份，或者是與家人共享檔案，成為一個有點麻煩的問題。

檔案傳輸部分，雖然已有一些服務能做到手機、電腦間檔案互傳，但是往往會有作業系統的限制，而且無法同時達到檔案共享的功能。例如：Airdrop 只支援蘋果裝置間的檔案傳輸 (iPhone, iPad, Mac等)，而NAS雖然可以做到跨平台傳檔與檔案共享，但價格較高，且有些NAS僅提供有線網路連接(並非每個家庭都有有線網路)。

有鑑於NAS的各種缺點，因此，我們想要設計1款Software NAS，讓使用者可以透過自己的PC作為類似NAS server的功能，讓其他手機、電腦能夠把檔案傳上去，並透過權限控制等技術，達到點對點傳輸檔案、與多人同時共享檔案等功能。

## 專題介紹

本次專題的主題為"Software NAS"，透過選定一台(或多台)電腦作為server，讓手機與server在同一個子網域中。如此一來，其他裝置(如：手機)就能透過設計好的App，進行broadcast，並找到可以存取的server。

找到欲連線的server後，透過先前設定的帳號、密碼進行身分驗證。確認身分後，他將有權限讀/寫Public storage與"他自己的"Private storage。其中，Public storage可與其他成員共享照片、影片等檔案，而Private storage可將自己的檔案傳到電腦(同時不讓其他人讀取/更改)。

## 網路架構



## 實驗步驟

1. 定位server
    - server 開啟 Zeroconf 服務
    - client 透過 mDNS (multicast DNS) 尋找有提供服務的 server
    - server 回覆它的 IP address 及 Port number
2. Authentication (採用 OAuth 2.0)
    - client 傳送帳號、密碼
    - server 將密碼 hash 並與資料庫比對
    - 若密碼正確，則用JSON Web Token (JWT)製作token
3. Request with token
    - 將 token 夾帶到 http request header 內

## 結果呈現

text

## 實驗總結

text

## 分工/貢獻度

text