HTTP總結一:HTTP 基本概念1、HTTP 是什么?2、什么是超文本傳輸協議?(1) 「超文本」(2) 「傳輸」(3) 「協議」二:HTTP 常見的狀態碼,有哪些?http 常見字段有哪些?HTTP 常見的狀態碼(1)1xx(2)2xx(3)3xx(4)4xx(5)5xxhttp 常見字段(1)Host(2)Content-Length 字段(3)Connection 字段(4)Content-Type 字段(5)Content-Encoding 字段三:HTTP 特性1、 HTTP(1.1) 的優點?(1)簡單(2)靈活和易于擴展(3)應用廣泛和跨平臺2、HTTP(1.1) 的缺點?(1)無狀態(2)明文傳輸(3)不安全3、HTTP/1.1 的性能(1)長連接(2)管道網絡傳輸(3)隊頭阻塞一:HTTP 基本概念1、HTTP 是什么???HTTP 是超文本傳輸協議,也就是HyperText Transfer Protocol 。
2、什么是超文本傳輸協議?HTTP的名字「超文本協議傳輸」,它可以拆成三個部分:
超文本傳輸協議

文章插圖
(1) 「超文本」??HTTP 傳輸的內容是「超文本」 。??我們先來理解「文本」,在互聯網早期的時候只是簡單的字符文字,但現在「文本」的涵義已經可以擴展為圖片、視頻、壓縮包等,在 HTTP 眼里這些都算做「文本」 。??再來理解「超文本」,它就是超越了普通文本的文本,它是文字、圖片、視頻等的混合體,最關鍵的是它有超鏈接,能從一個超文本跳轉到另外一個超文本 。
?比如:HTML 就是最常見的超文本了,它本身只是純文字文件,但內部用很多標簽定義了圖片、視頻等的鏈接,在經過瀏覽器的解釋,呈現給我們的就是一個文字、有畫面的網頁了 。
(2) 「傳輸」??所謂的「傳輸」,就是把一堆東西從 A 點搬到 B 點,或者從 B 點 搬到 A 點 。??HTTP 協議是一個無狀態,無連接的雙向協議 。舉個例子:我們在上網沖浪時,瀏覽器是請求方 A,百度網站就是應答方 B 。雙方約定用 HTTP 協議來通信,于是瀏覽器把請求數據發送給網站,網站再把一些數據返回給瀏覽器,最后由瀏覽器渲染在屏幕,就可以看到圖片、視頻了 。

文章插圖
??數據雖然是在 A 和 B 之間傳輸,但允許中間有中轉或接力 。只要中間人遵從 HTTP 協議,并且不打擾基本的數據傳輸,就可以添加任意額外的東西 。
(3) 「協議」針對 HTTP 協議,我們可以這么理解:??HTTP 是一個用在計算機世界里的協議 。它使用計算機能夠理解的語言確立了一種計算機之間交流通信的規范(兩個以上的參與者),以及相關的各種控制和錯誤處理方式(行為約定和規范) 。
綜上所述,我們可以說:??HTTP 是一個在計算機世界里專門在 兩點 之間 傳輸 文字、圖片、音頻、視頻等 超文本 數據的 約定和規范 。
注意:我們所說的兩點之間,包括服務器與服務器之間,還包括服務器與客戶端之間 。
二:HTTP 常見的狀態碼,有哪些?http 常見字段有哪些?

文章插圖
HTTP 常見的狀態碼(1)1xx?1xx?類狀態碼屬于提示信息,是協議處理中的一種中間狀態,實際用到的比較少 。
(2)2xx?2xx?類狀態碼表示服務器成功處理了客戶端的請求,也是身為程序員最愿意看到的狀態 。
狀態詳情
「200 OK」
是最常見的成功狀態碼,表示一切正常 。如果是非 HEAD 請求,服務器返回的響應頭都會有 body 數據 。
「204 No Content」
也是常見的成功狀態碼,與 200 OK 基本相同,但響應頭沒有 body 數據 。
「206 Partial Content」
是應用于 HTTP 分塊下載或斷電續傳,表示響應返回的 body 數據并不是資源的全部,而是其中的一部分,也是服務器處理成功的狀態 。
(3)3xx?3xx?類狀態碼表示客戶端請求的資源發送了變動,需要客戶端用新的 URL 重新發送請求獲取資源,也就是重定向 。
狀態詳情
「301 Permanently Moved」
表示永久重定向,說明請求的資源已經不存在了,需改用新的 URL 再次訪問 。
「302 Found 」
表示臨時重定向,說明請求的資源還在,但暫時需要用另一個 URL 來訪問 。
「304 Not Modified」
不具有跳轉的含義,表示資源未修改,重定向已存在的緩沖文件,也稱緩存重定向,用于緩存控制 。
(4)4xx【HTTP總結一文搞定HTTP http什么意思】?4xx?類狀態碼表示客戶端發送的報文有誤,服務器無法處理,也就是錯誤碼的含義 。
狀態詳情
「400 Bad Request」
表示客戶端請求的報文有錯誤,但只是個籠統的錯誤 。
「403 Forbidden」
表示服務器禁止訪問資源,并不是客戶端的請求出錯 。
「404 Not Found」
表示請求的資源在服務器上不存在或未找到,所以無法提供給客戶端 。
(5)5xx?5xx?類狀態碼表示客戶端請求報文正確,但是服務器處理時內部發生了錯誤,屬于服務器端的錯誤碼 。
狀態詳情
「500 Internal Server Error」
與 400 類型,是個籠統通用的錯誤碼,服務器發生了什么錯誤,我們并不知道 。
「501 Not Implemented」
表示客戶端請求的功能還不支持,類似“即將開業,敬請期待”的意思 。
「502 Bad Gateway」
通常是服務器作為網關或代理時返回的錯誤碼,表示服務器自身工作正常,訪問后端服務器發生了錯誤 。
「503 Service Unavailable」
表示服務器當前很忙,暫時無法響應服務器,類似“網絡服務正忙,請稍后重試”的意思 。
http 常見字段(1)Host??客戶端發送請求時,用來指定服務器的域名 。

文章插圖
Host: www.A.com有了 Host 字段,就可以將請求發往「同一臺」服務器上的不同網站
(2)Content-Length 字段??服務器在返回數據時,會有 Content-Length字段,表明本次回應的數據長度 。

文章插圖
如上面則是告訴瀏覽器,本次服務器回應的數據長度是 1000 個字節,后面的字節就屬于下一個回應了 。
(3)Connection 字段??Connection字段最常用于客戶端要求服務器使用 TCP 持久連接,以便其他請求復用 。

文章插圖
一個可以復用的 TCP 連接就建立了,直到客戶端或服務器主動關閉連接 。但是,這不是標準字段 。
(4)Content-Type 字段??Content-Type字段用于服務器回應時,告訴客戶端,本次數據是什么格式 。

文章插圖
上面的類型表明,發送的是網頁,而且編碼是UTF-8 ??蛻舳苏埱蟮臅r候,可以使用Accept字段聲明自己可以接受哪些數據格式 。上面代碼中,客戶端聲明自己可以接受任何格式的數據 。
(5)Content-Encoding 字段??Content-Encoding字段說明數據的壓縮方法 。表示服務器返回的數據使用了什么壓縮格式

文章插圖
上面表示服務器返回的數據采用了gzip方式壓縮,告知客戶端需要用此方式解壓 。
客戶端在請求時,用Accept-Encoding字段說明自己可以接受哪些壓縮方法 。
三:HTTP 特性1、 HTTP(1.1) 的優點???HTTP 最凸出的優點是「簡單、靈活和易于擴展、應用廣泛和跨平臺」 。
(1)簡單??HTTP 基本的報文格式就是 headerbody,頭部信息也是 key-value簡單文本的形式,易于理解,降低了學習和使用的門檻 。
(2)靈活和易于擴展??HTTP協議里的各類請求方法、URI/URL、狀態碼、頭字段等每個組成要求都沒有被固定死,都允許開發人員自定義和擴充 。
??同時 HTTP 由于是工作在應用層( OSI 第七層),則它下層可以隨意變化 。
??HTTPS 也就是在 HTTP 與 TCP 層之間增加了 SSL/TLS 安全傳輸層,HTTP/3 甚至把 TCPP 層換成了基于 UDP 的 QUIC 。
(3)應用廣泛和跨平臺??互聯網發展至今,HTTP 的應用范圍非常的廣泛,從臺式機的瀏覽器到手機上的各種 APP,從看新聞、刷貼吧到購物、理財、吃雞,HTTP 的應用片地開花,同時天然具有跨平臺的優越性 。
2、HTTP(1.1) 的缺點???HTTP 協議里有優缺點一體的雙刃劍,分別是「無狀態、明文傳輸」,同時還有一大缺點「不安全」 。
(1)無狀態??無狀態的好處,因為服務器不會去記憶 HTTP 的狀態,所以不需要額外的資源來記錄狀態信息,這能減輕服務器的負擔,能夠把更多的 CPU 和內存用來對外提供服務 。
??無狀態的壞處,既然服務器沒有記憶能力,它在完成有關聯性的操作時會非常麻煩 。
??例如登錄->添加購物車->下單->結算->支付,這系列操作都要知道用戶的身份才行 。但服務器不知道這些請求是有關聯的,每次都要問一遍身份信息 。
??這樣每操作一次,都要驗證信息,這樣的購物體驗還能愉快嗎?對于無狀態的問題,解法方案有很多種,其中比較簡單的方式用 Cookie 技術 。Cookie 通過在請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態 。相當于,在客戶端第一次請求后,服務器會下發一個裝有客戶信息的「小貼紙」,后續客戶端請求服務器的時候,帶上「小貼紙」,服務器就能認得了 。

文章插圖

文章插圖
(2)明文傳輸??明文意味著在傳輸過程中的信息,是可方便閱讀的,通過瀏覽器的 F12 控制臺或 Wireshark 抓包都可以直接肉眼查看,為我們調試工作帶了極大的便利性 。
??但是這正是這樣,HTTP 的所有信息都暴露在了光天化日下,相當于信息裸奔 。在傳輸的漫長的過程中,信息的內容都毫無隱私可言,很容易就能被竊取,如果里面有你的賬號密碼信息,那你號沒了 。
(3)不安全??HTTP 比較嚴重的缺點就是不安全:
通信使用明文(不加密),內容可能會被竊聽 。比如,賬號信息容易泄漏,那你號沒了 。不驗證通信方的身份,因此有可能遭遇偽裝 。比如,訪問假的淘寶、拼多多,那你錢沒了 。無法證明報文的完整性,所以有可能已遭篡改 。比如,網頁上植入垃圾廣告,視覺污染,眼沒了 。HTTP 的安全問題,可以用 HTTPS 的方式解決,也就是通過引入 SSL/TLS 層,使得在安全上達到了極致 。
3、HTTP/1.1 的性能(1)長連接??早期 HTTP/1.0 性能上的一個很大的問題,那就是每發起一個請求,都要新建一次 TCP 連接(三次握手),而且是串行請求,做了無畏的 TCP 連接建立和斷開,增加了通信開銷 。
??為了解決上述 TCP 連接問題,HTTP/1.1 提出了長連接的通信方式,也叫持久連接 。這種方式的好處在于減少了 TCP 連接的重復建立和斷開所造成的額外開銷,減輕了服務器端的負載 。
??持久連接的特點是,只要任意一端沒有明確提出斷開連接,則保持 TCP 連接狀態 。
(2)管道網絡傳輸??HTTP/1.1 采用了長連接的方式,這使得管道(pipeline)網絡傳輸成為了可能 。
??即可在同一個 TCP 連接里面,客戶端可以發起多個請求,只要第一個請求發出去了,不必等其回來,就可以發第二個請求出去,可以減少整體的響應時間 。
??舉例來說,客戶端需要請求兩個資源 。以前的做法是,在同一個TCP連接里面,先發送 A 請求,然后等待服務器做出回應,收到后再發出 B 請求 。管道機制則是允許瀏覽器同時發出 A 請求和 B 請求 。??但是服務器還是按照順序,先回應 A 請求,完成后再回應 B 請求 。要是 前面的回應特別慢,后面就會有許多請求排隊等著 。這稱為「隊頭堵塞」 。
(3)隊頭阻塞??「請求 - 應答」的模式加劇了 HTTP 的性能問題 。
??因為當順序發送的請求序列中的一個請求因為某種原因被阻塞時,在后面排隊的所有請求也一同被阻塞了,會招致客戶端一直請求不到數據,這也就是「隊頭阻塞」 。好比上班的路上塞車 。
,
- 經濟全球化的利弊 經濟全球化的利弊總結
- Proe經典實用技巧總結 proe操作圖文教程
- 周末女傭
- socks4代理
- ipv6怎么用
- 農家棄妃
- 高一生物必修一知識點總結
- 提升自我的句子總結
- 生產工作總結
- 怎么開廚房會議總結
