天天看點

計算機網絡(2)-----應用層

思維導圖

計算機網絡(2)-----應用層

    本文是關于網際網路的應用層的介紹,主要分為三部分,第一部分引言初步介紹了應用層的架構,原理,使用等内容。第二部分則是對應用層的常用協定例如HTTP,FTP,SMTP等進行介紹。第三部分則描述了網絡的域名系統即DNS和P2P應用的部分内容。

一.引言

    此小節主要描述應用層協定的原理,即大體上是如何通訊的。包括架構,程序通信,運輸服務等内容,每一層都是比上一層更加的深入一些。

1.1應用程式體系結構

    應用程式的體系結構主要分為兩種,它規定了如何在各種端系統上如何組織該應用程式。一種是上一章曾經描述過得客戶-伺服器體系結構,它會存在一台總是開機的伺服器,服務許多被稱為客戶機的主機的請求。另一種則是P2P體系結構,它不同于客戶-伺服器體系結構,他對伺服器的依賴很小甚至沒有,相反,它使應用程式所在的主機直接進行通信,進行通信的主機稱為對等方。

1.2 程序通信

    應用程式的體系結構解決了如何組織程式的問題,那麼如何使不同主機間的程式進行通訊呢?在第一章中,我們知道,兩台主機間的通訊是靠封包的傳輸進行的。如果兩台主機間的應用程式需要進行資料的互動的話,那麼,進行通訊的實際上是程序。每對通訊程序其中的一個被稱為客戶,即發起通訊的一方。另一個被稱為伺服器,即等待聯系的一方。

    通訊程序通過一個被稱為套接字(socket)的軟體接口向網絡發送和接收封包。當一個套接字希望像另一台主機傳輸資料時,會通過IP和端口号進行尋址,以定位目的主機。IP将在以後的章節中進行讨論。

計算機網絡(2)-----應用層

1.3運輸服務

    按照五層協定的體系,第一層應用層需要使用第二層所提供的服務。第二層被稱為運輸層,具體作用便是運輸封包,是以應用層會使用到運輸層的運輸服務。運輸層所提供的運輸服務主要有兩種TCP和UDP,這裡做簡單介紹,具體讨論在後一章中。

使用TCP協定運輸封包主要有以下連個特點:

  • 面向連接配接的服務:在應用層封包進行流動之前,TCP會讓客戶機和伺服器之間通過‘握手’建立起一個TCP連接配接。封包通過此                                 TCP連接配接進行雙向收發
  • 可靠的資料傳輸服務:TCP協定可以無差錯,按适當的順序傳遞所有發送的封包。
  • 抑制機制:當客戶機和伺服器之間的網絡出現擁塞是,TCP協定會抑制發送程序。

使用UDP協定運輸封包則具有以下特點:

  • 無連接配接服務:即沒有‘握手’的過程,
  • 不可靠資料傳輸服務:即客戶會通過套接字發送封包,但是不保證封包會被接收。

    運輸層除了可以實作可靠資料傳輸這一功能外,還可以實作對于安全性的保證。另外,雖然運輸層協定沒有直接實作固定吞吐量和定時的功能,但是通過特别的設計方法可以實作這兩個功能,具體讨論則在以後的章節中介紹。

二.應用層協定

    應用協定定義了運作在不同端系統上的應用程式之間如何互相傳遞封包,包括封包的類型,文法,字段等。本節主要讨論了HTTP,FTP,電子郵件(SMTP)等應用層協定。

2.1HTTP

    HTTP全名為超文本傳輸協定,他是Web的核心,使用TCP作為支撐運輸協定,主要功能是定義了請求和發送Web頁面的方式,實作Web頁面的傳輸。

2.1.1基本原理

    我們用一個例子來描述HTTP協定的實作原理。 客戶機的應用程式(Web浏覽器)會向Web伺服器請求一個Web頁面,Web頁面則由Web對象組成,比如HTML基本檔案,圖檔等。伺服器接收此請求後,會将Web對象一次傳輸給浏覽器。此外,伺服器不會儲存任何有關該客戶的狀态資訊,這被稱為無狀态協定。

    由于使用TCP協定運輸封包,而一個Web頁面會由多個Web對象構成,是以,我們必須考慮到對每一個Web對象都重建立立一個TCP連接配接(非持續連接配接)還是隻使用一個TCP連接配接傳輸所有Web對象(持續連接配接)。

    由于每次重建立立TCP連接配接都要進行三次握手,如下圖,是以非持續連接配接每次都會有重複的連接配接操作,消耗大量時間,并對伺服器和客戶機帶來嚴重的負擔。而持續連接配接不必如此,隻需一次‘三次握手’,當次TCP連接配接長時間不被使用時才會被斷開。HTTP協定既可以使用非持續連接配接,也可以使用持續連接配接,但預設會使用持續連接配接。

計算機網絡(2)-----應用層

2.1.2封包格式

HTTP協定有請求封包和響應封包兩種封包,其格式也略有差别。

HTTP協定的請求封包的格式如下圖:

計算機網絡(2)-----應用層

請求行包括方法字段,URL,和版本号,首部行會指明需要實作的功能和資訊,實體主體則可能會儲存表單的送出内容。

請求行的方法字段有以下五個:

  • GET:使用GET時,URL字段會帶有請求對象的标志,實體主體為空,若要送出表單,資料則被置于URL中。
  • POST:使用POST時,實體主體中會包含送出表單的内容。
  • HEAD:使用HEAD時,伺服器隻進行響應,不傳回請求對象
  • PUT:向Web伺服器上傳對象
  • DELETE:向Web伺服器删除對象

HTTP協定的響應封包格式如下圖:

計算機網絡(2)-----應用層

狀态行包括版本号,狀态碼和短語,例如 200  OK : 請求成功,404 Not Found :請求文檔不在伺服器。首部行功能同請求封包一樣,指明一些功能和資訊。實體體則包含了所請求的對象。

2.1.3 cookie

    上文中說到,HTTP是無狀态的,而一些Web站點需要儲存浏覽器的通路資訊,是以就有了cookie技術,他的主要原理就是在某個浏覽器初次通路一個Web站點時,會在網站的資料庫中插入此浏覽器的資訊,例如一個編号。而傳回的響應封包的首部行中會包括一條cookie資訊,cookie資訊則會被儲存額在浏覽器的固定位置的cookie檔案中。當次浏覽器再次通路次網站時,會提取此資訊并插入在請求封包中,此時網站接收到這個請求後,會在背景的資料庫中根據cookie查找特定的資訊。如下圖:

計算機網絡(2)-----應用層

2.1.4 Web緩存

    Web緩存通過使用Web緩存器(代理伺服器)來實作,代理伺服器擁有自己的存儲器,以儲存最近常用的請求響應資訊。具體的實作原理是通過一些配置是客戶機的請求被轉接到代理伺服器中,代理伺服器則會搜尋自己存儲的内容看看是否有請求需要的響應資訊,如果有則傳回此響應封包,如果沒有則回向初始伺服器轉發請求,收到響應封包後再本地留下副本,然後将此響應封包傳回給客戶機。

計算機網絡(2)-----應用層

    使用代理伺服器會産生一個問題,即如果初始伺服器中的頁面同代理伺服器中的頁面不一緻怎麼辦,比如,在代理伺服器儲存了一次副本後,初始伺服器中的頁面被修改了。解決辦法則是使用條件GET,條件GET指方法字段是GET,并在首部行中包含If-Modified-Since.如果有這個首部行,那麼當代理伺服器接收到請求後會向初始伺服器發送一個封包以确定此檔案是最新的,如果是,響應封包中則不含有實體體,如不不是則含有。确定的方法則依據首部行中的Last-Modified 即最後修改時間确認。

2.2 FTP

FTP全名為檔案傳輸協定,主要功能是實作檔案的傳輸(不僅僅是HTML),依然使用TCP連接配接。

    FTP與HTTP不同,FTP會使用兩個并行TCP連接配接,一個稱為控制連接配接,一個稱為資料連接配接。控制連接配接用于傳輸控制資訊,例如賬号,密碼等。資料連接配接則主要負責發送實際的檔案。FTP也會在整個會話期間儲存使用者的狀态。

計算機網絡(2)-----應用層

2.3 電子郵件

2.3.1基本組成

整個電子郵件系統有三部分組成,即使用者代理(常用的電子郵件軟體,例如FoxMail),郵件伺服器,簡單郵件傳輸協定SMTP。

  • 使用者代理:負責郵件的閱讀,回複,轉發等操作。
  • 郵件伺服器:接收使用者代理A發送的郵件,并将之發送給使用者代理B的郵件伺服器,每個郵件伺服器都有郵箱,維護客戶的                          郵件,此後,使用者代理B便可以從B的郵件伺服器接收郵件了。
  • SMTP:全名為簡單郵件傳輸協定,郵件的内容會被解釋為ASCII碼,并且一般不使用中間伺服器發送郵件,即使兩個郵件                  伺服器位于地球的兩端。
計算機網絡(2)-----應用層

2.3.2 SMTP封包格式

由下圖可知,SMTP封包的主要包括首部和主體兩部分。首部中含有From,To必須資訊,主體則是郵件的内容。

計算機網絡(2)-----應用層

2.3.3郵件通路協定

