面試-關於Http協議你瞭解多少,有多少說多少

Http協議

超文本傳輸協議,構建與TCP/IP協議之上,默認端口號爲80,處於網絡體系結構的最頂層應用層上,Http協議採用的是請求/響應的工做方式。Http是無鏈接無狀態的。chrome

Q1:怎麼理解Http是無鏈接無狀態的json

無鏈接是指限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。瀏覽器

無狀態是指協議對於事務處理沒有記憶能力,服務器不知道客戶端是什麼狀態。即咱們給服務器發送 HTTP 請求以後,服務器根據請求,會給咱們發送數據過來,可是,發送完,不會記錄任何信息。這就代表每一個請求都是獨立的。緩存

Http的這兩個特性的優缺點:安全

優勢在於解放了服務器,每一次請求「點到爲止」不會形成沒必要要鏈接佔用。bash

缺點在於每次請求會傳輸大量重複的內容信息。服務器

CookieSession是用來保持Http鏈接的兩種技術。網絡

Http報文

Http在應用層經過報文的方式來交換數據,分爲請求報文響應報文加密

請求報文

Http的請求報文由請求行,請求頭,請求體組成spa

  • 請求行:聲明瞭請求方法,主機域名,資源路徑和協議版本

  • 請求頭:包括一些訪問的域名、用戶代理、Cookie等信息

  • 請求體:Http請求的數據

請求行詳解

請求方法

  • Get:從服務器讀取數據

  • Post:爲服務器添加信息

  • Put:爲指定的URL下添加一個文檔

  • Delete:刪除指定URL所標誌的信息

Q2:Http的Get和Post請求方式有什麼區別

  1. Get可提交的數據量收到URL長度的限制,URL的長度最可能是2048個字符。Post請求是沒有長度的限制的。

  2. Get請求的數據類型只容許Ascll字符,Post能夠是任何類型

  3. Get請求的安全性較差,由於數據參數是直接拼接在URL後面的,可見。Post數據封裝在Http的請求體中,瀏覽器中沒有緩存。

  4. Get請求適用於數據量較小,而且數據不敏感的狀況。Post正好相反

請求頭詳解

採用heade : value的方式

請求體詳解

存放須要發送給服務器的數據信息

請求體有三種使用方式:

  1. 數據交換:請求體能夠任意類型,好比json串,不過服務器須要解析

  2. 鍵值對:Get請求數據每一個鍵值對經過&拼接在URL後面,鍵與值之間用=鏈接

  3. 分部分形式:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

複製代碼

請求體被分爲多個部分,boundary 用於分割不一樣的字段,爲了不與正文內容重複。而後接着一個空行 接 內容,最後以

--boundary-- 結束

boundary:分割線

響應報文

包括狀態行,響應頭和響應體

  • 狀態行:包括協議版本Version、狀態碼Status Code、狀態碼描述

  • 響應頭:包括搭建服務器的軟件,發送響應的時間,迴應數據的格式等信息

  • 響應體:響應的具體數據

常見的響應碼
200 OK 客戶端請求成功
301 Moved Permanently 請求永久重定向
302 Moved Temporarily 請求臨時重定向
304 Not Modified 文件未修改,能夠直接使用緩存的文件。
400 Bad Request 因爲客戶端請求有語法錯誤,不能被服務器所理解。
401 Unauthorized 請求未經受權。這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用
403 Forbidden 服務器收到請求,可是拒絕提供服務。服務器一般會在響應正文中給出不提供服務的緣由
404 Not Found 請求的資源不存在,例如,輸入了錯誤的URL
500 Internal Server Error 服務器發生不可預期的錯誤,致使沒法完成客戶端的請求。
503 Service Unavailable 服務器當前不可以處理客戶端的請求,在一段時間以後,服務器可能會恢復正常。
複製代碼

相關知識

Q3:Http1.0和Http1.1的區別有哪些

Http1.1比Http1.0升級了以下地方

  1. 引入了持久鏈接,意思就是在一個TCP鏈接中能夠傳送多個Http的請求和響應。在請求頭中添加Connection: Keep-Alive開啓

  2. 多個請求和響應能夠同時進行

  3. 引入更加多的請求頭和響應頭

Q4:Http和Https的區別

  1. Http處在應用層,Https處在傳輸層

  2. Http明文傳輸,Https經過ssl加密和身份認證

  3. Http默認80端口,Https默認443端口

相關文章
相關標籤/搜索