基本概念
客戶端(Client):移動應用(iOS、android等應用)
服務器(Server):為客戶端提供服務、提供數據、提供資源的機器
請求(Request):客戶端向服務器索取數據的一種行為
響應(Response):服務器對客戶端的請求做出的反應,一般指返回數據給客戶端
服務器
按照軟件開發階段來分,服務器可以大致分為2種
遠程服務器
別名:外網服務器、正式服務器
使用階段:應用上線后使用的服務器
使用人群:供全體用戶使用
速度:取決于服務器的性能、用戶的網速
本地服務器
別名:內網服務器、測試服務器
使用階段:應用處于開發、測試階段使用的服務器
使用人群:僅供公司內部的開發人員、測試人員使用
速度:由于是局域網,所以速度飛快,有助于提高開發測試效率
URL
URL的全稱是Uniform Resource Locator(統一資源定位符)
通過 1 個 URL,能找到互聯網上唯一的 1 個資源
URL就是資源的地址、位置,互聯網上的每個資源都有一個唯一的URL
URL 格式
基本格式:協議頭://主機地址/路徑
協議頭:不同的協議,表示不同的資源查找及傳輸方式
主機地址:存放資源主機的IP地址(域名)
路徑:資源在主機中的具體位置
HTTP 協議
HTTP的全稱是Hypertext Transfer Protocol,超文本傳輸協議
規定客戶端和服務器之間的數據傳輸格式
讓客戶端和服務器能有效地進行數據溝通
HTTP協議是網絡編程使用最為廣泛的協議
HTTP協議特點
簡單快速
因為HTTP協議簡單,所以HTTP服務器的程序規模小,通信速度快
靈活
HTTP允許傳輸任意類型的數據
HTTP 0.9和1.0使用非持續連接
限制每次連接只處理一個請求,服務器對客戶端的請求做出響應后,立刻斷開連接,這種方式可以節省傳輸時間
HTTP 1.1使用持續連接
不必為每個web對象創建一個新的連接,一個連接可以傳送多個對象
HTTP通信過程
請求
HTTP協議規定:一個完整的由客戶端發給服務器的HTTP 請求需要包含以下內容:
請求行:指定請求方法、請求資源路徑以及HTTP協議版本
# / 表示訪問根目錄
GET / HTTP/1.1
請求頭:對客戶端的環境描述、客戶端請求的主機地址等信息
請求頭中至少包含以下信息
# 客戶端要訪問的服務器主機地址
Host: m.baidu.com
請求頭中還可以包含以下信息
# 客戶端的類型,客戶端的軟件環境
User-Agent: iPhone AppleWebKit
# 客戶端所能接收的數據類型
Accept: text/html, */*
# 客戶端的語言環境Accept-Language: zh-cn
# 客戶端支持的數據壓縮格式Accept-Encoding: gzip
# 訪問結束后,是否斷開連接Connection: Close
請求體(可選):客戶端發給服務器的具體數據,例如要上傳的文件數據
請求格式
每一項請求信息末尾使用\r\n
最后一個請求項末尾使用\r\n\r\n表示請求結束
響應
HTTP協議規定:一個完整的HTTP 響應包含以下內容:
狀態行:包含了HTTP協議版本、狀態碼、狀態英文名稱
# 請求成功HTTP/1.1200OK
# 內容無變化HTTP/1.1304Not Modified
響應頭:包含了對服務器的描述、對返回數據的描述
# 服務器的類型Server: Apache/2.4.10(Unix) PHP/5.5.20
# 返回數據的類型Content-Type: text/html
# 返回數據的長度Content-Length:660
# 響應時間Date: Thu,04Jun201519:31:50GMT
# ETag(HASH值,用于檢測本地資源和服務器資源是否一致)ETag:"294-4e1862f57e7c0"
實體內容:服務器返回給客戶端的具體二進制數據