1. 程式人生 > >讀書筆記 ---- 《計算機網路—謝希仁第7版》---- 第6章 應用層

讀書筆記 ---- 《計算機網路—謝希仁第7版》---- 第6章 應用層

第六章  應用層

5  電子郵件

本章重要的內容:

1、域名系統DNS—從域名解析出IP地址;

2、全球資訊網和HTTP協議,以及全球資訊網的兩種不同的資訊搜尋引擎;【HTTP協議比較重要,但這個裡面講的比較簡單】

3、電子郵件的傳送過程,SMTP協議和POP3協議、IMAP協議使用的場合;

4、動態主機配置協議DHCP的特點;

5、網路管理的三個組成部分(SNMP本身、管理資訊結構SMI和管理資訊庫MIB)的作用;

6、系統呼叫和應用程式設計介面的介面概念;

7、P2P檔案系統。

1  域名系統DNS

1.1  域名系統概述

域名系統DNS(Domain  Name  System)是網際網路使用的命名系統,用來把便於人們使用的機器名字轉換為IP地址。

為什麼要用DNS?】使用者與網際網路上的某臺主機通訊時,必須要知道對方的IP地址。然而使用者很難記住32位的二進位制主機地址,所以使用域名系統能把網際網路上的主機名字轉換為IP地址。

為什麼機器在處理IP資料報的時候要使用IP而不直接使用域名呢?】這是因為IP地址的長度是固定的32位(如果是IPV6,則是128位),而域名的長度並不是固定的,機器處理起來比較困難。

網際網路的域名系統DNS被設計成為一個聯機分散式資料庫,並採用客戶伺服器方式。

1.2  網際網路的域名結構

網際網路採用層次樹狀結構的命名方法,採用這種命名方法,任何一個連線在網際網路上的主機或路由器,都有一個唯一的層次結構的名字,即域名(Domain  Name)

。“域”是名字空間中一個可被管理的劃分,還可以劃分子域。

DNS規定,域名中的標號都由英文字母和數字組成,每一個標號不超過63個字元,也不區分大小寫字母;級別低的域名寫在最左邊,而級別最高的域名寫在最右邊。由多個標號組成的完整域名總共不超過255個字元。各域名由上一級的域名管理。

網際網路的名字空間是按照機構的組織來劃分的,與物理的網路無關,與IP地址中的“子網”也沒有關係。

1.3  域名伺服器

一個域名伺服器所負責的(或有許可權的)範圍叫做區(zone),一個區中的所有節點必須是可以聯通的。每一個區設定相應的許可權域名伺服器,用來儲存該區中的所有主機的域名到IP地址的對映。總之,DNS伺服器的管轄範圍不是以“域”為單位,而是以“區”為單位。區是DNS伺服器實際管轄的範圍。區可能等於或小於域,但一定不能大於域

根據域名伺服器所起的作用,可以把域名伺服器劃分為四種不同的型別:根域名伺服器、頂級域名伺服器、許可權域名伺服器、本地域名伺服器。

1、根域名伺服器

最高層次的域名伺服器。所有的根域名伺服器都知道所有的頂級域名伺服器的域名和IP地址。根域名伺服器是最重要的域名伺服器,因為不管是哪一個本地域名伺服器,若要對網際網路上任何一個域名進行解析,只要自己無法解析,就首先要求助於根域名伺服器。

根域名伺服器採用任播技術,因此當DNS客戶向某個根域名伺服器的IP地址發出查詢報文時,網際網路上的路由器就能找到離這個DNS客戶最近的一個根域名伺服器。

2、頂級域名伺服器

這些域名伺服器複製管理在該頂級域名伺服器註冊的所有二級域名。當收到DNS查詢請求時,就給出相應的回答(可能是最後的結果,也可能是下一步應當找的域名伺服器的IP地址)。

3、許可權域名伺服器

負責一個區的域名伺服器。當一個許可權域名伺服器還不能給出最後的查詢回答時,就會告訴發出查詢請求的DNS客戶,下一步應當找哪一個許可權域名伺服器。

4、本地域名伺服器

首先說明:本地域名伺服器並不屬於域名伺服器層次結構,但它對域名系統非常重要。

