http協議那些事兒
1. HTTP協議
1.1 http 技術背景
為啥叫超文本傳輸協議呢
# 技術由來 在互聯網早期的時候,我們輸入的信息只能保存在本地,無法和其他電腦進行交互。我們保存的信息通常都以文本即簡單字符的形式存在,文本是一種能夠被計算機解析的有意義的二進制數據包。而隨著互聯網的高速發展,兩臺電腦之間能夠進行數據的傳輸后,人們不滿足只能在兩臺電腦之間傳輸文字,還想要傳輸圖片、音頻、視頻,甚至點擊文字或圖片能夠進行超鏈接的跳轉,那么文本的語義就被擴大了,這種語義擴大后的文本就被稱為超文本(Hypertext)。HTML 就是最常?的超?本了,它本身只是純?字?件,但內部?很多標簽定義了圖?、視頻等的鏈接,再經過瀏覽器的解釋,呈現給我們的就是?個?字、有畫?的??了。 # SO,HTTP 是?個在計算機世界?專?在「兩點」之間「傳輸」?字、圖?、?頻、視頻等「超?本」數據的「約定和 規范」。 # 瀏覽器 瀏覽器使用的是HTTP協議的主要載體。隨著網景 大戰結束,瀏覽器迅速發展,至今已有很多瀏覽器。
1.2 http 基本概念
HTTP 是什么
HTTP 是超?本傳輸協議,也就是HyperText Transfer Protocol。HTTP的名字「超?本協議傳輸」,它可以拆成三個部分:超?本、傳輸、協議
URI/URL
# URI的全稱是(Uniform Resource ldentifier),中文名稱是統一資源標識符,使用它就能夠唯一地標記互聯網上資源 # URL的全稱是 ((Uniform Resource Locator) ,中文名稱是統一資源定位符,也就是我們俗稱的網址,它實際上是URI的一個子集。 # URN 通過名字來標識或識別資源。
常見的字段有哪些?
Host 字段:客戶端發送請求時,?來指定服務器的域名 Content-Length 字段:表明本次回應的數據?度。 Connection 字段:常?于客戶端要求服務器使?TCP 持久連接,以便其他請求復? HTTP/1.1 版本的默認連接都是持久連接,但為了兼容?版本的HTTP,需要指定 Connection ? 部字段的值為Keep-Alive。 Content-Type 字段:?于服務器回應時,告訴客戶端,本次數據是什么格式 Content-Type: text/html; charset=utf-8 發送的是網頁,使用的是utf8格式 客戶端請求的時候,可以使? Accept 字段聲明??可以接受哪些數據格式。 Accept: */* 客戶端聲明??可以接受任何格式的數據。 Content-Encoding 字段 :說明數據的壓縮?法。表示服務器返回的數據使?了什么壓縮格式
1.3 http 常見狀態碼
5大狀態碼
301 Moved Permanently 永久移動,請求的資源已被永久的移動到新URI; 302 Found 臨時移動,資源臨時被移動,客戶端應繼續使用原有URI; 304 Not Modified 文件未修改,請求的資源未修改,服務器返回此狀態碼時,常用于緩存; 400 Bad Request 客戶端請求的語法錯誤,服務器無法解析或者訪問; 401 Unauthorized 請求要求用戶的身份認證; 402 Payment Required 此狀態碼保留,為以后使用; 403 Forbidden 服務器理解請求客戶端的請求,但是拒絕執行此請求; 404 Not Found 服務器沒有該資源,請求的文件找不到; 405 Method Not Allowed 客戶端請求中的方法被禁止; 500 Internal Server Error 服務器內部錯誤,無法完成請求; 502 Bad Gateway 服務器返回錯誤代碼或者代理服務器錯誤的網關; 503 Service Unavailable 服務器無法響應客戶端請求,或者后端服務器異常; 504 Gateway Time-out 網關超時或者代理服務器超時; 505 HTTP Version not supported 服務器不支持請求的HTTP協議的版本,無法完成處理。
1.4 http 報文介紹
http 協議主要有三大部分組成: 起始行、請求頭、實體
每個報文的其實行 都是由 3個字段組成:、
方法: http、ftp等
URL:統一資源定位符 俗稱 網址
http版本:
3.5 http 請求URL 介紹
我們以訪問http://www.example.com:80/path/to/myfile.html? key1=value1&key2=value2#SomewhereInTheDocument 為例。
1. http://告訴瀏覽器使用何種協議。對于大部分Web資源,通常使用HTTP協議或其安全版本,HTTPS協議。另外,瀏覽器也知道如何處理其他協議。例如,mailto:協議指示瀏覽器打開郵件客戶端;ftp:協議指示瀏覽器處理文件傳輸。 2. www.example.com既是一個域名,也代表管理該域名的機構。它指示了需要向網絡上的哪一臺主機發起請求。當然,也可以直接向主機的 IP address 地址發起請求。但直接使用IP地址的場景并不常見。 3. 端口。兩個主機之間要發起TCP連接需要兩個條件,主機+端口。它表示用于訪問Web 服務器上資源入口。 4.路徑。 /path/to/myfile.html是 Web服務器上資源的路徑。以端口后面的第一個/開始,到?號之前結束,中間的每一個/都代表了層級(上下級)關系。這個URL的請求資源是一個html頁面。 5.參數。?key1=value1&key2=value2是提供給Web服務器的額外參數。如果是GET請求,一般帶有請求URL參數,如果是POST請求,則不會在路徑后面直接加參數。這些參數是用&符號分隔的鍵/值對列表。key1 = value1是第一對,key2 = value2是第二對參數 6.錨點.#SomewhereInTheDocument是資源本身的某一部分的一個錨點。錨點代表資源內的一種"“書簽",它給予瀏覽器顯示位于該“加書簽”點的內容的指示。例如,在HTML文檔上,瀏覽器將滾動到定義錨點的那個點上;在視頻或音頻文檔上,瀏覽器將轉到錨點代表的那個時間。值得注意的是#號后面的部分,也稱為片段標識符,永遠不會與請求一起發送到服務器。
3.6 http 版本
HTTP/1.0
第一個在通訊中指定版本號的HTTP協議版本,常用于代理服務器。 成為了面向事務的應用層協議,該協議需要每請求一次響應建立并拆除一次連接, 引入了POST和HEAD命令 相對于一版本在一定程度上保障的數據的傳輸安全,是一個典型的串行連接事務。 缺點: 串行處理,效率低下
HTTP/1.1
引入持久連接機制并被默認采用,且更好的配合代理服務器工作 還支持管道方式同一連接下同時發送多個請求,以降低線路負載,提高傳輸速度 新增方法: PUT、PATCH、OPTIONS、DELETE 缺點: 同一TCP連接里,所有通信按次序進行,服務器只能順序處理回應,如果前面處理過慢,會有許多請求排隊,造成隊頭阻塞(Head-of-line blocking)
HTTP/2.0
HTTP/1.1 與HTTP/2.0 區別
1、HTTP/2.0 采用二進制格式,而非文本格式 2、HTTP/2.0是完全的多路復用,非有序并阻塞的,只需要一個鏈接即可實現并行 3、使用報頭壓縮,HTTP/2降低了開銷 4、HTTP/2讓服務器可以將響應主動 "推送"到客戶緩存中
4. HTTPS協議
4.1 https 協議介紹
HTTPS(全稱是 Hyper Text Transfer Protocol over SecureSocket Layer)是身披SSL/TLS 外殼的 HTTP。它在 HTTP 之上利用 SSL/TLS 建立安全的信道,加密數據傳輸。它被廣泛用于互聯網上安全敏感的通訊,例如電商、支付等應用
對稱加密:加密與解密用同一套密鑰,如 DES、3DES 和 AES 等
非對稱加密:加密和解密所使用的密鑰不同,如 RSA、DSA等
HTTPS 是由 HTTP 和SSL/TLS協議構建的更為安全的網絡協議
TLS 記錄層協議規定數據的最大大小限制為16KB 字節
4.2 Cookie 和Session 會話
HTTP協議是一種無狀態協議,即每次服務端接收到客戶端的請求時,都是一個全新的請求,服務器并不知道客戶端的歷史請求記錄;Session和Cookie的主要目的就是為了彌補HTTP的無狀態特性。
客戶端請求服務端,服務端會為這次請求開辟一塊內存空間,這個對象便是Session對象,存儲結構為ConcurrentHashMap 。Session 彌補了HTTP無狀態特性,服務器可以利用Session存儲客戶端在同一個會話期間的一些操作記錄。
HTTP TCP/IP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。