2014年11月26日 星期三

【大三課程】資訊網路筆記(二)【學習筆記】

  第二章主題為「應用層」

一些網路應用-電子信箱、上網、文字訊息、遠端登入、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:給予溝通資訊
















沒有留言:

張貼留言