HTTP精簡教程一:Web網絡基礎

使用 HTTP 協議訪問 Web

Web瀏覽器根據地址欄中制定的 URL 從 Web 服務器獲取文件資源(resource)等信息,從而顯示出Web頁面。javascript

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲普遍的一種網絡協議。全部的WWW文件都必須遵照這個標準。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面的方法。java

網絡基礎 TCP/IP

一般使用的網絡(包括互聯網)是在TCP/IP協議族的基礎上運做的。而HTTP屬於它內部的一個子集。瀏覽器

TCP/IP

計算機與網絡設備要互相通訊,雙方就必須基於相同的方法。不一樣的硬件、操做系統之間的通訊,都須要一種規則。而咱們把這種規則稱爲協議(protocol)。服務器

TCP/IP協議族包括:TCP、IP、ICMP、FDDI、HTTP、FTP、UDP、SNMP等。網絡

TCP/IP分層管理

TCP/IP協議族按層次分爲應用層、傳輸層、網絡層和數據鏈路層。大數據

TCP/IP層次化的好處在於:層次化後,設計變得相對簡單,處於某一層次上的應用能夠只考慮分派給本身的任務,不須要管其餘層次的應用方式。spa

應用層

應用層決定了向用戶提供應用服務時通訊的活動。操作系統

TCP/IP協議族內預存了各種通用的應用服務。好比FTP(FileTransfer Protocol,文件傳輸協議)和DNS(Domain Name System,域名系統)。設計

HTTP協議處於應用層。orm

傳輸層

傳輸層對上層應用層,提供處於網絡鏈接中的兩臺計算機之間的數據傳輸。

在傳輸層有兩個性質不一樣的協議:TCP(Transmission Control Protocol,傳輸控制協議)和UDP(User Data Protocol,用戶數據報協議)。

網絡層(又名網絡互連層)

網絡層用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了經過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把數據包傳送給對方。

與對方計算機之間經過多臺計算機或網絡設備進行傳輸時,網絡層所起的做用就是在衆多的選項中選擇一條傳輸路線。

鏈路層(又名數據鏈路層,網絡接口層)

用來處理網絡的硬件部分。包括控制操做系統、硬件的設備驅動、NI(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分(還包括鏈接器等一切傳輸媒介)。硬件上的範疇均在鏈路層的做用範圍以內。

TCP/IP通訊傳輸流

圖片描述

圖片描述

發送端在層與層之間傳輸數據時,每通過一層時一定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每通過一層時會把對應的首部消去。這種把數據信息包裝起來的作法稱爲封裝(encapsulate)。

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

負責傳輸的IP協議

IP(Internet Protocol)網際協議位於網絡層。InternetProtocol 這個名稱可能聽起來有點誇張,但事實正是如此,由於幾乎全部使用網絡的系統都會用到 IP 協議。TCP/IP 協議族中的 IP 指的就是網際協議,協議名稱中佔據了一半位置,其重要性可見一斑。可能有人會把「IP」和「IP 地址」搞混,「IP」實際上是一種協議的名稱。

IP 協議的做用是把各類數據包傳送給對方。而要保證確實傳送到對方那裏,則須要知足各種條件。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)。

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

確保可靠性的TCP協議

TCP 位於傳輸層,提供可靠的字節流服務。

所謂的字節流服務(Byte Stream Service)是指,爲了方便傳輸,將大塊數據分割成以報文段(segment)爲單位的數據包進行管理。而可靠的傳輸服務是指,可以把數據準確可靠地傳給對方。一言以蔽之,TCP 協議爲了更容易傳送大數據才把數據分割,並且 TCP 協議可以確認數據最終是否送達到對方。

爲了準確無誤地將數據送達目標處,TCP 協議採用了三次握手
(three-way handshaking)策略。發送端首先發送一個帶 SYN 標誌的數據包給對方。接收端收到後,回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息。最後,發送端再回傳一個帶 ACK 標誌的數據包,表明「握手」結束。若在握手過程當中某個階段莫名中斷,TCP 協議會再次以相同的順序發送相同的數據包。

圖片描述

負責域名解析的DNS

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

域名方便人們的記憶,IP地址方便計算機處理,爲了實現域名和IP地址之間的轉化,DNS 服務應運而生。DNS 協議提供經過域名查找 IP 地址,或逆向從 IP 地址反查域名的服務。

四個協議之間的關係

圖片描述

URI和URL

與 URI(Uniform Resource Identifier,統一資源標識符)相比,咱們更熟悉 URL(UniformResource Locator,統一資源定位符)。URL正是使用 Web 瀏覽器等訪問 Web 頁面時須要輸入的網頁地址。好比,下圖的 http://hackr.jp/就是 URL。

URI的格式

圖片描述

使用 http: 或 https: 等協議方案名獲取訪問資源時要指定協議類型。不
區分字母大小寫,最後附一個冒號(:)。也可以使用 data: 或 javascript: 這類指定數據或腳本程序的方案名。
  • 登陸信息(認證)
指定用戶名和密碼做爲從服務器端獲取資源時必要的登陸信息(身份
認證)。此項是可選項。
  • 服務器地址
使用絕對 URI 必須指定待訪問的服務器地址。地址能夠是相似
hackr.jp 這種 DNS 可解析的名稱,或是 192.168.1.1 這類 IPv4 地址
名,還能夠是 [0:0:0:0:0:0:0:1] 這樣用方括號括起來的 IPv6 地址名
  • 服務器端口號
指定服務器鏈接的網絡端口號。此項也是可選項,若用戶省略則自動使用默認端口號。
  • 帶層次的文件路徑
指定服務器上的文件路徑來定位特指的資源。這與 UNIX 系統的文件目錄結構類似。
  • 查詢字符串
針對已指定的文件路徑內的資源,可使用查詢字符串傳入任意參數。此項可選。
  • 片斷標識符
使用片斷標識符一般可標記出已獲取資源中的子資源(文檔內的某個位置)。但在 RFC 中並無明確規定其使用方法。該項也爲可選項。
相關文章
相關標籤/搜索