第二章主題為「應用層」
一些網路應用-電子信箱、上網、文字訊息、遠端登入、P2P分享、多人線上遊戲、串流播放、VoIP、社群網路、搜尋
創造網路應用程式 - 寫程式要能夠運作在不同的終端主機及能在網路環境下溝通,不需要寫net-core設備的程式,因為不屬於應用層範圍。
例如要與網路伺服器溝通需使用瀏覽器軟體
App的可能建設 - client-server / peer - to - peer
(一)Client-Server由Server跟Clients組合而成
Server - 主機一直開著,永久的IP位址,資料中心
Clients - 與Server溝通,不定時連線,IP可能為動態,不必與每個使用者溝通
(二)P2P
沒有一直開著的伺服器,任意地直接與主機連接,跟某個點要求服務,再提供服務給其他的點,能夠自行擴充,新進來的點提供服務容量而會有新的服務需求,點沒固定IP且不定時連接,管理複雜。
處理程序間(在主機上正在跑的程式)的溝通
-在相同主機上時兩程序使用內部溝通程序
-不同主機時使用exchanging messages訊息交換,客戶端程序負責開始溝通,伺服器端負責等待被連接,以上為Client-Server架構,P2P架構則雙方角色都要扮演。
Sockets - 類似門,處理程序送訊息到socket,從socket收訊息,
Addressing processes
- 接收訊息時需要有識別碼
- 每個host都會有唯一一個32bits的IP Address
-識別碼包含IP位址、port number
應用層協定定義
- 訊息交換的類型 - 要求與交換
- 語意
- 語法
- 訊息送收的規則
- 公開協定 - 定義在RFC、允許互通 - HTTP, SMTP
- 私有協定 - Skype
應用程式需要什麼傳輸服務
-資料完整性-有些需要100%的可靠傳輸,有些則可允許封包掉落
-時效性-有些服務需要極少的延遲才算有效
-吞吐量-有些需要最低限度的吞吐量,而有些需要彈性
-安全
TCP service
-提供可靠的送收
-流量會控制,不會讓送超過收
-壅塞控制,當網路超載時會停止sender
-不提供最低限度的吞吐量保證及安全
-連接導向,客戶端與伺服器都要安裝需要的程序
UDP service
-不可靠的送收
-不提供流量及壅塞控制、時效性、吞吐量、連接程序
-但因為「快」
Securing TCP - SSL
TCP & UDP不提供加密,明文以明文方式傳進socket
SSL - 提供加密的TCP、資料乾淨、目的端驗證、位於應用層
HTTP傳輸協定 - 網頁包含物件,HTML檔案、圖案、Java應用程式、聲音檔,每個物件都有專屬的URL路徑。
HTTP (hypertext transfer protocol)
- 屬網路的應用層
- client - 用瀏覽器要求、接收、顯示網路物件
- server - 網路伺服器送物件、回應要求
- 使用TCP - client開啟連接,server接收TCP連接,HTTP訊息在瀏覽器與網路伺服器上交換。最後關閉連接。HTTP不會保留過去客戶要求的資訊(stateless)。如果會保留(state)則會變得複雜
HTTP連接
- non-persistent HTTP - 當要傳送資料時就建連結,傳關就關閉,當要傳多個物件時就要多次連接
-persistent HTTP - 傳多件物品時只需要通過一條連接
RTT - 小封包從客戶端到伺服器端再回來的時間
non-persistent 的 HTTP 回應時間 - 2RTT(要求連線+要求檔案)+file_transmission
non-persistentd的問題 - 每一個物件都需要2RTTs,系統每次都要架連接
persistent - 開啟後會留下傳送通道,之後的訊息也用這條已開的來傳送,最少一個RTT
cookie - 有四要件 - 在連到同一網站時會拿之前儲存的cookie來運作偏好設定
- header line 回應訊息
- header line 要求訊息
- 存在user' host,由user's的browser管理
-後端資料庫在網路位址
cookie - 會維持多重收送時的狀態,cookie會允許網站了解更多關於自己,你也會提供姓名或Email給網站,隱私權有疑慮
Web caches(proxy server) 代理伺服
- 目的 - 滿足客戶端不用直接到原伺服器要求服務
- 客戶藉由快取要求上網程序,快取回傳物件,而快取的物件是跟原伺服器拿
- 扮演client與server兩角,實務的cache由ISP建立
- 可減少回應時間
- 可減少連接到機構的數量
- 使提供服務者能更有效地傳送內容
- 如果快取已有最新版本的資料就不用傳資料 - 無物件傳送時間
FTP - file transfer protocol - TCP 資料要可靠傳輸
-存資料到遠端主機
-為client/server model - client 開啟傳送者 server 只會一遠端主機 - port 21
- client合法認證,利用control connection
- client再遠端進行查詢存取,利用control connection
- 當server收到傳輸要求,會開第二條TCP data connection給client
- 當資料傳輸完畢,data connection關閉
- server會開其他的data connection給其他資料
- control connection 是 'out of band',在原本建的通道下傳輸
- FTP server 為 maintain 'state'
Electronic mail 有三要件
- 使用者代理
- 寫讀Email的媒介,別名 'mail reader',排版、編輯、讀取mail
- Outlook
- 送收到的mail存在sever
- 郵件伺服器
- mailbox(存放收進來給user的信)
- message queue(存放要被送出的信),sever與sever之間協定為SMTP
- client 送信到mail server,server從mail server收信。
- simple mail transfer protocol: SMTP
- 使用TCP / port 25
- direct transfer : 由送信server傳到收信server
- 傳送三階段 1.handshaking(greeting) 2.transfer of messages 3.closure
- 命令與回應相互作用
- 訊息一定要在7-bits ASCII編碼下運作(header&body)
- @ 後面得知彼此的server以建立連線
- 使用persistent connection
- 使用CRLF.CRLF決定訊息結尾
與HTTP比較
- HTTP為上網拉(pull)資料,SMTP把資料推(push)給他人
-兩者都是ASCII,command/response相互作用
-HTTP把每一個物件都封裝在自己回應的訊息,要即時讓使用者有感覺
-SMTP則是把多個物件封裝在有多物件的訊息
SMTP - 郵件交換時所需用到的協定 - delivery/stroage
RFC - 標準的訊習交換格式 header (To/From/Subject) body (ASCII only)
server傳到user agent則是用到mail access protocol (有POP, IMAP)
mail access protocol - 從server拿信
- POP3(Post Office Protcol第三版) - 有驗證&下載
- IMAP(Internet Mail Access Protocol) - 有多特色,包含伺服器上儲存訊息之操作
- HTTP - gmail,Hotmail,Yahoo!Mail
POP3
- 登入時要帳密,但寄信時就不用驗證
- 當切換用戶時就不能再讀信件,過程中採stateless。
IMAP
- 會將全部訊息保留在伺服器
- 允許使用者自行組織資料夾
- 過程中會保留使用者的state,資料夾名稱、訊息編碼及資料夾名稱之間的構圖
Pure的P2P架構
- 沒有一直開著的伺服器
- 可與隨意的終端進行直接溝通
- 點是不定時的連接,IP也不固定
- file distribution(BitTorrent)、Streaming、VoIP(Skype)
file distribution - BitTorrent
- 資料被切成256Kb的封包
- 點在torrent中收封包 - torrent : group of peers exchanging chunks of a file
- 有一個追縱器(tracker),會追蹤有哪些點正在參與使用,幫助管理、提高效率
- 剛加入torrent的點不會有任何封包但會隨時間累積其他點的封包
- 追縱器的管理者會取得點的列表,來連接鄰近點的集合
- 下載的同時,也在上傳到其他的點
- 點會變到另外一個點來進行交換
- 點是又進又出的
- 當載完資料時,點可能會自私的離開或無私的留下
TCP跟UDP的socket程式 -
UDP
- 不會有connection在client跟server間
- 傳送者明確地連接到目的端IP並送出所有封包
- 接收者抽出傳送者的IP並接收所有封包
- 傳送的資料可能會流失
TCP
- 伺服器處理程序必定要最先運作且建立socket讓client連接
- client連到server時要建立socket指到server的IP跟port並連到server
- 當server收到client的連接時,TCPserver會創新的socket來與特定client溝通
- server可與多個client溝通
- 用來源的port number來區分client
- TCP提供可靠,位元組串流管傳輸
- SOCK_STREAM指令會一直送,client不用recvfrom,已確定是從何送過來
應用層總結 -
應用架講
- client-server
- P2P
應用服務需求
- 可靠
- 頻寬
- 延遲
網路傳輸模型
- 可靠連接導向 : TCP
- 不可靠數據圖 : UDP
應用層協定
- HTTP / FTP
- SMTP , POP , IMAP
- DNS
- P2P
socket程式 -
- UDP / TCP運用
更多重要點關於協定
典型的要求回應訊息交換
- 客戶要求資訊或服務
- 伺服器回應資料代碼
訊息格式
- header:給關於資料的資訊
- data:給予溝通資訊
TCP跟UDP的socket程式 -
UDP
- 不會有connection在client跟server間
- 傳送者明確地連接到目的端IP並送出所有封包
- 接收者抽出傳送者的IP並接收所有封包
- 傳送的資料可能會流失
TCP
- 伺服器處理程序必定要最先運作且建立socket讓client連接
- client連到server時要建立socket指到server的IP跟port並連到server
- 當server收到client的連接時,TCPserver會創新的socket來與特定client溝通
- server可與多個client溝通
- 用來源的port number來區分client
- TCP提供可靠,位元組串流管傳輸
- SOCK_STREAM指令會一直送,client不用recvfrom,已確定是從何送過來
應用層總結 -
應用架講
- client-server
- P2P
應用服務需求
- 可靠
- 頻寬
- 延遲
網路傳輸模型
- 可靠連接導向 : TCP
- 不可靠數據圖 : UDP
應用層協定
- HTTP / FTP
- SMTP , POP , IMAP
- DNS
- P2P
socket程式 -
- UDP / TCP運用
更多重要點關於協定
典型的要求回應訊息交換
- 客戶要求資訊或服務
- 伺服器回應資料代碼
訊息格式
- header:給關於資料的資訊
- data:給予溝通資訊
沒有留言:
張貼留言