1. 程式人生 > 實用技巧 >圖解HTTP《一》:瞭解Web及網路基礎

圖解HTTP《一》:瞭解Web及網路基礎

使用HTTP協議訪問Web:

當在網頁瀏覽器(Web browser)的位址列中輸入URL時,Web頁面是如何呈現的呢?根據Web瀏覽器位址列中指定的URL,Web瀏覽器從Web伺服器端獲取檔案資源等資訊,從而顯示出Web頁面。

像這種通過傳送請求獲取伺服器端資源的Web瀏覽器等,都可稱為客戶端(client)。

Web使用一種名為HTTP(HyperText Transfer Protocol,超文字傳輸協議)的協議作為規範,完成從客戶端到伺服器端等一系列運作流程。可以說,Web是建立在HTTP協議上通訊的。

協議是指規則的約定。

HTTP的誕生:

當年HTTP協議的出現主要是為了解決文字傳輸的難題。

1997年1月公佈的HTTP/1.1是目前主流的HTTP協議版本。

網路基礎TCP/IP:

通常使用的網路是在TCP/IP協議族的基礎上運作的。而HTTP屬於它內部的一個子集。

TCP/IP協議族:

計算機與網路裝置要相互通訊,雙方就必須基於相同的方法(比如:如何探測到通訊目標、由哪一邊先發起通訊、使用哪種語言進行通訊、怎樣結束通訊等規則都需要事先確定)。不同的硬體、作業系統之間的通訊,所有的這一切都需要一種規則。而我們就把這種規則稱為協議(protocol)。

協議中存在各式各樣的內容。從電纜的規格到IP地址的選定方法、尋找異地使用者的方法、雙方建立通訊的順序,以及Web頁面顯示需要處理的步驟等等。

在這裡插入圖片描述

TCP/IP是網際網路相關的各類協議族的總稱。

像這樣把與網際網路相關聯的協議集合起來總稱為TCP/IP。也有說法認為TCP/IP是指TCP和IP這兩種協議。還有一種說法認為TCP/IP是在IP協議的通訊過程中使用到的協議族的統稱。

TCP/IP的分層管理:

TCP/IP協議族裡最重要的一點就是分層。TCP/IP協議族按層次分別分為以下4層:應用層、傳輸層、網路層和資料鏈路層。

  1. 應用層:應用層決定了向用戶提供應用服務時通訊的活動。HTTP協議處於該層。

    TCP/IP協議族內預存了各類通訊的應用服務。比如:FTP(檔案傳輸協議)、DNS(域名系統)等。

  2. 傳輸層:傳輸層對上層應用層,提供處於網路連線中的兩臺計算機之間的資料傳輸。

    在傳輸層有兩個性質不同的協議:TCP(傳輸控制協議)和UDP(使用者資料報協議)。

  3. 網路層:又名網路互連層,用來處理在網路上流動的資料包。該層規定了通過怎樣的傳輸路線到達對方計算機,並把資料包傳送給對方。與對方計算機之間通過多臺計算機或網路裝置進行傳輸時,網路層所起的作用就是在眾多的選項內選擇一條傳輸路線。

    資料包是網路傳輸的最小資料單位。

  4. 鏈路層:又名資料鏈路層、網路介面層,用來處理連線網路的硬體部分,包括控制作業系統、硬體的裝置驅動、NIC(網路介面卡,即網絡卡)及光纖等物理可見部分(還包括聯結器等一切傳輸媒介)。硬體上的範疇均在鏈路層的作用範圍之內。

把TCP/IP層次化是有好處的。比如:如果網際網路只由一個協議統籌,某個地方需要改變設計時,就必須把所有部分整體替換掉,而分層之後只需把變動的層替換掉即可,把各層之間的介面部分規劃好之後,每個層次內部的設計就能夠自由改動了;層次化之後,設計也變得相對簡單了,處於應用層上的應用可以只考慮分派給自己的任務,而不需要弄清楚物件在地球的哪個地方、對方的傳輸路線是怎麼樣的、是否能確保傳輸送達等問題。

TCP/IP通訊傳輸流:

在這裡插入圖片描述
利用TCP/IP協議族進行網路通訊時,會通過分層順序與對方進行通訊。傳送端從應用層往下走,接收端則從鏈路層往上走。

例如:首先作為傳送端的客戶端在應用層(HTTP協議)發出一個想看某個Web頁面的HTTP請求;接著為了傳輸方便,在傳輸層(TCP協議)把從應用層處收到的資料(HTTP請求報文)進行分割,並在各個報文上打上標記序號及埠號後轉發給網路層;在網路層(IP協議),增加作為通訊目的地的MAC地址後轉發給鏈路層,這樣一來,發往網路的通訊請求就準備齊全了;接收端的伺服器在鏈路層接收到資料,按序往上層傳送,一直到應用層,當傳輸到應用層,才能算真正接收到由客戶端傳送過來的HTTP請求。