當一臺主機發出DNS查詢請求時,這個查詢請求報文就傳送給本地域名伺服器。本地域名伺服器離使用者較近,一般不超過幾個路由器的距離。當所要查詢的主機也屬於同一個本地ISP時,該本地域名伺服器就能將所查詢的主機名轉換為它的IP地址,而不需要再去詢問其他的域名伺服器。

  • 域名解析過程中,遞迴查詢和迭代查詢的區別:

遞迴查詢:主機向本地域名伺服器的查詢一般都是採用遞迴查詢。所謂遞迴查詢就是:如果主機所要詢問的本地域名伺服器不知道被查詢域名的IP地址,那麼本地域名伺服器就以DNS客戶的身份,向其他根域名伺服器繼續發出查詢請求報文,而不是讓該主機自己進行下一步的查詢。

迭代查詢:本地域名伺服器向根域名伺服器的查詢通常採用的是迭代查詢。當根域名伺服器收到本地域名伺服器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本杜域名伺服器下一步應當指向哪一個域名伺服器進行查詢。根域名伺服器通常是把自己知道的頂級域名伺服器的IP地址告訴本地域名伺服器,讓本地域名伺服器再向頂級域名伺服器查詢。頂級域名伺服器在收到本地域名伺服器的查詢請求後,要麼給出所要查詢的IP地址,要麼告訴本地域名伺服器下一步應當向哪一個許可權域名伺服器進行查詢,本地域名伺服器就這樣進行迭代查詢。

當然,本地域名伺服器也可以採用遞迴查詢,這取決於最初的查詢請求報文的設定是要求哪一種查詢方式。

  • 快取記憶體

為了提高DNS查詢效率,並減輕域名伺服器的負荷和較少網際網路上的DNS查詢報文數量,在域名伺服器中廣泛使用快取記憶體。快取記憶體用來存放最近查詢過的域名以及從何處獲得域名對映資訊的記錄。當然需要設定計時器,超時刪除,再重新獲取。

主機中也有快取記憶體。許多主機在啟動時,從本地域名伺服器下載名字和地址的全部資料庫,維護存放自己最近使用的域名的快取記憶體,並且只在從快取中找不到名字時才使用域名伺服器。

2  檔案傳送協議

2.1  FTP概述

檔案傳輸協議FTP(File  Transfer  Protocol)是網際網路上使用得最廣泛得檔案傳送協議。FTP提供互動式的訪問,允許客戶指明檔案的型別與格式,並允許檔案具有存取許可權。FTP遮蔽了各計算機系統的細節,因而適合於在異構網路中任意計算機之間傳送檔案。

下面介紹基於TCP的FTP和基於UDP的簡單檔案傳輸協議TFTP,它們都是檔案共享協議中的一大類,即複製整個檔案,其特點是:若要存取一個檔案,就必須先獲得一個本地的檔案副本。如果要修改檔案,只能對檔案的副本進行修改,然後再將修改後的檔案副本傳回原節點。

2.2  FTP的基本工作原理

檔案傳輸協議FTP只提供檔案傳送的一些基本服務,它使用TCP可靠的運輸服務。FTP的主要功能是減少或消除在不同作業系統下處理檔案的不相容性。

FTP使用客戶伺服器方式。一個FTP伺服器程序可同時為多個客戶程序提供服務。FTP的伺服器程序由兩大部分組成:一個主程序,負責接受新的請求;另外有若干個從屬程序,負責處理單個請求。

主程序的工作步驟如下:

1、開啟21埠,使客戶程序能夠連線上;

2、等待客戶程序發出連線請求;

3、啟動從屬程序處理客戶程序發來的請求。從屬程序對客戶程序的請求處理完畢後即終止,但從屬程序在執行期間根據需要還可以建立其他一些子執行緒;

4、回到等待狀態,繼續接受其他客戶程序發來的請求。主程序與從屬程序的處理是併發進行的。

在進行檔案傳輸的時候,FTP的客戶和伺服器之間要建立兩個並行的TCP連線:“控制連線”和“資料連線”。控制連線在整個會話期間一直保持開啟,FTP客戶所發出的傳送請求,通過控制連線傳送給服務端的控制程序,但控制連線並不用來傳送檔案。實際用於傳輸檔案的是“資料連線”。伺服器端的控制程序在接收到FTP客戶發來的檔案傳輸請求後就建立“資料傳送程序”和“資料連線”,用來連線客戶端和服務端的資料傳送程序。

當客戶端程序向伺服器程序發出建立連線請求時,要尋找連線伺服器程序的數值埠21,同時還要告訴伺服器程序自己的另一個埠號碼,用於建立資料傳輸連線。接著,伺服器程序用自己傳送資料的熟知埠20與客戶程序所提供的埠號建立資料傳送連線。由於FTP使用了兩個不同的埠號,所以資料連線與控制鏈家而不會發生混亂。

2.3  簡單檔案傳輸協議TFTP

簡單檔案傳輸協議TFTP(Trivial  File  Transfer  Protocol)是一個很小且容易實現的檔案傳送協議。

TFTP使用UDP資料報,因此TFTP需要有自己的差錯改正措施。TFTP只支援檔案傳輸而不支援互動,也不對使用者身份進行鑑別。

TFTP的主要優點:

1、TFTP可用於UDP環境。例如:當需要將程式或者檔案同時向許多機器下載時就往往需要使用TFTP;

2、TFTP程式碼所佔記憶體比較小。

TFTP的主要特點:

1、每次傳送的資料報文中有512位元組的資料,但最後一次可不足512位元組;

2、資料報文按序編號,從1開始;

3、支援ASCII碼或二進位制傳送;

4、可對檔案進行讀或寫;

5、使用簡單的首部。

3  遠端終端協議TELNET

TELNET是一個簡單的遠端終端協議。使用者用TELNET就可以在其所在地登陸(TCP連線註冊)到遠地的另一臺主機上,能夠實現遠端控制。TELNET又稱為終端模擬協議

TELNET也使用客戶伺服器模式。在本地系統執行TELNET客戶程序,而在遠地主機上執行TELNET伺服器程序。和FTP的情況相似,伺服器中的主程序等待新的請求,併產生從屬程序來處理每一個連線。

TELNET定義了資料和命令應怎樣通過網際網路,這些定義就是所謂的網路虛擬終端NVT(Network  Virtual  Terminal)。

客戶軟體把使用者的擊鍵和命令轉換成NVT格式,並送交伺服器。伺服器軟體把收到的資料和命令從NVT格式轉換成遠地系統所需的格式。向用戶返回資料時,伺服器把遠地系統的格式轉換為NVT格式,本地客戶再從NVT格式轉換到本地系統所需的格式。

TELNET的選項協商(Option  Negotiation)使TELNET客戶和TELNET伺服器可商定使用更多的終端功能,協商的雙方是平等的。

4  全球資訊網和HTTP協議

4.1  全球資訊網概述

全球資訊網WWW(World  Wide  Web)是一個大規模、聯機式的資訊儲藏所,簡稱Web。全球資訊網用連結的方法能非常方便地從網際網路上的一個站點訪問/連結另一個站點,從而主動地按需獲取豐富的資訊。

全球資訊網是一個分散式的超媒體系統,它是超文字系統的擴充。

超文字:指包含指向其他文件的連結的文字。也就是說,一個超文字由多個資訊源連結組成,而這些資訊源可以遍佈在世界各地,並且數目也是不受限制的,利用一個連結可使使用者找到遠在異地的另一個文件,而這又可連結到其他文件(以此類推)。這些文件可以位於世界上任何一個接在網際網路上的超文本系統中。超文字是全球資訊網的基礎。

4.2  統一資源定位符URL

統一資源定位符URL(Uniform  Resource  Locator):是用來表示從網際網路上得到的資源位置和訪問這些資源的方法。

網際網路上的所有資源,都有一個唯一確定的URL。URL相當於一個檔名在網路範圍的擴充套件,它的一般形式由下面四個部分組成:

<協議>://<主機>:<埠>/<路徑>

URL裡面的字母不分大小寫,但為了便於閱讀,有時故意使用一些大寫字母。

4.3  超文字傳送協議HTTP

1、HTTP的操作過程

HTTP協議定義了瀏覽器怎樣向全球資訊網伺服器請求全球資訊網文件,以及伺服器怎樣把文件傳送給瀏覽器。

HTTP協議是面向事務的應用層協議,它是全球資訊網上能夠可靠地交換檔案(包括:文字、聲音、影象等各種多媒體檔案)的重要基礎。

每個全球資訊網網點都有一個伺服器程序,它不斷地監聽TCP的埠80,以便發現是否有瀏覽器向它發出連線建立請求。一旦監聽到連線建立請求並建立了TCP連線之後,瀏覽器就向全球資訊網伺服器發出瀏覽某個頁面的請求,伺服器接著就返回所請求的頁面作為響應。最後,TCP連線就被釋放了。在瀏覽器和伺服器之間的請求和響應的互動,必須按照規定的格式和遵循一定的規則。這些格式和規則就是超文字傳送協議HTTP。

HTTP協議是無狀態的,即同一個客戶第二次訪問同一個伺服器上的頁面時,伺服器的響應與第一次被訪問時的相同(假設頁面沒有更新),因為伺服器不記得曾經訪問過的這個客戶,也不記得為它服務過多少次。HTTP的無狀態特性簡化了伺服器的設計,使伺服器更容易支援大量併發的HTTP請求。

HTTP/1.0的主要缺點:

每請求一個文件就要有兩倍RTT的開銷。若一個主頁上有很多連結的物件需要依次進行連結,那麼每一次連結下載都導致2RTT的開銷。另一種開銷就是全球資訊網客戶和伺服器每一次建立新的TCP連線都要分配快取和變數。特別是全球資訊網伺服器往往要同時服務於大量客戶的請求,所以這種非持續連線會使全球資訊網伺服器的負擔很重。好在瀏覽器都能夠開啟5~10個並行的TCP連線,而每一個TCP連線處理客戶的一個請求。因此,使用並行TCP連線可以縮短響應時間。

HTTP/1.1:

較好的解決了HTTP/1.0兩倍RTT時間開銷的問題。它使用持續連線。所謂持續連線就是全球資訊網伺服器在傳送響應後仍然在一段時間內保持這條連線,使同一個客戶(瀏覽器)和該伺服器可以繼續在這條連線上傳送後續HTTP請求報文和響應報文。這並不侷限於傳送同一個頁面上鍊接的文件,而是隻要這些文件都在同一個伺服器上就行。

HTTP/1.1的持續連線有兩種工作方式:非流水線方式和流水線方式。非流水線客戶訪問一次物件需要一個RTT時間,流水線客戶訪問所有的物件只需要花費一個RTT時間。

2、代理伺服器

代理伺服器是一種網路實體,它又稱為全球資訊網快取記憶體。代理伺服器把最近的一些請求和響應暫存在本地磁碟中。當新請求到達時,若代理伺服器發現這個請求與暫時存放的請求相同,就返回暫存的響應,而不需要按URL的地址再次去網際網路訪問該資源。代理伺服器可在客戶端或伺服器端工作,也可在中間系統上工作。

下面舉個例子說明:

圖中校園網使用代理伺服器訪問網際網路的過程如下:

1、校園網計算機中的瀏覽器訪問網際網路的伺服器請求服務時,就先和校園網的代理伺服器建立TCP連線,並向代理伺服器發出HTTP請求報文;

2、若代理伺服器已經存放了所請求的物件,代理伺服器就把這個物件放入HTTP響應報文中返回給計算機的瀏覽器;

3、否則,代理伺服器就代表發出請求的使用者瀏覽器,與網際網路上的源點伺服器建立TCP連線,併發送HTTP請求報文;

4、源點伺服器把所請求的物件放在HTTP響應報文中返回給校園網的代理伺服器;

5、代理伺服器收到這個物件後,先複製在自己的本地儲存器中(留待下次用),然後再把這個物件放在HTTP響應報文中,通過已建立的TCP連線,返回給請求該物件的瀏覽器。

  • 在使用代理伺服器的情況下,由於有相當大一部分通訊量侷限在校園網內部,圖中2Mbit/s專線鏈路R1-->R2上的通訊量大大減少,因而減小了訪問網際網路的時延。

3、HTTP的報文結構

HTTP有兩類報文:請求報文響應報文

由於HTTP是面向文字的,因此在報文中的每一個欄位都是一些ASCII碼串,因而各個欄位的長度都是不確定的。

HTTP請求報文和響應報文都是由三個部分組成:開始行(請求報文中叫請求行、響應報文中叫狀態行)、首部行實體主體

請求報文的請求行的第一個欄位“方法”,常用的如下表所示:

HTTP請求報文:

HTTP響應報文:

響應報文的狀態行包括三項內容:HTTP的版本狀態碼以及解釋狀態碼的簡單短語

狀態碼都是三位數字的,分為5大類:

1、1xx 表示通知資訊,如請求收到了或者正在處理;

2、2xx 表示成功,如接受或知道了;

3、3xx 表示重定向,如要完成請求還必須採取進一步的行動;

4、4xx 表示客戶的差錯,如請求中有錯誤的語法或不能完成;

5、5xx 表示伺服器的差錯,如伺服器失效無法完成請求。

如下面三種常遇見的響應報文中的狀態行:

4、在伺服器上存放使用者的資訊

因為HTTP是無狀態的協議,所以伺服器識別不了使用者,但是某些場景又需要伺服器能夠識別出使用者,比如下面這個場景:

在網上購物時,一個顧客要購買多種物品。當他把選好的一件物品放入“購物車”後,他還要繼續瀏覽和選購其他商品。因此,伺服器需要記住使用者身份,使他接著選購的一些物品能夠放入同一個“購物車”中,這樣便於集中結賬。

要做到上面的場景的需求,需要在HTTP中使用Cookie,其在HTTP伺服器和客戶之間傳遞狀態資訊。

Cookie的工作過程:

當用戶A瀏覽某個使用Cookie的網站時,該網站的伺服器就為A產生一個唯一的識別碼,並以此作為索引在伺服器的後端資料庫中產生一個專案。接著在給A的HTTP響應報文中新增一個叫做Set-cookie的首部行。這裡的“首部欄位名”就是“Set-cookie”,而後面的“值”就是賦予該使用者的“識別碼”。例如這個首部行是這樣的:

Set-cookie:31d4d96e407aad42

當A收到這個響應時,其瀏覽器就在它管理的特定Cookie檔案中新增一行,其中包括這個伺服器的主機名和Set-cookie後面給出的識別碼。當A繼續瀏覽這個網站時,每傳送一個HTTP請求報文,其瀏覽器就會從其Cookie檔案中取出這個網站的識別碼,並收到HTTP請求報文的Cookie首部行中:

Cookie:31d4d96e407aad42

於是,這個網站就能跟蹤使用者31d4d96e407aad42在該網站的活動。需要注意的是,伺服器並不需要知道這個使用者的真實姓名以及其他的資訊。但伺服器能夠知道使用者31d4d96e407aad42在什麼時間訪問了哪些頁面,以及訪問這些頁面的順序。如果A是在網上購物,那麼這個伺服器可以為A維護一個所購物品的列表,使A在結束這次購物時可以一起付費。

4.4  全球資訊網文件

1、超文字標記語言HTML

要使任何一臺計算機都能顯示出任何一個全球資訊網伺服器上的頁面,就必須解決頁面製作的標準化問題。超文字標記語言HTML(HyperText  MarkUp  Language)就是一種製作全球資訊網頁面的標準語言,它消除了不同計算機之間資訊交流的障礙。

HTML利用很多“標籤”用於文件的排版。

需要注意的是僅當HTML文件是以.html或.htm為字尾時,瀏覽器才對這樣的HTML文件的各種標籤進行解釋。如果HTML文件是以.txt為字尾的,則HTML解釋程式就不對標籤進行解釋,而瀏覽器只能看見原來的文字檔案。

5  電子郵件

1  電子郵件概述

電子郵件把郵件傳送到收件人使用的郵件伺服器,並放在其中的收件人“郵箱”裡,收件人可在自己方便時上網到自己使用的郵件伺服器進行讀取。

傳送和接收一個郵件的幾個重要步驟:

1、發件人編寫好郵件內容。然後把郵件通過SMTP協議傳送給傳送方的郵件伺服器

2、SMTP伺服器收到使用者發來的郵件後,就把郵件臨時存放在郵件快取佇列中,等待發送到接收方的郵件伺服器中;

3、傳送方郵件伺服器SMTP客戶與接收方郵件伺服器的SMTP伺服器建立TCP連線,然後就把郵件快取佇列中的郵件依次傳送出去;

