HTTP 常用知識記錄

一、概述

1. 使用可靠的數據傳輸協議

2. Web服務器會為所有的HTTP對象附加一個MIME類型,常見的MIME類型:

HTMl --> text/html

ASCII文本文檔 --> text/plain

JPEG --> image/jpeg

GIF --> image/gif

QuickTime --> video/quicktime

PPT --> application/vnd.ms-powerpoint

3. URI(統一資源標識符) 分為兩種形式: URL 和 URN

URL(統一資源定位符)

由三部份組成: 協議(scheme):主機(hostname):Web服務器上的資源

4. HTTP事務:由一個請求與一個響應組成,信息的交換是通過HTTP報文的格式化數據進行

5. HTTP常見的方法:GET POST PUT DELETE HEAD

6. Telnet 請求Web服務器資源 (Tips:可以擴展學習netcat)

telnet wwww.baidu.com 80

Get /tools.html HTTP/1.1

二、TCP套接字編程

1.常見函數

s = socket(); 創建套接字

bind(s, ); 綁定本地端口

connect(s, ); 連接到遠程主機

listen(s, ...); 本地套接字進入監聽

S2 = accept(s); 某人連接到本地

n = read(s, buffer, n); 嘗試從套接字的緩衝區讀取n個字節

n = write(s, buffer, n); 嘗試從套接字的緩衝區寫入n個字節

close(s); 關閉連接

shutdown(s, ); 只關閉TCP連接的輸入或輸出端

getsocket(s, ...); 讀取某個內部套接字配置選項的值

setsocket(s, ...); 修改某個內部套接字配置選項的值

三、HTTP狀態碼

1. 分類

總分類 已使用 含義

100 ~ 199 100 ~ 101 信息

200 ~ 299 200 ~ 206 成功

300 ~ 399 300 ~ 305 重定向

400 ~ 499 400 ~ 415 客戶端錯誤

500 ~ 599 500 ~ 505 服務器錯誤

2. 具體含義

狀態碼 原因短語 含義

100 Continue(繼續) 收到了請求的起始部分,客戶端應該繼續請求

101 Switching Protocols(轉換協議) 服務器正根據客戶端的指示將協議轉換為Update首部列出的協議

200 OK 服務器已成功處理請求

201 Created(已創建) 對要求服務器創建對象的請求來說,資源已創建完畢

202 Accepted(已接受) 請求已接受但服務器尚未處理

203 Non-Authoritative Information(非權威信息) 服務器已成功處理事務,但實體首部包含的信息不是來自原始服務器

204 No Content(沒有內容) 響應報文包含一些首部和狀態行,但不包含實體的主體內容

205 Rest Content(重置內容) 瀏覽器應該重置當前頁面上的所有HTML表單

206 Partial Content(部分內容) 部分請求成功

300 Multiple Choices(多項選擇) 客戶端請求指向多個資源的URL

301 Moved Permanently(永久移除) 請求的URL已移走,響應中包含一個Location URL 說明資源現在所處的位置

302 Found(已找到) 與301類似,但只是臨時移除,需要根據響應中的Location URL來臨時定位

303 See Other(參加其它) 告訴用另一個URL請求資源,新的URL在響應Location 首部中

304 Not Modified(未修改) 請求的資源沒有發生變化,一般靜態資源的請求會返回此狀態

305 Use Proxy(使用代理) 必需通過代理來訪問資源,代理的位置是在Location 首部中給出

306 (未使用)

307 Temporary Redirect(臨時重定向) 與301類似,客戶端需要在Location中的URL來臨時定位

400 Bad Rrequest(壞的請求) 告訴客戶端發送了一條異常的請求

401 Unauthorized(未授權) 與適當的首部一起返回,在獲得訪問權之前,請它進行身份驗證

402 Payment Required(要求付款) 當前未使用,預留

403 Forbidden(禁止) 服務器拒絕請求

404 Not Found(未找到) 服務器無法找到請求的URL

405 Method Not Allowed(不允許使用的方法) 請求中有一個URI不支持的方法,響應中應該包含Allow首部,告知支持的

406 Not Acceptable(無法接受) 服務器沒有資源與客戶端可接受的URL相匹配時使用

407 Proxy Authentication Required(代理認證) 與401類似,但用於需要進行資源認證的代理服務器

408 Request Timeout(請求超時) 客戶端請求時間太長,服務器返回些代碼並關閉連接

409 Conflict(衝突) 發出的請求在資源上造成了一些衝突

410 Gone(消失了) 除了服務器曾持有這些資源之外,與狀態碼404類似

411 Length Required(長度提示) 服務器要求請求報文中包含 Content-Length 部分,否則不接受請求

412 Precondition Failed(先決條件失敗) 發起條件請求,但服務器無法滿足其中的某個條件,就返回些碼

413 Request Entity Too Large(請求實體太大) 客戶端發送的實體主體部分超過服務器的要求

414 Request URI Too Long(請求的URI太長) 客戶端改善的請求URL超過服務器的要求

415 Unsupported Media Type(不支持的媒體類型) 服務器不支持客戶端所發送的實體的內容類型

416 Requested Range Not Satisfiable(所請求的範圍未得到滿足) 請求報文請求某個範圍內的資源,但無法滿足

417 Expectation Failed(無法滿足期望) 請求的Expect包含一些預期內容,但服務器無法滿足

500 Internal Server Error(內部服務器錯誤) 服務器出錯了,無法為請求提供服務

501 Not Implemented(未實現) 服務器無法滿足請求的某個功能

502 Bad Geteway(網關出錯) 作為代理或網關使用的服務器遇到了來自響應鏈中上游的無效響應,一般在Nginx中的proxy_pass處理中會出現這個問題

503 Service Unavilable(未提供此服務) 服務器目前無法為請求提供服務,但過一段時間就可以恢復服務

504 Gateway Timeout(網關超時) 與408類似,但響應來自網關或代理,此網關或代理在等待響應的時候超時

505 HTTP Version Not Supported(不支持HTTP版本) 服務器收到的請求是以它不支持的協議版本表示的

四、HTTP加密

1. HTTP安全技術

服務器認證(客戶端知道它們是在與真正的而不是偽造的服務器通話)

客戶端認證(服務器知道它們是在與真正的而不是偽造的客戶端通話)

完整性(客戶端與服務器的數據不會被修改)

加密(客戶端和服務器的對話是加密的,無需擔心被竊聽)

效率(一個運行的足夠快的算法,以便低端的客戶端與服務器使用)

普適性(基本所有的客戶端與服務器都能支持這些協議)

管理的可擴展性(在任何地方的任何人都可以立即進行安全的通信)

適應性(能夠支持當前最知名的安全方法)

在社會上的可行性(滿足社會上的政治文化需要)

2. HTTPS 與 HTTP

結構分層

(a) HTTP 結構 (b) HTTPS 結構

HTTP (應用程)

SSL or TLS (安全層)

TCP (傳輸層)

IP (網絡層)

網絡接口 (數據鏈路層)

3. 加密技術

密碼:對文本進行編碼

密鑰:改變密碼行為的數字化參數

對稱密鑰加密系統:編/解碼使用相同密鑰的算法

不對稱密鑰加密系統:編/解碼使用不同密鑰的算法

雙方需要一個共享密鑰,需要維護N的2次方個密鑰

公開密鑰加密系統:一種能夠使數百萬計算機便捷地發送機密報文的系統

一方只需要一個公共的密鑰,然後另一方只要一個解密密鑰做觖鑰

數字簽名:用來驗證報文未被偽造或篡改的校驗合

數字證書:由一個可信的組織驗證和簽發的識別信息


分享到:


相關文章: