2.1 網路應用程式原則
應用層
人機介面
- Client server
- Peer to peer
2.1.1建立網路app
建立虛擬連線,不需要處理中間傳輸問題
- client server
- server: 固定 IP address, data center
- Client: 通常為浮動 IP
- P2P: 大多數為非法傳輸,self scalability
2.1.2 Process Communication
Client Process 與 Server Process溝通,採用 Socket Programming
Addressing processes
- client Port 基本上透過隨機產生,用來接收訊息
- port共有16bit(65535
2.1.5 App layer protocol
Protocol 四個部分
- types of messages exchanged: 定義 request 與 response
- message Syntex:
- message semantics
- rules: 透過 rules 來規定 request 與 response messages
私人與開放的protocol
- 私人如 Skype
- 公開如 HTTP, STMP, SSH
2.1.3
- 資料正確性data integrity: 有些app需要100%可靠性,有些可能會遺失有些資料
- 時間timing: 如電話服務要求低延遲性
- throughput: 多媒體要求有效的throughput
- security: 加密,資料正確性
2.1.4 傳輸要求
TCP
- reliable transport
- Flow control
- congestion control
- 不提供: timing, minimum throughput, guarantee, security
- connection-oriented
UDP
- unreliable data transfer: 只檢查封包
- does not provide: 可靠性
採用
- 多媒體,網路電話UDP或TCP
- email, HTTP
安全TCP
SSL提供加密的TCP,並且在app應用層
2.2 web http
- URL
- Http為stateless的協定,利用cooki
non persistent http
每次傳送都需要建立新的TCP 回應時間為2 RTT +file transmit time RTT: Round Trip time
persistent
可透過同一tcp傳送
架構
- status line
- header lines
- blank line
- entity body
Cookie
沒cookie使用Set-cookie header line
2.2.5 網頁快取
proxy
網路可以透過proxy做caching,例如區網架設proxy server
GET
if-modified-since
Header會傳送本地修改的時間,而伺服器會使用此header進行比對,
若比對相同則會回傳304 not modified
不傳送資料。
2.3 Email
User-agents
- Mail reader, (Outlook)
- Web mail不使用SMTP,而是web
架構
- Client: 送Email到server
- Server: 送信mail server互相傳遞
2.3.1 SMTP
SMTP只能送mail而不可收信(意思是客戶端不可透過SMTP協議進行收信), 採用TCP端口25,並且以7bit的ASCII傳送,收到的Mail會以file的形式保存。
- Mail server之間溝通為SMTP
- Client送email可以透過http或SMTP
- 收信不能透過SMTP
比較
- http: pull
- SMTP: push
2.3.3 mail message formats
body必須為ASCII(8bit)
From:
To:
Subject:
body
2.3.4 POP3
POP為Post Office Protocol的縮寫,支援認證登入以及下載郵件, 而其他郵件存取(Mail access)可以透過IMAP或WEB client(HTTP)。
Transaction phase
協議中與伺服器溝通的語法。
list
: 回傳id與sizeretr
: 郵件檢索dele
: 刪除quit
: 離開
更多的指令可以參見
2.4 DNS
為分散式架構,用於分散流量、延遲與管理,為應用層上的協議。
DNS為應用層,為了擴充性必須是分散式
問題
- 集中式儲存與距離問題(Distant Centralized Database)
- 伺服器維護管理(maintenance) 尺度(scale)過大
功能
- 主機別名(Host aliasing): 如
A
紀錄 - 郵件伺服器別名(Mail server aliasing):
MX
紀錄可以避免單一郵件伺服器離線時 導致郵件無法送出 - 負載分散(load distribution)
管轄
- TLD(top-level): 頂級網域
- authoritative DNS servers: 擁有相關的record
- local DNS server: 如路由器上面的DNS
查詢方式
- iterated query: 通過同一台DNS伺服器下去查詢其他DNS伺服器
- recursive query: 透過多台DNS串連查詢
Local DNS server可以支援迭代或遞迴,但是TLD只支援迭代查詢
參見
封包
- identification: 16bit 查詢編號
- flags: query or reply, recursion desired, recursive available, reply is authoritative
- number of questions
威脅攻擊
- 阻斷式攻擊: root, TLD
- 重定向:中間人,DNS詐欺poisoning
p2p 2.5
沒有 always on server
範例: BitTorrent, VoIP, streaming
2.6 videos streaming and content distribution networks (CDNs)
- DASH: dynamic, adaptive streaming over Http
- CDNs,各地資料中心擺放server, 透過DNS server分配server, 可能透過查詢者的ip找到比較接近的伺服器
CDN
- enter deep: 透過在全球各地ISP佈署群集,減少連接數、延遲、吞吐量
- bring home: 放在ISP共通連線的位置,如IXP以降低維護成本, 相對的延遲可能會比較高。
相關概念補充
- persistent vs multiple connections: 前者只建立單一連線並多次請求。後者每次請求建立新連線。
- no pipelining vs pipelining: 兩者皆在單一連線中,前者等待回覆才再次發出請求, 後者在第一時間同時發出所有請求。
補充
pop3
回應訊息狀態指示以+OK
或-ERR
表示,且必須為大寫1
Network Application Layer