4、執行在接收方郵件伺服器中的SMTP伺服器程序收到郵件後,把郵件放入收件人使用者郵箱中,等待收件人進行讀取;

5、收件人在打算收信時,就執行計算機中的使用者代理,使用POP3或者IMAP協議讀取傳送給自己的郵件。

2  簡單郵件傳送協議SMTP

STMP(Simple  Mail  Transfer  Protocol)規定了兩個相互通訊的SMTP程序之間應該如何交換資訊。

SMTP規定了14條命令和21種應答資訊。下面介紹傳送和接收方的郵件伺服器之間的SMTP通訊的三個階段的主要命令和響應資訊。

1、連線建立

發件人的郵件傳送到傳送方郵件伺服器的郵件快取中後,郵件伺服器中的代理SMTP客戶每隔一定時間對郵件快取掃描一次。如發現有郵件,就使用SMTP的熟知埠25與接收方郵件伺服器的SMTP伺服器建立TCP連線。在連線建立後,接收方SMTP伺服器要發出“220  Service  ready”(服務就緒)。然後SMTP客戶向SMTP伺服器傳送HELLO命令,附上傳送方的主機名。SMTP伺服器若有能力接收郵件,則回答“250 OK”,表示已準備好接收。若SMTP伺服器不可用,則回答“421  Service not available”(服務不可用)。

注意:SMTP不使用中間郵件伺服器,TCP連線總是在傳送方和接收方這兩個郵件伺服器之間直接建立。

2、郵件傳送

郵件的傳送從MAIL命令開始。MAIL命令後面有發件人的地址。

下面跟著一個或者多個RCPT命令,取決於把同一個郵件傳送給一個或多個收件人。

RCPT命令的作用:先弄清楚接收方系統是否已做好接收郵件的準備,然後才傳送郵件。這樣做是為了避免浪費通訊資源,不至於傳送了很長的郵件以後才知道地址錯誤。

再下面就是DATA命令,表示要開始傳送郵件的內容了。

3、連線釋放

郵件傳送完畢後,SMTP客戶應傳送QUIT命令。SMTP伺服器返回的資訊是“221(服務關閉)”,表示SMTP同意釋放TCP連線。郵件傳送的全部過程即結束。

  • 需要說明的是:

SMTP傳送的郵件是明文,不利於保密。也沒有身份鑑別,所以造成很多垃圾郵件。

解決辦法:擴充的SMTP(Extened  SMTP),記為ESMTP。新增的功能有:客戶端的鑑別、伺服器接受二進位制報文、伺服器接受分塊傳送的大報文、傳送前先檢查報文的大小以、使用安全傳輸TLS以及使用國際化地址等。

  • SMTP有很多缺點,比如:不能傳送可執行檔案或其他二進位制物件、限於傳送7位ASCII碼、SMTP伺服器拒絕超過一段長度的郵件等等。為了解決以上問題,提出了通用網際網路郵件擴充MIME,它並沒有改變或取代SMTP,但增加了郵件主體的結構並定義了傳送非ASCII碼的編碼規則。

3  郵件讀取協議POP3和IMAP

郵局協議POP3是一個非常簡單、但功能有限的郵件讀取協議。它最大的特點就是隻要使用者從POP3伺服器讀取了郵件,POP3伺服器就把該郵件刪除。

網際報文存取協議IMAP(Internet  Message  Access  Protocol):使用者在自己的計算機上就可以操縱郵件伺服器的郵箱,就像在本地操縱一樣,因此IMAP是一個聯機協議。IMAP最大的好處就是使用者可以在不同的地方使用不同的計算機隨時上網閱讀和處理自己在郵件伺服器中的郵件。

強調一下:發件人的使用者代理向傳送郵件的伺服器傳送郵件,以及傳送郵件伺服器向接收方郵件伺服器傳送郵件,都使用SMTP協議。而POP3或IMAP則是使用者代理從接收方郵件伺服器上讀取郵件所使用的協議

4  基於全球資訊網的電子郵件

網易的163、126都是全球資訊網電子郵件,不管在什麼地方,只要能夠找到能上網的計算機,在瀏覽器中可以登陸個人郵箱系統進行郵件的收發。

6  動態主機配置協議

連線到網際網路的計算機的協議軟體需要配置四個專案:

