網絡應用的體系結構
1、客戶機/服務器(Client-Server, C/S)
服務器:
- 7*24小時提供服務
- 永久訪問地址/域名
- 利用大量服務器實現可拓展性
客戶機:
- 與服務器通信,使用服務器提供的服務
- 間歇性接入網絡
- 可能使用動態IP地址
- 不會與其他客戶機直接通信
例如:Web服務
2、點對點結構(Peer-to-peer,P2P)
- 沒有永遠在線的服務器
- 任意端系統/節點之間可以直接通信
- 節點間歇性接入網絡
- 節點可能改變IP地址
- 缺點:難於管理
- 優點:高度可伸縮
3、混合結構(Hybrid)
Napster
- 文件傳輸使用P2P結構
- 文件的搜索採用C/S結構——集中式
每個節點向中央服務器登記自己的內容
每個節點向中央服務器提交查詢請求,查找感興趣的內容
網絡應用的進程間通信
進程:
主機上運行的程序
客戶機進程:
發起通信的進程
服務器進程:
等待通信請求的進程
注意:採用P2P架構的應用同樣存在客戶機進程/服務器進程之分
同一主機上運行的進程:
- 進程間通信機制
- 操作系統提供
不同主機上運行的進程:
- 消息交換
套接字:Socket
- 進程間通信利用scoket發送/接收消息實現
- 類似於寄信
- 發送方將消息送到門外郵箱
- 發送方依賴(門外的)傳輸基礎設施將消息傳到接收方所在主機,並送到接收方的門外
- 接收方從門外獲取消息
傳輸基礎設施向進程提供API
- 傳輸協議的選擇
- 參數的設置
如何尋址進程?
- 不同主機上的進程間通信,那麼每個進程必須擁有標識符
- 如何尋址主機?——IP地址
- 主機有了IP地址之後,並不足以定位進程,因爲同一主機上可能同時有多個進程需要通信
端口號
- 爲主機上每個需要通信的進程分配一個端口號
- HTTP Server:80
- Mail Server:25
進程的標識符
IP地址+端口號
應用層協議
- 網絡應用需遵循應用層協議
- 公開協議
由RFC(Request For Comments)定義
允許互操作
HTTP,SMTP,…… - 私有協議
多數P2P文件共享應用
應用層協議的內容
- 消息的類型(type)
請求消息
響應消息 - 消息的語法(syntax)格式
消息中有哪些字段?
每個字段如何描述 - 字段的語義(semantics)
字段中信息的含義 - 規則(rules)
進程何時發送/響應消息
網絡應用對傳輸服務的需求
- 數據丟失/可靠性
某些網絡應用能容忍一定的數據丟失:網絡電話
某些網絡應用要求100%可靠的數據傳輸:文件傳輸,telnet - 時間延遲
有些應用在延遲足夠低時才“有效”
網絡電話/網絡遊戲 - 帶寬(bandwidth)
某些應用只有在帶寬達到最低要求時才“有效”:網絡視頻
某些應用能夠適應任何帶寬——彈性應用:email
Internet提供的傳輸服務