Android Http協(xié)議

一次HTTP操作稱為一個事務(wù),其工作過程可分為四步:

  1. 首先客戶端與服務(wù)器需要建立連接。只要單機某個超級鏈接,HTTP的工作就開始了。
  2. 建立連接后,客戶端發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是MIME信號包括請求修飾符、客戶端信息和其他內(nèi)容。
  3. 服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或者失敗的代碼,后邊是MIME信息包括服務(wù)器信息、實體信息和可能的內(nèi)容。
  4. 客戶端接收到服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏幕上,然后客戶端和服務(wù)器斷開連接。

HTTP協(xié)議永遠都是客戶端發(fā)起請求,服務(wù)器回送相應(yīng)。
這樣就限制了使用HTTP協(xié)議,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候,服務(wù)器將消息推送給客戶端。
HTTP協(xié)議是一個無狀態(tài)的協(xié)議,同一個客戶端的這次請求和上次請求是沒有關(guān)系的。


URL(統(tǒng)一資源定位符)也被稱為網(wǎng)頁地址,是因特網(wǎng)上標(biāo)準(zhǔn)的資源的地址。
例如:http://www.imooc.com/index.jsp,URL的格式由三部分組成:

  1. 第一部分是協(xié)議(或稱為服務(wù)方式)。例如“http”或者“https”;
  2. 第二部分是存有該資源的主機IP地址(有時候也包括端口號)。例如“www.imooc.com”;
  3. 第三部分是主機資源和具體地址,例如目錄和文件名。例如“index.jsp”;
    第一部分和第二部分用“://”隔開,第二部分和第三部分用“/”隔開。第一部分和第二部分不可缺少。

HTTP協(xié)議建立在TCP/IP協(xié)議之上。

TCP/IP三次握手:
客戶端要和服務(wù)端建立連接時,客戶端向服務(wù)端發(fā)送SYN消息,服務(wù)器收到消息后向客戶端發(fā)送SYN+ACK消息,最后客戶端再以ACK消息響應(yīng),如此一來才會在客戶端和服務(wù)端之間建立起可靠的TCP連接,數(shù)據(jù)才可以在客戶端和服務(wù)器之間傳遞。
SYN:synchronous,握手信號。
ACK:Acknowledgment,確認字符。接收站發(fā)送給發(fā)送站的一種傳輸類控制字符,表示發(fā)來是數(shù)據(jù)已接收、確認無誤。


OSI (Open System Interconnection)七層協(xié)議
由低到高分別是:
物理層
數(shù)據(jù)鏈路層
網(wǎng)絡(luò)層
傳輸層
會話層
表示層
應(yīng)用層

如下摘自網(wǎng)絡(luò):

  1. 物理層的作用是實現(xiàn)相鄰計算機節(jié)點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸介質(zhì)和物理設(shè)備的差異。
  2. 數(shù)據(jù)鏈路層(Data Link Layer)是OSI模型的第二層,負責(zé)建立和管理節(jié)點間的鏈路。
  3. 網(wǎng)絡(luò)層(Network Layer)是OSI模型的第三層,它是OSI參考模型中最復(fù)雜的一層。它在下兩層的基礎(chǔ)上向資源子網(wǎng)提供服務(wù)。其主要任務(wù)是:通過路由選擇算法,為報文或分組通過通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?/li>
  4. 傳輸層(Transport Layer)是OSI模型的第4層。因此該層是通信子網(wǎng)和資源子網(wǎng)的接口和橋梁,起到承上啟下的作用。該層的主要任務(wù)是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。
  5. 會話層(Session Layer)是OSI模型的第5層,是用戶應(yīng)用程序和網(wǎng)絡(luò)之間的接口,主要任務(wù)是:向兩個實體的表示層提供建立和使用連接的方法。
  6. 表示層(Presentation Layer)是OSI模型的第六層,它對來自應(yīng)用層的命令和數(shù)據(jù)進行解釋,對各種語法賦予相應(yīng)的含義,并按照一定的格式傳送給會話層。其主要功能是“處理用戶信息的表示問題,如編碼、數(shù)據(jù)格式轉(zhuǎn)換和加密解密”等。
  7. 應(yīng)用層(Application Layer)是OSI參考模型的最高層,它是計算機用戶,以及各種應(yīng)用程序和網(wǎng)絡(luò)之間的接口,其功能是直接向用戶提供服務(wù),完成用戶希望在網(wǎng)絡(luò)上完成的各種工作。
    后來有人將此簡化為 TCP/IP 四層協(xié)議

http/1.0和1.1區(qū)別
HTTP/1.0每次請求都需要建立新的TCP連接,連接不能復(fù)用。
HTTP/1.1新的請求可以在上次請求建立的TCP連接之上發(fā)送,連接可以復(fù)用。優(yōu)點是減少重復(fù)進行TCP三次握手的開銷,提高效率。
HTTP1.1在Request消息頭里頭多了一個Host域,HTTP1.0則沒有這個域。Host:www.w3.org
HTTP1.1增加了OPTIONS,PUT,DELETE,TRACE,CONNECT這些Request方法等


HttpClient比HttpURLConnection更加的強大和豐富。所以建議使用這個來開發(fā)Android的http客戶端。
但從android sdk(6.0)開始,Google在官方文檔里已經(jīng)不推薦用HttpClient。
話說Google廢棄了HttpClient,卻沒有新的網(wǎng)絡(luò)框架作為替代……而實際開發(fā)中又并不會用HttpURLConnection,所以一般都是用開源網(wǎng)絡(luò)請求框架,比如 loopjVolley。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容