1. 什麼是http
http(HyperText Transfer Protocol,超文字船速協議
):是一種協議規範
,完成從客戶端到伺服器端等一系列運作流程。而協議
是指規則的約定。可以說:Web是建立在HTTP協議上通訊的。
2. TCP/IP 網路基礎
通常使用的網路是在TCP/IP
協議族的基礎上運作的,而HTTP屬於它內部的一個子集。
2.1 協議(protocol)
協議(protocol): 當計算機與網路裝置需要通訊,雙方需要基於相同的方法(例如:如何探測到通訊目標,哪邊先發起通訊,使用哪種語言通訊,怎樣結束通訊等),這些遵循的的一種規則就是協議(protocol)
。
把互聯萬相關的協議集合起來統稱
TCP/IP
。也可以認為TCP/IP
是TCP
和IP
兩種協議。
2.2 TCP/IP 模型
應用層
:決定向使用者提供應用服務時的通訊活動。TCP/IP
協議族內預存各類通用的應用服務。例如FTP[File Transfer Protocol]
和DNS[Domain Name System]
在改成,HTTP
協議也處於該層。
傳輸層
: 提供網路連線中的兩臺計算機之間的資料傳輸。TCP(Transmission Control Protocol)傳輸控制協議
和UDP(User Data Protocol)使用者資料包協議
處於該層。
網路層
:處理網路上流動的資料包。資料包是網路傳輸的最小資料單位。該層對定了通過怎樣的傳輸路線(在眾多的路徑中選擇一條資料路線
)到達對方計算機,並把資料傳送給對方。IP(Internet Protocol)
屬於該層
資料鏈路層
:用於處理聯通網路的硬體部分。包括控制作業系統、硬體的裝置驅動、NIC(Network Interface Card,網路適配卡[網路卡])、光纖等物理可見部分。
傳送端
在層與層之間傳輸資料時,每經過一層必定會打上
該層所屬的首部資訊
。接收端
在曾與層傳輸資料時,每經過一層,會把對應的首部消去
。這種把資料資訊包裝起來的做法叫做
封裝(encapsulate)
。#3. 與HTTP關係密切的協議:IP、TCP和DNS
3.1 負責傳輸的IP協議
IP
(Internet Protocol,網際協議):所有的網路系統都會用到IP協議(TCP/IP協議族中的IP)。不要將IP
和IP地址
搞混淆。
IP協議
:作用是將各種資料包傳送給對方。傳送正確的條件:
- IP地址: 節點被分配到的地址
- MAC地址: 網路卡所屬的固定地址(IP地址可以和MAC地址進行匹配,IP地址可變換,MAC地址基本不會變化)
ARP協議(Address Resolution Protocol)
: 地址解析協議。根據通訊方的IP地址,反查出對應的MAC地址。
IP間的通訊依賴MAC地址。在網路上,正常的雙方通訊是需要經過多臺計算機和網路裝置中轉才能連線。在中轉時,會利用下一站中轉裝置的MAC地址來搜尋下一個中轉目標。這是就會採用ARP協議
。
3.2 確保可靠性的TCP協議
TCP協議
屬於傳輸層
,提供可靠的位元組流服務,將資料準確可靠地傳送給對方
位元組流服務(Byte Stream Service): 為了方便傳輸,將大塊資料分割成以報文段(segment)
為單位的資料包
進行管理。
為了準確無誤地將資料送達目的地,TCP協議
採用三次握手
(three-way handshaking)策略。當資料包
傳送後,會向對方確認是否成功送達
。握手標誌(flag
):
- SYN(synchronize):
傳送端
傳送SYN
標誌給伺服器端 - ACK(acknowledgement):
服務端
返回SYN/ACK
,代表傳達確認資訊 - 最後
傳送端
再次回傳ACK
的資料包,代表握手結束
。如果握手過程某個階段中斷
,TCP協議會再次
以相同順序
傳送相同資料包
。
3.3 負責域名解析的DNS服務
DNS(Domain Name System)
: 應用於應用層
的協議,提供域名
到IP地址
之間的解析服務 或 逆向從IP地址反查詢域名的服務。
4. URI 和URL
URI(Uniform Resource Identifier)
: 統一資源識別符號。由某個協議方案表示的資源
的定位識別符號
。協議方案
是指訪問資源所使用的協議型別名稱
,例如HTTP協議
的協議方案就是http
。
- Uniform: 規定
統一的格式
方便處理
多種不同型別
的資源。 - Resource: 可標識的任何東西。
- Identifier: 可標識的物件,也稱為識別符號。
URL(統一資源定位符)
表示資源的地點(網際網路所處位置),可知URL是URI的子集。
URI 格式
上圖是絕對URI的格式,其中每個具體屬性描述如下:
- 通過 協議方案名
http:
或https:
獲取 訪問資源時指定的協議型別
,也可使用data:
或javascript:
指定資料或指令碼程式的方案名 - 登入認證: 從服務獲取資源時需要的登入資訊(可選項)
- 伺服器地址:可以是域名(使用DNS解析),可以是IP地址
- 伺服器埠號:連結伺服器的網路埠號,可選。
- 帶層次的檔案路徑: 指定伺服器上的檔案路徑來定位特指的資源
- 查詢字串: 可以使用查詢字串傳入任意引數
- 片段識別符號:標記處以獲取資源中的子資源(文件內的某個位置)