在這裡插入圖片描述
傳送端在層與層之間傳輸資料時,每經過一層時必定會被打上一個該層所屬的首部資訊。反之,接收端在層與層傳輸資料時,每經過一層時會把對應的首部消去。這種把資料資訊包裝起來的做法稱為封裝。

與HTTP關係密切的協議:IP、TCP和DNS:

負責傳輸的IP協議:

按層次分,IP網際協議位於網路層。幾乎所有使用網路的系統都會用到IP協議。

TCP/IP協議族中的IP指的就是網際協議。
有人會把IP和IP地址搞混,IP其實就是一種協議的名稱。

IP協議的作用是把各種資料包傳送給對方。而要保證確實傳送到對方那裡,則需要滿足各類條件,其中兩個重要的條件是IP地址和MAC地址。

IP地址指明瞭節點被分配到的地址,MAC地址是指網絡卡所屬的固定地址。IP地址和MAC地址進行配對。IP地址可變化,但MAC地址基本上不會更改。

IP間的通訊依賴MAC地址。在網路上,通訊的雙方在同一區域網(LAN)內的情況是很少的,通常是經過多臺計算機和網路裝置中轉才能連線到對方。而在進行中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標。這時,會採用ARP協議。

ARP協議是一種用以解析地址的協議,根據通訊方的IP地址就可以反查出對應的MAC地址。

在到達通訊目標前的中轉過程中,那些計算機和路由器等網路裝置只能獲悉很粗略的傳輸路線,這種機制稱為路由選擇(routing)。無論哪臺計算機、哪臺網路裝置,它們都無法全面掌握網際網路中的細節。
在這裡插入圖片描述

確保可靠性的TCP協議:

按層次分,TCP位於傳輸層,提供可靠的位元組流服務。

所謂的位元組流服務是指,為了方便傳輸,將大塊資料分割成以報文段為單位的資料包進行管理。而可靠的傳輸服務是指,能夠把資料準確可靠地傳給對方。一言以蔽之,TCP協議為了更容易傳送大資料才把資料分割,而TCP協議能夠確認資料最終是否送達到對方。

為了準確無誤地將資料送達目標處,TCP協議採用了三次握手策略。用TCP協議把資料包送出去後,TCP不會對傳送的情況置之不理,它一定會向對方確認是否成功送達。

除了三次握手,TCP協議還有其他手段來保證通訊的可靠性。

握手過程中使用了TCP的標誌:SYN和ACK。傳送端首先發送一個帶SYN標誌的資料包給對方;接收端收到後,回傳一個帶有SYN/ACK標誌的資料包以示傳達確認資訊;最後,傳送端再回傳一個帶ACK標誌的資料包,代表握手結束。
在這裡插入圖片描述

負責域名解析的DNS服務:

DNS服務是和HTTP協議一樣位於應用層的協議。它提供域名到IP地址之間的解析服務。

計算機既可以被賦予IP地址,也可以被賦予主機名和域名。使用者通常使用主機名或域名來訪問對方的計算機,而不是直接通過IP地址訪問。因為與IP地址的一組純數字相比,用字母配合數字的表示形式來指定計算機名更符合人類的記憶習慣。

但要讓計算機去理解名稱,相對而言就變得困難了。因為計算機更擅長處理一長串數字。為了解決上述的問題,DNS服務應運而生。DNS協議提供通過域名查詢IP地址,或逆向從IP地址反查域名的服務。
在這裡插入圖片描述

各種協議與HTTP協議的關係:

在這裡插入圖片描述

URI和URL:

統一資源識別符號:

URI是Uniform Resource Identifier的縮寫。RFC2396分別對這3個單詞進行了如下定義:

  1. Uniform:規定統一的格式可方便處理多種不同型別的資源,而不用根據上下文環境來識別資源指定的訪問方式。另外,加入新增的協議方案也更容易。
  2. Resource:資源的定義是可標識的任何東西。除了文件檔案、影象或服務(例如:當天的天氣預報)等能夠區別於其他型別的,全部可作為資源。另外,資源不僅可以是單一的,也可以是多數的集合體。
  3. Identifier:表示可標識的物件,也稱為識別符號。

綜上所述,URI就是由某個協議方案表示的資源的定位識別符號。

協議方案是指訪問資源所使用的的協議型別名稱。
採用HTTP協議時,協議方案就是HTTP。除此之外,還有ftp、mailto、telnet、file等。標準的URI協議方案有30種左右。

URI用字串標識某一網際網路資源,而URL表示資源的地點(網際網路上所處的位置),可見URL是URI的子集。

URI格式:

表示指定的URI,要使用涵蓋全部必要資訊的絕對URI、絕對URL以及相對URL。

相對URL:是指從瀏覽器中基本URI初指定的URL(形如/image/logo.gif)。

  1. 絕對URI