當郵件伺服器B接收到郵件伺服器A發送的郵件後,使用者B如何通路此郵件呢?有三種流行的郵件通路協定,即POP3,IMAP,HTTP.

計算機網絡(2)-----應用層
  • POP3:第三版郵局協定,有三個工作階段。特許(使用者代理發送賬号密碼鑒别使用者),事務處理(使用者代理取回封包),               更新(結束會話,删除有删除标記的封包)
  • IMAP:英特網郵件通路協定,提供了建立檔案夾即将郵件在檔案夾中移動的功能。
  • HTTP:通過使用浏覽器登入郵箱以擷取和處理郵件

三.DNS

    DNS全名叫域名系統,他的主要功能就是進行從主機名到IP位址的轉換,而他的實作則是通過不同層級的DNS伺服器的分布式資料庫進行的。

3.1伺服器組成

DNS主要有三層DNS伺服器上的分布式資料庫實作,這三層DNS伺服器分别是根DNS伺服器,頂級域DNS伺服器,和權威DNS伺服器。此外,嚴格來說,本地DNS伺服器不算在這個層次中,但是相當的重要

計算機網絡(2)-----應用層
  • 根DNS伺服器:網際網路總共有13個根DNS伺服器,他将決定繼續查詢那個頂級域DNS伺服器。
  • 頂級域DNS伺服器:負責解析頂級域名(com,org,net,edu等)和國家級域名(cn,uk,fr,ca等)決定使用那個權威                                     DNS伺服器
  • 權威DNS伺服器:儲存主機位址到IP位址的映射
  • 本地DNS伺服器:主要起代理作用,請求主機通過本地DNS伺服器和其他三個層次的DNS伺服器進行互動,如下圖:
計算機網絡(2)-----應用層

3.2 DNS緩存

    使用DNS緩存的主要目的是減少網際網路中到處傳輸的DNS封包數量和改善延遲性能。其實作的主要方式同Web緩存大同小異,會将DNS相應資訊緩存在本地的存儲器中。

    存儲的DNS資訊被稱為資源記錄(RR),他是包括Name,Value,Type,TTL四個字段的元組。Type決定了Name和Value的映射方式,例如Type = A,表示此RR是标準的主機名到IP的映射,Type = NS,則表示Name是域名,value是擷取此映射的權威DNS伺服器的主機名等等。TTL則是該記錄的生存時間。

3.2.1 DNS封包

DSN封包有查詢封包和回答封包,他們的格式是相同的

計算機網絡(2)-----應用層

3.2.2 插入DNS記錄

額,花錢給注冊登記機構。

四.P2P應用

    至今為止,我們接觸的都是客戶-伺服器體系結構,它極大了依賴于伺服器,而P2P體系結構對伺服器的依賴很小甚至沒有。這個小節會讨論立足于此的兩種應用設計。

4.1檔案分發

4.1.1 P2P體系結構的擴充性

    舉例,如下圖,若伺服器中存在一個檔案需要本所有客戶機擷取,假設傳輸此檔案會消耗伺服器和所有客戶機的上載速率,使用客戶-伺服器體系結構将不得不将檔案通過伺服器一次一次的傳輸給各個客戶機。若使用P2P體系結構,當伺服器将檔案傳輸給第一個客戶機後,此客戶機也可以傳輸檔案,依次遞歸。。。。

計算機網絡(2)-----應用層

4.1.2 BitTorrent

BitTorrent是一種流行的P2P檔案分發協定,參與此檔案分發的所有對等方的集合被稱為一個洪流。每個洪流中都有一個追蹤器,當一個對等方加入此洪流時,便會向注冊自己,并周期性的通知洪流它人在其中。如下圖所示

計算機網絡(2)-----應用層

4.2 分布式散清單

    分布式散清單(DHT)可以這樣描述,在一個P2P系統中,每個對等方儲存的鍵值對僅占總體的一個子集,我們允許任何的一個對等方用一個特别的鍵來查詢該分布式資料庫。分布式資料将定位擁有該鍵值對的對等方,查詢後後傳回該鍵值對。任何的對等方也被允許插入新的鍵值對。對等方可能會離開或者新加入,若發生這種情況,則需要使用後繼(每個對等法儲存第一和第二後繼,若第一後繼退出,使用第二後繼作為第一後繼,加入新的端系統同理)資料庫對DHT進行維護。以下是概念圖:

計算機網絡(2)-----應用層

注:本篇文章由《計算機網絡:自頂向下方法》第二章:應用層  總結而來,由于本人非計算機專業出身,許多知識實在是了解不能,總結有相當多的遺漏,乃是我看不懂所緻,更别說其中内容肯定有大量的了解錯誤,萬望大家提出批評,我好改正。

繼續閱讀