計算機網路知識持續構建(二)——應用層

weixin_34208283發表於2016-10-09

網路應用是計算機網路存在的的理由,所以上至TCP/IP協議棧,下至雙絞銅線和光纖,都是為實現網路應用提供各種服務

但是由於良好的分層模型,我們碼農在應用層盡情發揮想象力的時候,除了關注應用之間的資料互動外,其他的對我們基本是透明的,大大降低了複雜度

網路應用程式體系結構

應用層常見的程式體系機構有兩種

  • Client/Server,即客戶機/伺服器體系結構,該體系結構包含一個始終執行著提供服務的伺服器,以及分佈在各個使用者那裡的客戶機
  • P2P,該體系結構很少依賴伺服器,主要利用網路中互相平等的主機提供服務,著名的Skype、BT均便是該體系結構

我們可以做什麼?

碼農在開發網路應用時只需要關注應用層的協議,更底層的我們一般能夠做的只是

  1. 選擇運輸層協議,TCP?UDP?
  2. 設定幾個運輸層的引數,最大快取、最大報文長度等

關於運輸層協議的選擇,首先要知道的是兩種協議為我們提供了什麼服務?

TCP提供了

  1. 面向連線的服務,即在資料互動之前要先建立一個虛擬的‘連線’,這個連線是全雙工
  2. 可靠資料傳輸服務,可靠是指能夠保證資料有序、完整的傳輸
  3. 擁塞控制服務,這可能對單個應用好處不大,但卻能夠提供整個網際網路的效能
  4. 未提供加密服務,如果需要可以使用安全套接字實現SSL

UDP提供了

  1. 是一個輕量級的協議,不需要建立連線
  2. 不可靠的資料傳輸服務,不可靠是指不保證資料能付完整、有序的傳輸
  3. 也沒有擁塞控制

HTTP

超文字傳輸協議(HyperText Transfer Protocol),它是web的核心。使用TCP作為它的支撐運輸層協議。是一個無狀態協議

HTTP請求報文格式

1823973-3a01a5cdc5680e16.png
http_request.png

請求報文第一行是請求行(request line),後續為首部行(header line)

請求行中請求方法一般為POST、GET、PUT、DELETE,協議版本類似HTTP/1.1

HTTP響應報文格式

1823973-5aa22669e1fd07be.png
http_response.png

一些常見的響應碼

  • 200 ok 請求成功
  • 301 moved permanently 請求的物件已經被永久轉移了
  • 400 bad request 一個通用差錯程式碼,該請求伺服器無法理解
  • 404 not found 被請求的文件不在伺服器
  • 500 server error 伺服器錯誤
  • 505 http version is not supported 當前http版本不被支援

DNS

DNS(域名系統)的主要作用是提供主機名到IP地址的轉換服務,由一個分散式的DNS資料庫和查詢該資料庫的協議組成,基於UDP協議。DNS同時也可以提供負載均衡服務。

DNS分散式、層次資料庫

  1. 根DNS伺服器 因特網上有13個根伺服器,其中大部分在北美。實際上每臺伺服器都是冗餘的,為了提供安全性和可靠性
  2. 頂級域(TLD)伺服器 這些伺服器負責頂級域名(com、org、net、edu)和所有國家的頂級域名(uk、fr、ca等)
  3. 權威DNS伺服器 網路上具有公共可訪問主機的組織和公司必須提供公共課訪問的DNS記錄

P2P

P2P是除了伺服器-客戶端之外另一種重要的網路體系,是在網路中互相對等的兩個終端之間進行通訊,常見的應用為檔案分發,即著名的BitTorrent協議;另一種是在對等方中組織並搜尋資訊;第三種是Skype,一個成功的P2P因特網電話應用。

BitTorrent

BT下載的主要原理是充分利用加入分發的各終端的網路上載流量,因為一般情況下,終端的下載流量會遠遠大於上載。簡單來說,就是各終端均勻的下載檔案的各個部分,然後再在臨近的終端之間互相交換資料,既減輕伺服器下載壓力,又能提供終端的下載速度,實現了下載的人越多,下載速度越快的“變態”下載

相關文章