2022-12-04 18:31:01 紀念一下博主的《漫談計算機網路》連載部落格 瀏覽量破500了!
今天更新完結篇!
面試答不上?計網很枯燥? 聽說你學習 計網 每次記了都會忘? 不妨抽時間和我一起多學學它? 深入淺出,用你的空閒時間來探索計算機網路的硬核知識!
?博主的上篇連載部落格《初識影像處理技術》
影像處理技術:數字影像分割 ------ 影像分割、邊界分割(邊緣檢測)、區域分割 - slowlydance2me - 部落格園 (cnblogs.com)
漫談計算機網路 連載的其他章節?:
1.漫談計算機網路:概述 ------ 從起源開始到分層協議結構,初識究竟什麼是計算機網路? - slowlydance2me - 部落格園 (cnblogs.com)
2.漫談計算機網路:物理層 ----- 雙絞線&光纖?,從最底層開始瞭解計算機網路 - slowlydance2me - 部落格園 (cnblogs.com)
3.漫談計算機網路:資料鏈路層 ----- 資料鏈路路在何方? --從點對點資料傳輸 到 "廣泛撒網,重點捕獲"的區域網 - slowlydance2me - 部落格園 (cnblogs.com)
4.漫談計算機網路:網路層 ------ 重點:IP協議與網際網路路由選擇協議 - slowlydance2me - 部落格園 (cnblogs.com)
5.漫談計算機網路: 運輸層 ------ 從UDP ->TCP , 從面向通訊->面向使用者,三次握手/四次揮手? - slowlydance2me - 部落格園 (cnblogs.com)
前言:
2022/11/27
眾所周知,計算機網路在程式設計師的學習以及面試中佔據十分重要的位置,同時它也是我們開啟網際網路世界的鑰匙?。
因此,從今天(11/27)開始更新《漫談計算機網路》一文,讀者們可以跟著博主一起深入淺出,瞭解計算機網路知識,學習計算機網路的應用。
博主仍在不斷學習進步中,在本文中對於計算機網路的理解與認識尚淺,如有錯誤之處煩請批評指正。
如有疑問歡迎評論區留言。
正文分割線:
今天更新!12/4
《漫談計算機網路》第六章:應用層
終於,我們來到了《漫談計算機網路》的最後一章,也是所有層次體系結構的最後一層————應用層
我們先來宏觀地看看什麼是應用層協議?
精確定義不同主機中的多個應用程式之間的通訊規則。
包括:
應用程式交換的報文型別,如請求報文和響應報文。
各種報文型別的語法,如報文中的各個欄位及其詳細描述。
欄位的語義,即包含在欄位中的資訊的含義。
程式何時、如何傳送報文,以及對報文進行響應的規則。
重點在這裡?
網際網路上使用者與主機通訊必須要知道對方的IP地址。IP地址太難記憶,怎麼辦?
來看看下面叭?
6.1 域名系統 DNS
6.1.1 域名系統概述
網際網路使用的命名系統。
用來把人們使用的機器名字(域名)轉換為 IP 地址。
為網際網路的各種網路應用提供了核心服務。
如圖:
域名採用層次樹狀結構的命名方法:www.myschool.edu。
DNS 是一個聯機分散式資料庫系統,採用客戶伺服器方式。
域名到 IP 地址的解析是由若干個域名伺服器程式共同完成。
域名伺服器程式在專設的結點上執行,執行該程式的機器稱為域名伺服器。
DNS 使用 UDP 通訊
6.1.2 網際網路的域名結構
命名方法:層次樹狀結構方法。
任何一個連線在網際網路上的主機或路由器,都有一個唯一的層次結構的名字,即域名 (domain name)。
域 (domain):
名字空間中一個可被管理的劃分。
可以劃分為子域,而子域還可繼續劃分為子域的子域,這樣就形成了頂級域、二級域、三級域,等等。
域名結構:層次結構。由標號 (label) 序列組成,各標號之間用點(.)隔開,各標號分別代表不同級別的域名。
全球頂級域名 TLD (Top Level Domain)
在國家頂級域名下注冊的二級域名均由該國家自行確定。
我國把二級域名劃分為“類別域名”和“行政區域名”兩大類。
網際網路的域名空間結構
域名樹的樹葉就是計算機的名字,它不能再繼續往下劃分子域了。
注意:網際網路的名字空間是按照機構的組織來劃分的,與物理的網路無關,與 IP 地址中的“子網”也沒有關係。
6.1.3 域名伺服器
實現域名系統使用分佈在各地的域名伺服器(DNS 伺服器)。
一個伺服器所負責管轄的(或有許可權的)範圍叫做區 (zone)。
各單位根據具體情況來劃分自己管轄範圍的區。但在一個區中的所有節點必須是能夠連通的。
每一個區設定相應的許可權域名伺服器,用來儲存該區中的所有主機的域名到 IP 地址的對映
DNS 伺服器的管轄範圍不是以“域”為單位,而是以“區”為單位。
區的不同劃分方法舉例
樹狀結構的 DNS 域名伺服器
每個域名伺服器都只對域名體系中的一部分進行管轄。
域名伺服器型別
根據所起的作用,分為四種型別:
1. 根域名伺服器
最高層次,最為重要。
所有根域名伺服器都知道所有的頂級域名伺服器的域名和 IP 地址。
不管是哪一個本地域名伺服器,若要對網際網路上任何一個域名進行解析,只要自己無法解析,就首先求助於根域名伺服器。
若所有的根域名伺服器都癱瘓了,整個網際網路中的 DNS 系統就無法
工作了。
根域名伺服器共有 13 套裝置
根域名伺服器共有 13 套裝置,構成 13 組根域名伺服器。
根域名伺服器總共只有 13 個不同 IP 地址的域名,但並非僅由13臺機器所組成。
根域名伺服器分佈在全世界。
為了提供更可靠的服務,在每一個地點的根域名伺服器往往由多臺機器組成。
根域名伺服器採用任播 (anycast) 技術,當DNS 客戶向某個根域名伺服器發出查詢報文時,路由器能找到離這個 DNS 客戶最近的一個根域名伺服器。
注意:
根域名伺服器並不直接把域名轉換成 IP 地址(根域名伺服器也沒有存放這種資訊),而是告訴本地域名伺服器下一步應當找哪一個頂級域名伺服器進行查詢。
2. 頂級域名伺服器
頂級域名伺服器(即 TLD 伺服器)負責管理在該頂級域名伺服器註冊的所有二級域名。
當收到 DNS 查詢請求時,就給出相應的回答(可能是最後的結果,也可能是下一步應當找的域名伺服器的 IP 地址)。
3. 許可權域名伺服器
負責一個區(zone)的域名伺服器。
當一個許可權域名伺服器還不能給出最後的查詢回答時,就會告訴發出查詢請求的 DNS 客戶,下一步應當找哪一個許可權域名伺服器。
4. 本地域名伺服器
非常重要。
當一個主機發出 DNS 查詢請求時,該查詢請求報文就傳送給本地域名伺服器。
每一個網際網路服務提供者 ISP 或一個大學,都可以擁有一個本地域名伺服器。
當所要查詢的主機也屬於同一個本地 ISP 時,該本地域名伺服器立即就能將所查詢的主機名轉換為它的 IP 地址,而不需要再去詢問其他的域名伺服器。
本地域名伺服器有時也稱為預設域名伺服器。
提高域名伺服器的可靠性
DNS 域名伺服器都把資料複製到幾個域名伺服器來儲存,其中的一個是主域名伺服器,其他的是輔助域名伺服器。
當主域名伺服器出故障時,輔助域名伺服器可以保證 DNS 的查詢工作不會中斷。
主域名伺服器定期把資料複製到輔助域名伺服器中,而更改資料只
能在主域名伺服器中進行,保證了資料的一致性。
域名的解析過程
迭代查詢
遞迴查詢(比較少用)
DNS查詢都需要向根域名伺服器傳送請求進行查詢,那麼根域名伺服器的負荷必然太大,而且查詢效率低下。那應該怎麼解決這個問題?
提高查詢效率的方法
快取記憶體
也稱為快取記憶體域名伺服器。
存放最近用過的名字以及從何處獲得名字對映資訊的記錄。
作用:大大減輕根域名伺服器的負荷,使 DNS 查詢請求和回答報文的數量大為減少。
域名伺服器應為每項內容設定計時器,並處理超過合理時間的項。
當許可權域名伺服器回答一個查詢請求時,在響應中指明繫結有效存在的時間值。增加此時間值可減少網路開銷,而減少此時間值可提高域名轉換的準確性。
重點在這?
6.2 檔案傳送協議
6.2.1 FTP 概述
檔案傳送協議 FTP (File Transfer Protocol) 是網際網路上使用得最廣泛的檔案傳送協議。
提供互動式的訪問,允許客戶指明檔案的型別與格式,並允許檔案具有存取許可權。
遮蔽了各計算機系統的細節,因而適合於在異構網路中任意計算機之間傳送檔案。
是檔案共享協議的一個大類。
檔案共享協議
檔案傳送協議:FTP, TFTP 等。
複製整個檔案。對檔案副本進行訪問。
若要存取一個檔案,就必須先獲得一個本地檔案副本。
若要修改檔案,只能對檔案副本進行修改,然後再將修改後的檔案副本傳回到原節 點。
聯機訪問 (on-line access) 協議:NFS 等。
允許同時對一個檔案進行存取。
遠地共享檔案訪問,如同對本地檔案的訪問一樣。
透明存取,不需要對該應用程式作明顯的改動。
由作業系統負責。
6.2.2 FTP 的基本工作原理
網路環境下複製檔案的複雜性:
計算機儲存資料的格式不同。
檔案的目錄結構和檔案命名的規定不同。
對於相同的檔案存取功能,作業系統使用的命令不同。
訪問控制方法不同。
FTP 特點
只提供檔案傳送的一些基本服務,它使用 TCP 可靠的運輸服務。
主要功能:減少或消除在不同作業系統下處理檔案的不相容性。
使用客戶伺服器方式。
一個 FTP 伺服器程式可同時為多個客戶程式提供服務。
FTP 的伺服器程式由兩大部分組成:
一個主程式,負責接受新的請求;
若干個從屬程式,負責處理單個請求。
FTP 主程式的工作步驟
1. 開啟熟知埠(埠號為 21),使客戶程式能夠連線上。
2. 等待客戶程式發出連線請求。
3. 啟動從屬程式來處理客戶程式發來的請求。從屬程式對客戶程式的請求處理完畢後即終止,但從屬程式在執行期間根據需要還可能建立其他一些子程式。
4. 回到等待狀態,繼續接受其他客戶程式發來的請求。主程式與從屬程式的處理是併發地進行。
FTP 客戶和伺服器之間的兩個從屬程式和兩個 TCP 連線
聯機訪問 (on-line access) 協議 NFS 採用的思路
FTP 並非對所有的資料傳輸都是最佳的:僅能訪問副本。
NFS 允許應用程式開啟一個遠地檔案,並能在該檔案的某一個特定的位置上開始讀寫資料。
NFS 可使使用者只複製一個大檔案中的一個很小的片段,而不需要複製整個大檔案。
NFS 在網路上傳送的只是少量的修改資料
6.2.3 簡單檔案傳送協議 TFTP
TFTP (Trivial File Transfer Protocol) 是一個很小且易於實現的檔案傳送協議。
使用客戶伺服器方式和使用 UDP 資料包,因此 TFTP 需要有自己的差錯改正措施。
只支援檔案傳輸,不支援互動。
沒有龐大的命令集,沒有列目錄的功能,也不能對使用者進行身份鑑別。
優點:(1)可用於 UDP 環境;(2)程式碼所佔的記憶體較小。
TFTP 的主要特點
每次傳送的資料包文中有 512 位元組的資料,但最後一次可不足 512位元組。
資料包文按序編號,從 1 開始。
支援 ASCII 碼或二進位制傳送。
可對檔案進行讀或寫。
使用很簡單的首部。
TFTP 的工作很像停止等待協議
傳送完一個檔案塊後就等待對方的確認,確認時應指明所確認的塊編號。
發完資料後在規定時間內收不到確認就要重發資料 PDU。
傳送確認 PDU 的一方若在規定時間內未收到下一個檔案塊,需重發確認 PDU,保證檔案的傳送不致因某一個資料包的丟失而告失敗。
TFTP 的工作過程
開始工作時,TFTP 客戶程式傳送一個讀請求或寫請求報文給 TFTP伺服器程式,其 UDP 熟知埠號碼為 69。
TFTP 伺服器程式選擇一個新的埠和 TFTP 客戶程式進行通訊。
若檔案長度恰好為 512 位元組的整數倍,則在檔案傳送完畢後,還必須在最後傳送一個只含首部而無資料的資料包文。
若檔案長度不是 512 位元組的整數倍,則最後傳送資料包文的資料欄位一定不滿 512 位元組,作為檔案結束的標誌。
6.3 遠端終端協議 TELNET
是一個簡單的遠端終端協議,是網際網路的正式標準。
允許使用者在其所在地透過 TCP 連線註冊(即登入)到遠地的另一個主機上(使用主機名或 IP 地址)。
能將使用者的擊鍵傳到遠地主機,同時也能將遠地主機的輸出透過TCP 連線返回到使用者螢幕。
服務是透明的。
又稱為終端模擬協議。
TELNET 使用客戶 - 伺服器方式
在本地系統執行 TELNET 客戶程式,而在遠地主機則執行 TELNET伺服器程式。
伺服器中的主程式等待新的請求,產生從屬程式來處理每一個連線。
TELNET 使用網路虛擬終端 NVT 格式
TELNET 的選項協商 (Option Negotiation) 使客戶和伺服器可商定使用更多的終端功能,協商的雙方是平等的。
NVT (Network Virtual Terminal )格式
重點?
6.4 全球資訊網 WWW
6.4.1 全球資訊網概述
全球資訊網 WWW (World Wide Web) 並非某種特殊的計算機網路。
全球資訊網是一個大規模的、聯機式的資訊儲藏所。
全球資訊網用連結的方法能非常方便地從網際網路上的一個站點訪問另一個站點,從而主動地按需獲取豐富的資訊。
這種訪問方式稱為“連結” 。
全球資訊網是分散式超媒體 (hypermedia) 系統
是超文字 (hypertext) 系統的擴充。
超文字:由多個資訊源連結成。是全球資訊網的基礎。
超媒體與超文字的區別:文件內容不同。
超文字文件僅包含文字資訊。
超媒體文件還包含其他資訊,如圖形、影像、聲音、動畫,甚至活動影片影像等。
分散式系統
資訊分佈在整個網際網路上。每臺主機上的文件都獨立進行管理。
全球資訊網的工作方式
以客戶伺服器方式工作。
客戶程式:瀏覽器。
伺服器程式:在全球資訊網文件所駐留的主機上執行。這個計算機也稱為全球資訊網伺服器。
客戶程式向伺服器程式發出請求,伺服器程式向客戶程式送回客戶所要的全球資訊網文件。
在一個客戶程式主視窗上顯示出的全球資訊網文件稱為頁面 (page)。
全球資訊網必須解決的問題
(1) 怎樣標誌分佈在整個網際網路上的全球資訊網文件?
使用統一資源定位符 URL (Uniform Resource Locator) 。
使每一個文件在整個網際網路的範圍內具有唯一的識別符號 URL。
(2) 用什麼協議來實現全球資訊網上的各種連結?
使用超文字傳送協議 HTTP (HyperText Transfer Protocol)。
HTTP 是一個應用層協議,使用 TCP 連線進行可靠的傳送。
(3) 怎樣使不同作者創作的不同風格的全球資訊網文件都能在網際網路上的各種主機上顯示出來,同時使使用者清楚地知道在什麼地方存在著連結?
使用超文字標記語言 HTML (HyperText Markup Language) 。
(4) 怎樣使使用者能夠很方便地找到所需的資訊?
使用各種的搜尋工具(即搜尋引擎)。
6.4.2 統一資源定位符 URL
是對網際網路上資源的位置和訪問方法的一種簡潔表示。
給資源的位置提供一種抽象的識別方法,並用這種方法給資源定位。
實際上就是在網際網路上的資源的地址。
顯然,網際網路上的所有資源,都有一個唯一確定的URL。
資源:指在網際網路上可以被訪問的任何物件,包括檔案目錄、檔案、文件、影像、聲音等,以及與網際網路相連的任何形式的資料。
URL 相當於一個檔名在網路範圍的擴充套件。因此,URL 是與網際網路相連的機器上的任何可訪問物件的一個指標。
1. URL 的格式
l 由以冒號(:)隔開的兩大部分組成,對字元大寫或小寫沒有要求。
l 一般形式:
6.4.3 超文字傳送協議 HTTP
HTTP 是面向事務的 (transaction-oriented) 應用層協議。
使用 TCP 連線進行可靠的傳送。
定義了瀏覽器與全球資訊網伺服器通訊的格式和規則。
是全球資訊網上能夠可靠地交換檔案(包括文字、聲音、影像等各種多媒體檔案)的重要基礎。
HTTP 不僅傳送完成超文字跳轉所必需的資訊,而且也傳送任何可從網際網路上得到的資訊,如文字、超文字、聲音和影像等。
1. HTTP 的操作過程
使用者瀏覽頁面的兩種方法
1. 在瀏覽器的地址視窗中鍵入所要找的頁面的 URL。
2. 在某一個頁面中用滑鼠點選一個可選部分,這時瀏覽器會自動在網際網路上找到所要連結的頁面。
HTTP 的主要特點
HTTP 使用了面向連線的 TCP 作為運輸層協議,保證了資料的可靠傳輸。
HTTP 協議本身也是無連線的。
HTTP 是無狀態的 (stateless),簡化了伺服器的設計,使伺服器更容易支援大量併發的 HTTP 請求。
請求一個全球資訊網文件所需的時間
協議 HTTP/1.0 的主要缺點
l 每請求一個文件就要有兩倍 RTT 的開銷。
l 客戶和伺服器每一次建立新的 TCP 連線都要分配快取和變數。
l 這種非持續連線使伺服器的負擔很重。
改進: 協議 HTTP/1.1 使用持續連線
持續連線(persistent connection):伺服器在傳送響應後仍然在一段時間內保持這條連線(不釋放),使同一個客戶(瀏覽器)和該伺服器可以繼續在這條連線上傳送後續的 HTTP 請求報文和響應報文。
只要文件都在同一個伺服器上,就可以繼續使用該 TCP 連線。
兩種工作方式:
非流水線方式 (without pipelining)
流水線方式 (with pipelining)。
改進: 協議 HTTP/2
是協議 HTTP/1.1 的升級版本。
1. 伺服器可以並行發回響應(使用同一個 TCP 連線)。
2. 允許客戶複用 TCP 連線進行多個請求。
3. 把所有的報文都劃分為許多較小的二進位制編碼的幀,並採用了新的壓縮演算法,不傳送重複的首部欄位,大大減小了首部的開銷,提高了傳輸效率。
4. 向後相容。
代理伺服器
代理伺服器 (proxy server) 又稱為全球資訊網快取記憶體 (Web cache),它代表瀏覽器發出 HTTP 請求。
使用快取記憶體可減少訪問網際網路伺服器的時延。
不使用快取記憶體的情況
使用快取記憶體的情況
HTTP 的報文結構
兩類報文:
請求報文:從客戶向伺服器的請求。
響應報文:從伺服器到客戶的回答。
由於 HTTP 是面向正文的 (text-oriented),因此報文中每一個欄位的值都是一些 ASCII 碼串,每個欄位的長度都是不確定的。
三個組成部分:
開始行:用於區分是請求報文還是響應報文。
首部行:說明瀏覽器、伺服器或報文主體的一些資訊。可以有多行,也可以不使用。
實體主體:請求報文中一般不用,響應報文中也可能沒有該欄位。
HTTP 的報文結構(請求報文)
HTTP 請求報文的一些方法
HTTP 請求報文舉例
HTTP 的報文結構(響應報文)
狀態碼
在伺服器上存放使用者的資訊
全球資訊網使用 Cookie 跟蹤在 HTTP 伺服器和客戶之間傳遞的狀態資訊。
6.4.4 全球資訊網的文件
在一個客戶程式主視窗上顯示出的全球資訊網文件稱為頁面 (page)。
頁面製作的標準語言:HTML。
分為:
靜態全球資訊網文件。內容不會改變。簡單。
動態全球資訊網文件。文件的內容由應用程式動態建立。
活動全球資訊網文件。由瀏覽器端改變文件的內容。
超文字標記語言 HTML
超文字標記語言 HTML (HyperText Markup Language) 是一種製作全球資訊網頁面的標準語言,它消除了不同計算機之間資訊交流的障礙,是全球資訊網的重要基礎 [RFC 2854]。
最新 HTML 5.0 增加了<audio>和<video>兩個標籤,實現對多媒體中的音訊、影片使用的支援,增加了能夠在移動裝置上支援多媒體功能
注意:HTML 不是應用層的協議,它只是全球資訊網瀏覽器使用的一種語言。
HTML 定義了許多用於排版的命令(即標籤)。
HTML 把各種標籤嵌入到全球資訊網的頁面中,構成了所謂的 HTML文件。
HTML 文件是一種可以用任何文字編輯器建立的 ASCII 碼檔案。
HTML 文件的字尾:.html 或 .htm。
HTML 文件中標籤的用法
XML
可擴充套件標記語言 XML (Extensible Markup Language) 和HTML 很相似。
設計宗旨是:傳輸資料,而不是顯示資料。
特點和優點:
可用來標記資料、定義資料型別;
允許使用者對自己的標記語言進行自定義,並且是無限制的;
簡單,與平臺無關;
將使用者介面與結構化資料分隔開來;
XHTML
可擴充套件超文字標記語言 XHTML (Extensible HTML) 與 HTML4.01 幾乎相同,是更嚴格的 HTML 版本。
作為一種 XML 應用被重新定義的 HTML,將逐漸取代 HTML。
CSS
層疊樣式表 CSS (Cascading Style Sheets) 是一種樣式表語言,用於為 HTML 文件定義佈局。
CSS 與 HTML 的區別:HTML 用於結構化內容,而 CSS 則用於格式化結構化的內容。
例如:精確規定在瀏覽器上顯示的字型、顏色、邊距、高度、寬度、背景影像等。
動態全球資訊網文件
靜態文件:該文件創作完畢後就存放在全球資訊網伺服器中,在被使用者瀏覽的過程中,內容不會改變。
動態文件:文件的內容是在瀏覽器訪問全球資訊網伺服器時才由應用程式動態建立。
動態文件和靜態文件之間的主要差別體現在伺服器端:文件內容的生成方法不同。從瀏覽器的角度看,這兩種文件並沒有區別。
全球資訊網伺服器功能的擴充
(1) 增加一個應用程式:處理瀏覽器發來的資料,並建立動態文件。
(2) 增加一個機制:使全球資訊網伺服器把瀏覽器發來的資料傳送給這個應用程式,然後全球資訊網伺服器能夠解釋這個應用程式的輸出,並向瀏覽器返回 HTML 文件。
CGI
通用閘道器介面 CGI (Common Gateway Interface) :定義動態文件應如何建立,輸入資料應如何提供給應用程式,以及輸出結果應如何使用的一種標準。
通用:CGI 標準所定義的規則對其他任何語言都是通用的。
閘道器:CGI 程式的作用像閘道器。
介面:有一些已定義好的變數和呼叫等可供其他 CGI 程式使用。
CGI 閘道器程式
正式名字:CGI 指令碼 (script)。
指令碼:指的是一個程式,它被另一個程式(解釋程式)而不是計算機的處理機來解釋或執行。
指令碼語言 (script language):如 Perl, JavaScript,Tcl/Tk 等。也可用一些常用的程式語言寫出,如 C,C++等。
指令碼執行起來要比一般的編譯程式要慢。
指令碼不一定是一個獨立的程式,可以是一個動態裝入的庫,甚至是伺服器的一個子程式。
活動全球資訊網文件
活動文件 (active document) 技術:把螢幕連續更新的工作轉移給瀏覽器端。
每當瀏覽器請求一個活動文件時,伺服器就返回一段程式副本在瀏覽器端執行。
活動文件程式可與使用者直接互動,並可連續地改變螢幕的顯示。
由於活動文件技術不需要伺服器的連續更新傳送,對網路頻寬的要求也不會太高。
用 Java 語言建立活動文件
Java 語言是一項用於建立和執行活動文件的技術。
在 Java 技術中使用小應用程式 (applet) 來描述活動文件程式。
使用者從全球資訊網伺服器下載嵌入了 applet 的 HTML 文件後,可在瀏覽器的螢幕上點選某個影像,就可看到動畫效果,或在下拉式選單中點選某個專案,就可看到計算結果。
ava 技術是活動文件技術的一部分。
6.4.5 全球資訊網的資訊檢索系統
使使用者能夠很方便地找到所需的資訊。
在全球資訊網中用來進行搜尋的程式叫做搜尋引擎 (search engine)。
全文檢索搜尋和分類目錄搜尋
一些著名的搜尋引擎
垂直搜尋引擎
垂直搜尋引擎 (Vertical Search Engine) :
針對某一特定領域、特定人群或某一特定需求提供搜尋服務。
也是提供關鍵字來進行搜尋,但被放到一個行業知識的上下文中,返回的結果更傾向於資訊、訊息、條目等。
目前熱門的垂直搜尋行業有:購物、旅遊、汽車、求職、房產、交友等。
元搜尋引擎
元搜尋引擎 (Meta Search Engine) :
把使用者提交的檢索請求傳送到多個獨立的搜尋引擎上去搜尋,並把檢索結果集中統一處理,以統一的格式提供給使用者,因此是搜尋引擎之上的搜尋引擎。
主要精力放在提高搜尋速度、智慧化處理搜尋結果、個性化搜尋功能的設定和使用者檢索介面的友好性上。
其查全率和查準率都比較高。
Google 搜尋技術的特點
核心技術:網頁排名(PageRank)
對搜尋結果按重要性排序。
對連結的數目進行加權統計。來自重要網站的連結,其權重較大。
進行超文字匹配分析,確定哪些網頁與正在執行的特定搜尋相關。
在綜合考慮整體重要性以及與特定查詢的相關性之後,Google就把最相關、最可靠的搜尋結果放在首位。
6.4.6 部落格和微博
6.4.7 社交網站
6.5 電子郵件
6.5.1 電子郵件概述
電子郵件 (e-mail):指使用電子裝置交換的郵件及其方法。
優點:使用方便,傳遞迅速,費用低廉,可以傳送多種型別的資訊(包括:文字資訊,聲音和影像等)。
重要標準:
簡單郵件傳送協議:SMTP
網際網路文字報文格式
通用網際網路郵件擴充 MIME
郵件讀取協議:POP3 和 IMAP
電子郵件系統的組成:三個主要構件
使用者代理 UA (User Agent)
郵件伺服器 (Mail Server)
郵件傳送和讀取協議
傳送和接收電子郵件的重要步驟
電子郵件的組成
電子郵件由信封 (envelope) 和內容 (content) 兩部分組成。
電子郵件的傳輸程式根據郵件信封上的資訊來傳送郵件。
使用者在從自己的郵箱中讀取郵件時才能見到郵件的內容。
電子郵件地址的格式
6.5.2 簡單郵件傳送協議 SMTP
SMTP 通訊的三個階段
1. 連線建立:
連線是在傳送主機的 SMTP 客戶和接收主機的 SMTP伺服器之間建立的。SMTP 不使用中間的郵件伺服器。
2. 郵件傳送
3. 連線釋放:
郵件傳送完畢後,SMTP 應釋放 TCP 連線。
6.5.3 電子郵件的資訊格式
6.5.4 郵件讀取協議 POP3 和 IMAP
兩個常用的郵件讀取協議:
1. POP3:郵局協議 (Post Office Protocol) 第3個版本
2. IMAP:網際報文存取協議 (Internet Message Access Protocol)
IMAP 的特點
連線後只下載郵件首部(部分下載)。
使用者直接在 IMAP 伺服器上建立和管理資料夾。
使用者可以搜尋郵件內容。
使用者可以在不同的地方使用不同的計算機隨時上網閱讀和處理自己的郵件。
允許收信人只讀取郵件中的某一個部分。
缺點:要想查閱郵件,必須先聯網。
IMAP 與 POP3 比較
6.5.5 基於全球資訊網的電子郵件
使用者代理 (UA) 的缺點:
必須在計算機中安裝使用者代理軟體。
收發郵件不方便。
全球資訊網電子郵件優點:
不需要在計算機中再安裝使用者代理軟體。
計算機能聯網,就能非常方便地收發電子郵件。
介面非常友好。
6.5.6 通用網際網路郵件擴充 MIME
SMTP 缺點:
不能傳送可執行檔案或其他的二進位制物件。
限於傳送 7 位的 ASCII 碼,無法傳送非 ASCII 編碼的資訊。
伺服器會拒絕超過一定長度的郵件。
某些 SMTP 的實現並沒有完全按照 [RFC 821] 的 SMTP 標準。
通用網際網路郵件擴充 MIME 並沒有改動 SMTP 或取代它。
意圖:繼續使用目前的 [RFC 822] 格式,但增加了郵件主體的結構,並定義了傳送非 ASCII 碼的編碼規則
MIME 和 SMTP 的關係
MIME 主要包括三個部分
5 個新的郵件首部欄位。
定義了許多郵件內容的格式,對多媒體電子郵件的表示方法進行了標準化。
定義了傳送編碼,可對任何內容格式進行轉換,而不會被郵件系統改變。
MIME內容型別
Multipart 很有用,使郵件增加了相當大的靈活性
MIME 舉例
重點?
6.6 動態主機配置協議 DHCP
在協議軟體中,給協議引數賦值的動作叫做協議配置。
一個協議軟體在使用之前必須是已正確配置的。
具體的配置資訊取決於協議棧。
連線到網際網路的計算機的協議軟體需要正確配置的引數包括:
1. IP 地址
2. 子網掩碼
3. 預設路由器的 IP 地址
4. 域名伺服器的 IP 地址
動態主機配置協議 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用連網 (plug-and-play networking) 的機制,允許一臺計算機加入網路和獲取 IP 地址,而不用手工配置。
DHCP 給執行伺服器軟體、且位置固定的計算機指派一個永久地址,給執行客戶端軟體的計算機分配一個臨時地址。
需要 IP 地址的主機在啟動時就向 DHCP 伺服器廣播傳送發現報文(DHCPDISCOVER),這時該主機就成為 DHCP 客戶。
本地網路上所有主機都能收到此廣播報文,但只有 DHCP 伺服器才回答此廣播報文。
DHCP 伺服器先在其資料庫中查詢該計算機的配置資訊。若找到,則返回找到的資訊。若找不到,則從伺服器的 IP 地址池 (addresspool) 中取一個地址分配給該計算機。DHCP伺服器的回答報文叫做提供報文(DHCPOFFER)
DHCP 工作方式
DHCP 中繼代理 (relay agent)
問題:每個網路上都需要有 DHCP 伺服器嗎?
答案:不需要,因為會使 DHCP 伺服器的數量太多。
問題:若沒有 DHCP 伺服器,如何自動獲得地址?
解決:每一個網路至少有一個 DHCP 中繼代理,它配置了 DHCP伺服器的 IP 地址資訊。
租用期 (lease period)
DHCP 伺服器分配給 DHCP 客戶的 IP 地址的臨時的,因此 DHCP客戶只能在一段有限的時間內使用這個分配到的 IP 地址。DHCP 協議稱這段時間為租用期。
租用期的數值應由 DHCP 伺服器自己決定。
DHCP 客戶也可在自己傳送的報文中(例如,發現報文)提出對租用期的要求。
DHCP 協議的工作過程
6.7 簡單網路管理協議 SNMP
6.7.1 網路管理的基本概念
網路管理包括對硬體、軟體和人力的使用、綜合與協調,以便對網路資源進行監視、測試、配置、分析、評價和控制,這樣就能以合理的價格滿足網路的一些需求,如實時執行效能,服務質量等。
網路管理常簡稱為網管。
網路管理的五大功能
故障管理:故障檢測、隔離和糾正。
配置管理:初始化網路、並配置網路。
計費管理:記錄網路資源的使用。
效能管理:估價系統資源的執行狀況及通訊效率等。
網路安全管理:對授權機制、訪問控制、加密和加密關鍵字的管理。
網路管理的一般模型
網路管理模型中的主要構件
管理站也常稱為網路執行中心 NOC (Network Operations Center),是網路管理系統的核心。
管理程式是管理站中的關鍵構件,在執行時就成為管理程式。
管理站(硬體)或管理程式(軟體)都可稱為管理者(manager)。Manager 不是指人,而是指機器或軟體。
網路管理員 (administrator) 指的是負責網路管理的人員。
大型網路往往實行多級管理,因而有多個管理者,而一個管理者一般只管理本地網路的裝置。
被管物件 (Managed Object)
網路的每一個被管裝置(包括裝置中的軟體)中可能有多個被管物件。
被管裝置有時可稱為網路元素或網元。
在被管裝置中也會有一些不能被管的物件。
代理 (agent)
在每一個被管裝置中都要執行一個程式,以便和管理站中的管理程式進行通訊。
這些執行著的程式叫做網路管理代理程式,或簡稱為代理。
代理程式在管理程式的命令和控制下在被管裝置上採取本地的行動。
網路管理協議
網路管理協議簡稱為網管協議。
網路管理協議是管理程式和代理程式之間進行通訊的規則。
網路管理員利用網路管理協議,透過管理站對網路中的被管裝置進行管理。
注意:網管協議本身不管理網路。
簡單網路管理協議 SNMP
簡單網路管理協議 SNMP (Simple Network Management Protocol) 中的管理程式和代理程式按客戶伺服器方式工作。
管理程式執行 SNMP 客戶程式,向某個代理程式發出請求 (或命令)。
代理程式執行 SNMP 伺服器程式,返回響應 (或執行某個動作)。
在網管系統中,往往是一個(或少數幾個)客戶程式與很多的伺服器程式進行互動
網路管理的基本原理
若要管理某個物件,就必然會給該物件新增一些軟體或硬體,但這種“新增”必須對原有物件的影響儘量小些。
SNMP 的基本功能
最重要的指導思想:儘可能簡單。
基本功能:
1. 監視網路效能
2. 檢測分析網路差錯
3. 配置網路裝置等。
SNMP 的管理站和委託代理
整個系統必須有一個管理站。
若網路元素使用的不是 SNMP 而是另一種網路管理協議,SNMP 協議就無法控制該網路元素。這時可使用委託代理 (proxy agent)。
委託代理能提供協議轉換和過濾操作等功能,對被管物件進行管理
SNMP 網路管理組成
SNMP 的網路管理由三個部分組成:
1. SNMP 本身
SNMP 定義了管理站和代理之間所交換的分組格式。
所交換的分組包含各代理中的物件(變數)名及其狀態(值)。
SNMP 負責讀取和改變這些數值。
2. 管理資訊結構 SMI (Structure of Management Information)
SMI 定義了命名物件和定義物件型別(包括範圍和長度)的通用規則,以及把物件和物件的值進行編碼的規則,以確保網路管理資料的語法和語義的無二義性。
但從 SMI 的名稱並不能看出它的功能。
SMI 並不定義一個實體應管理的物件數目,也不定義被管物件名以及物件名及其值之間的關聯。
3. 管理資訊庫 MIB (Management Information Base)。
MIB 在被管理的實體中建立了命名物件,並規定了其型別。
管理程式使用 MIB 中的資訊,對網路進行管理。
6.7.2 管理資訊結構 SMI
SMI 的功能:
1. 被管物件應怎樣命名;
2. 用來儲存被管物件的資料型別有哪些種;
3. 在網路上傳送的管理資料應如何編碼。
SMI 規定:所有被管物件必須在命名樹上
SMI 使用 ASN.1
SMI 標準指明:所有的 MIB 變數必須使用抽象語法記法 1 (ASN.1) 來定義。
SMI 既是 ASN.1 的子集,又是 ASN.1 的超集。
ASN.1 的記法很嚴格,使得資料的含義不存在任何可能的二義性
SMI 資料型別
ASN.1 部分資料型別
基本編碼規則 BER
ISO 在制訂 ASN.1 語言的同時也為它定義了一種標準的編碼方案,即基本編碼規則 BER (Basic Encoding Rule)。
BER 指明瞭每種資料型別中每個資料的值的表示。
SMI 使用 ASN.1 制定的 BER 進行資料的編碼。
傳送端用 BER 編碼,可將用 ASN.1 所表述的報文轉換成唯一的位元序列。
接收端用 BER 進行解碼,得到該位元序列所表示的 ASN.1 報文。
用 TLV 方法進行編碼
TLV 中的 T 欄位定義資料的型別
TLV 中的 L 欄位定義 V 欄位的長度
舉例:
6.7.3 管理資訊庫 MIB
被管物件必須維持可供管理程式讀寫的若干控制和狀態資訊。這些資訊總稱為管理資訊庫 MIB (Management Information Base) 。
管理程式使用 MIB 中這些資訊的值對網路進行管理(如讀取或重新設定這些值)。
只有在 MIB 中的物件才是 SNMP 所能夠管理的。
6.7.4 SNMP 的協議資料單元和報文
SNMP 的操作只有兩種基本的管理功能:
1. “讀”操作,用 get 報文來檢測各被管物件的狀況;
2. “寫”操作,用 set 報文來改變各被管物件的狀況。
SNMP 的這些功能透過探詢操作來實現。
SNMP 的探詢操作
SNMP 管理程式定時向被管理裝置週期性地傳送探詢資訊。
好處:
1. 可使系統相對簡單。
2. 能限制透過網路所產生的管理資訊的通訊量。
缺點:
1. 不夠靈活,而且所能管理的裝置數目不能太多。
2. 開銷也較大。
陷阱 (trap)
SNMP 允許不經過詢問就能傳送某些資訊。這種資訊稱為陷阱,表示它能夠捕捉“事件” 。
當被管物件的代理檢測到有事件發生時,就檢查其門限值。代理只向管理程式報告達到某些門限值的事件(即過濾)。
過濾的好處:
1. 僅在嚴重事件發生時才傳送陷阱;
2. 陷阱資訊很簡單且所需位元組數很少。
使用探詢(至少是週期性地)以維持對網路資源的實時監視。
同時也採用陷阱機制報告特殊事件,使得 SNMP 成為一種有效的網路管理協議。
SNMP 使用無連線的 UDP
執行代理程式的伺服器端用 UDP 熟知埠 161 接收 get 或 set 報文,傳送響應報文。與熟知埠通訊的客戶端使用臨時埠。
執行管理程式的客戶端則使用 UDP 熟知埠 162 來接收來自各代理的 trap 報文。
前面我們討論了網際網路使用的多種應用層協議,但是很多應用程式又不能直接使用標準化的應用協議,那我們如何使用這些應用層協議從而連線網際網路???
6.8 應用程式跨越網路的通訊
6.8.1 系統呼叫和應用程式設計介面
大多數作業系統使用系統呼叫 (system call ) 的機制在應用程式和作業系統之間傳遞控制權。
對程式設計師來說,每一個系統呼叫和一般程式設計中的函式呼叫非常相似,只是系統呼叫是將控制權傳遞給了作業系統。
應用程式設計介面 API
系統呼叫介面實際上就是應用程式的控制權和作業系統的控制權進行轉換的一個介面。
使用系統呼叫之前要編寫一些程式,特別是需要設定系統呼叫中的許多引數,因此這種系統呼叫介面又稱為應用程式設計介面 API(Application Programming Interface)
幾種應用程式設計介面 API
Berkeley UNIX 作業系統定義了一種 API,它又稱為套接字介面 (socket interface)。
微軟公司在其作業系統中採用了套接字介面 API,形成了一個稍有不同的 API,並稱之為 Windows Socket。
AT&T 為其 UNIX 系統 V 定義了一種 API,簡寫為 TLI (Transport Layer Interface)。
套接字的作用
當應用程式需要使用網路進行通訊時就發出系統呼叫,請求作業系統為其建立套接字,以便把網路通訊所需要的系統資源分配給該應用程式。
作業系統為這些資源的總和用一個套接字描述符的號碼來表示。
應用程式所進行的網路操作都必須使用這個套接字描述符。
通訊完畢後,應用程式透過一個關閉套接字的系統呼叫通知作業系統回收與該套接字描述符相關的所有資源。
呼叫 socket 建立套接字
6.8.2 幾種常用的系統呼叫
當應用程式需要使用網路進行通訊時,就發出系統呼叫。
使用 TCP/IP 應用程式設計介面 API,就可以編寫基於網際網路的網路應用程式了。
呼叫 API 時,使用者可以使用 TCP 服務,也可以使用 UDP 等其他服務。
TCP 提供面向連線的服務。
使用 TCP 服務需要經歷 3 個階段:
1. 連線建立階段
併發方式工作的伺服器
2. 資料傳送階段
3. 連線釋放階段
6.9 P2P 應用
6.9.1 具有集中目錄伺服器的 P2P 工作方式
Napster 最早使用 P2P 技術,提供免費下載 MP3 音樂。
Napster 將所有音樂檔案的索引資訊都集中存放在 Napster 目錄伺服器中。
使用者只要查詢目錄伺服器,就可知道應從何處下載所要的 MP3檔案。
使用者要及時向 Napster 的目錄伺服器報告自己存有的音樂檔案。
Napster 的檔案傳輸是分散的,檔案的定位則是集中的。
Napster 的工作過程
集中式目錄伺服器的缺點
6.9.2 具有全分散式結構的 P2P 檔案共享程式
Gnutella 是第二代 P2P 檔案共享程式,採用全分佈方法定位內容的 P2P 檔案共享應用程式。
Gnutella 與 Napster 最大的區別:不使用集中式的目錄伺服器,而是使用洪泛法在大量 Gnutella 使用者之間進行查詢。
為了不使查詢的通訊量過大,Gnutella 設計了一種有限範圍的洪泛查詢,減少了傾注到網際網路的查詢流量,但也影響到查詢定位的準確性。
第三代 P2P 檔案共享程式採用分散定位和分散傳輸技術。例如KaZaA,電騾 eMule,位元洪流 BT (Bit Torrent) 等。
BT 協議
問題:哪些檔案塊是首先需要向其相鄰對等方請求的?
方法:A 使用最稀有的優先 (rarest first) 的技術,首先向其相鄰對等方請求對應的檔案塊。
稀有:如果 A 所缺少的檔案塊在相鄰對等方中的副本很少,那就是“很稀有的” 。
問題:在很多向 A 請求檔案塊的相鄰對等方中,A 應當向哪些相鄰對等方傳送所請求的檔案塊?
方法:凡當前以最高資料率向 A 傳送檔案塊的某相鄰對等方,A 就優先把所請求的檔案塊傳送給該相鄰對等方。
6.9.3 P2P 檔案分發的分析
一些概念:
從網際網路傳送資料到主機,叫做下載 (download),
從主機向網際網路傳送,則稱為上傳 (upload) 或上載。
6.9.4 在 P2P 對等方中搜尋物件
Napster 在一個集中式目錄伺服器中構建查詢資料庫,簡單,但效能上有瓶頸。
Gnutella 是一種採用全分佈方法定位內容的 P2P 檔案共享應用程式,它解決了集中式目錄伺服器所造成的瓶頸問題。但 Gnutella 是在非結構化的覆蓋網路中採用查詢洪泛的方法進行查詢,因此查詢
的效率較低
現在廣泛使用的索引和查詢技術叫做分散式雜湊表 DHT(Distributed Hash Table)。
DHT 也可譯為分散式雜湊表,由大量對等方共同維護。
廣泛使用的 Chord 演算法是美國麻省理工大學於 2001 年提出的
基於 DHT 的 Chord 環
分散式雜湊表 DHT 利用雜湊函式,把資源名 K 及其存放的結點
IP 地址 N 都分別對映為資源名識別符號 KID 和結點識別符號 NID。
Chord 把結點按識別符號數值從小到大沿順時針排列成一個環形覆蓋網路。
每個資源由 Chord 環上與其識別符號值最接近的下一個結點提供服務。