1、IP地址;

2、子網掩碼;

3、預設路由器的IP地址;

4、域名伺服器的IP地址。

動態主機配置協議DHCP(Dynamic  Host  Configuration  Protocol),提供了一種機制,稱為動態主機配置協議,稱為即插即用連網。這種機制允許一臺計算機加入新的網路和獲取IP地址而不用手工參與。

需要IP地址的主機在啟動時就向DHCP伺服器廣播發送發現報文(DHCPDISCOVER:將目的IP地址全置1,即255.255.255.255,源IP地址全設為0),這時該主機就成了DHCP客戶。傳送廣播報文是因為現在還不知道DHCP伺服器在什麼地方,因此要發現DHCP伺服器的IP地址。.這樣,本網段的所有主機都能夠收到這個廣播包,但是隻有DHCP伺服器才能對此廣播包進行回答。DHCP伺服器先在其資料庫中查詢該計算機的配置資訊。若找到,則返回找到的資訊。若找不到,則從伺服器的IP地址池中取一個地址分配給該計算機。DHCP伺服器的回答報文叫做提供報文(DHCPOFFER),表示“提供”了IP地址等配置資訊。

以上是DHCP的簡單工作過程,詳細工作過程可看書296頁的案例。

需要說明幾點:

1、我們沒必要在每個網段上都設定一個DHCP伺服器,只需要在每一個網路中設定一個DHCP中繼代理(通常是一臺路由器),就可以實現跨網段獲取IP地址。DHCP中繼代理配置了DHCP伺服器的IP地址資訊。當DHCP中繼代理收到主機A以廣播形式傳送的發現報文後,就以單播方式向DHCP伺服器轉發此報文,並等待其回答。收到DHCP伺服器回答的提供報文後,DHCP中繼代理再把此提供報文發回給主機A。

2、DHCP伺服器分配給DHCP客戶的IP地址是臨時的,,因此DHCP客戶只能在一段有限的時間內使用這個分配到的IP地址。DHCP協議稱這段時間為租用期,這個數值由DHCP伺服器自己決定。當租用期過半,DHCP客戶還要傳送請求更新租用期。

7  P2P應用

P2P內容分發 BitTorrent

  • 話題
  1. P2P內容分發
  2. 不須要中心server,是一種去中心化的協議
  • 起源:

因為CDN須要中心server,所以誕生了P2P去中心化的內容分發網路

  • P2P
  1. P2P的目標就是去中心化實現內容分發
  2. 主要想法就是讓參與P2P的使用者互相幫助
  • P2P的挑戰
  1. 沒有server支援,全部的連線須要使用者主機自己組織。這就導致了一些問題。
  2. 每一個節點的能力有限
  3. 參與者可能是自私的,為什麼節點之間會相互幫助呢?
  4. 去中心化,節點之間怎樣找到對方呢?
  • 克服能力的限制

每一個節點都是client,同一時候也扮演著server的角色

  • 參與者可能是自私的
  1. 每一個節點都扮演著兩種角色,下載或者上傳
  2. 防止自私的方法就是:假設你給我資料,我也給你資料
  • 實現去中心化
  1. 節點必需要知道對方的地址是什麼
  2. 能夠通過DHT分散式雜湊表來實現
  3. DHT是全然去中心化、高效的分散式索引
  • BitTorrent
  1. 現在使用的基本的P2P系統
  2. 使用torrents來分發資料。每一個節點將檔案分割成非常多片段,然後將這些片段進行傳輸
  • BitTorrent協議
  1. 第一步:從torrent種子開始
  2. 第二步:聯絡tracker,將自己增加到列表中,而且獲取其它的使用者列表
  3. 使用DHT網路來更新節點列表
  4. 將自己的資料片段和別人的資料片段進行交易,對自己貢獻多的節點優先考慮
  5. 全部的節點都是同一時候下載/上傳資料
  6. 將檔案切割成非常小的片段來提高傳輸速度
  7. 孤立貢獻小的節點,鼓舞他作出很多其它貢獻
  8. DHT是全然去中心化的
  • P2P前景
  1. 是CDN的替代品
  2. P2P和DHT技術有了很多其它的應用,比方SKYPE  AMAZON
  3. 還有比特幣