1. 程式人生 > >[計算機網路]http協議學習

[計算機網路]http協議學習

今天學了下http協議,總結了以下幾個問題。

1. 什麼是http協議

  • http協議是基於TCP/IP通訊協議來傳遞資料。
  • http協議又叫超文字傳輸協議,是全球資訊網伺服器傳輸超文字到本地瀏覽器的協議。

2. URI,URL和URN的理解。

首先我們來看下面這張圖:
關係圖.png從這張圖中很容易看出它們的關係。

1.URI包括了URN和URL。
2.URL和URN都是URI的一種,但URI卻不一定是它們。

看到一個很貼切的比喻,我們把URI比作人,URN就是人的名字,URL就是人的地址。

  • 也就是說URN確定了人的身份。有了名字,就算地址換了我們也能找到這個人。
  • URN提供了找到人的地址。但一旦地址換了我們可能就找不到這個人了。
  • 換句話說:URN和URL的區別就是,URN與資源的位置無關,當某個URN標識的資源在位置發生變化時,其URI可以保持不變。

URI,URL,URN的定義:

URI:

Uniform Resource Identifier,即統一資源標誌符,用來唯一的標識一個資源。

URL:

Uniform Resource Locator,統一資源定位符。即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。(能知道這個資源的位置)

URN:

Uniform Resource Name,統一資源命名。即通過名字來表示資源的。
參考文章:

3.http中的request和response

request包和response包

http中resquest和response是對應的。

request中有請求行,請求頭部,空行,和主體
response中有狀態行,訊息報頭,空行,響應正文

用burpsuite抓的包

1.GET /osjson.aspx?query=%E9%AB%98%E6%9C%A8%E5%90%8C%E5%AD%A6&form=OSDJAS&language=zh-CN HTTP/1.1
2.Host: www.bing.com
3.User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
4.Accept: */*
5.Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
6.Accept-Encoding: gzip, deflate
7.Connection: close
8.
  • 1是請求行,請求型別為GET,使用的是HTTP/1.1版本
  • 2~7是請求頭部
  • 8是空行
  • 這個request包沒有主體
1.HTTP/1.1 302 
2.Cache-Control: private
3.Content-Length: 208
4.Content-Type: text/html; charset=utf-8
5.Location: https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&form=OSDJAS&language=zh-CN
Vary: Accept-Encoding
6.Set-Cookie: SNRHOP=TS=636798042541327291&I=1; domain=.bing.com; path=/
X-MSEdge-Ref: Ref A: 195BE0810738433CA3E8475AD27BBC3C Ref B: BJ1EDGE0214 Ref C: 2018-12-07T18:30:49Z
Date: Fri, 07 Dec 2018 18:30:48 GMT
7.Connection: close
8.
9.<html><head><title>Object moved</title></head><body>
10.<h2>Object moved to <a href="https://cn.bing.com/osjson.aspx?query=%E9%AB%98%E6%9C%A8&amp;form=OSDJAS&amp;language=zh-CN">here</a>.</h2>
12.</body></html>
  • 1.是狀態行,狀態碼為302,協議版本是HTTP/1.1
  • 2~7是訊息報頭
  • 8是空行
  • 9~11是響應正文

HTTP中的一些請求方式

  • GET 請求指定的頁面資訊,並返回實體主體。
  • HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
  • POST 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。
  • PUT 從客戶端向伺服器傳送的資料取代指定的文件的內容。
  • DELETE 請求伺服器刪除指定的頁面。
  • CONNECT HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
  • OPTIONS 允許客戶端檢視伺服器的效能。
  • TRACE 回顯伺服器收到的請求,主要用於測試或診斷。

4.HTTP中的狀態碼

狀態碼是當瀏覽器傳送請求時,網頁所在伺服器返回的一個資訊頭。

狀態程式碼有三位數字組成,第一個數字定義了響應的類別,共分五種類:

  • 1xx:指示資訊–表示請求已接收,繼續處理
  • 2xx:成功–表示請求已被成功接收、理解、接受
  • 3xx:重定向–要完成請求必須進行更進一步的操作
  • 4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
  • 5xx:伺服器端錯誤–伺服器未能實現合法的請求
常見的HTTP狀態碼
  • 200 OK //請求成功。一般用於GET與POST請求
  • 400 Bad Request //客戶端請求的語法錯誤,伺服器無法理解
  • 401 Unauthorized //請求要求使用者的身份認證
  • 403 Forbidden //伺服器收到請求,但是拒絕提供服務
  • 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
  • 500 Internal Server Error //伺服器發生不可預期的錯誤
  • 503 Server Unavailable //伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
    參考文章:
    http://www.cnblogs.com/ranyonsue/p/5984001.html
    https://www.cnblogs.com/wuyun-blog/p/5706703.html