重溫HTTP,你到底做了什么?

      網友投稿 650 2022-05-30

      Java極客技術

      Java 人的社區,專注 Java 一百年!

      之前在回憶面試題的時候,面試官曾經問過我關于網絡協議的一些東西,回答的當時感覺自己很垃圾,然后面試結束之后,自行百度,翻閱書籍,然后做了細致的整理,現在我就來分享給大家。

      HTTP 你到底是個什么鬼

      HTTP 協議是 Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議。HTTP 是基于 TCP/IP 協議通信協議來傳遞數據(HTML 文件、圖片文件、查詢結果等)。它不涉及數據包(packet)傳輸,主要規定了客戶端和服務器之間的通信格式,默認使用80端口。

      這其實就是百度百科里面的精簡化的內容,雖然說不上太細致,但是已經算是對 HTTP 做了一個大概的描述,我們接下來就從以下的幾個方面來看一下這個HTTP 吧。

      HTTP 報文

      一般的,用于 HTTP 協議交互的信息被稱為 HTTP 報文,那么說到 HTTP 報文,我們做開發的,很多時候都理解成報文是由一行一行的簡單字符串,確實也是,因為 HTTP 報文都是純文本,所以,你就可以非常方便的進行讀寫。我們來看下圖:

      上圖顯示的就是一個簡單的 HTTP 事務的報文,圖中分為了2部分,請求報文和響應報文。

      請求報文、響應報文

      從客戶端發往服務器的報文叫請求報文,也叫做request message?,服務器在接收到請求報文之后,不得象征性的給人家返回點東西?禮尚往來嘛,這時候,服務器端相應一下,發給客戶端一點東西,這就稱之為相應報文。

      報文分為了三個層級,也算是三個東西,起始行,首部,主體,這三個東西我們必須得知道他們到底是干啥的,這樣被面試官問到之后,至少能說點東西出來。

      起始行

      圖片中的起始行中,請求報文和響應報文的起始行是不一樣的,【GET /test/hi-there.txt HTTP/1.0】,

      GET 服務器通過 GET 方法獲取資源

      /test/hi-there.txt 這是資源 get 請求就是獲取這個資源

      HTTP1.0 就是指定的是 HTTP 協議版本為1.0

      響應報文的起始行主要是說明服務器的響應情況 【HTTP/1.0 ?200 ?OK】

      同樣的 HTTP1.0還是版本,而這個200表示的是狀態碼,OK 相應狀態沒問題。

      以上的就是起始行的所有內容介紹了,是不是很清晰很透徹了?那我們來看這個首部。

      首部

      大家有沒有注意到首部都是鍵值對的形式存在的,就是都是 key:value 這種形式的,如下,

      請求報文首部:

      Accept:text/*

      Accept-Language:en,fr

      響應報文首部:

      Content-Type:text/plain

      Content-length:19

      光這么看其實很沒意思是吧,看了半天還得靠自己的英文才知道是啥意思,我給大家找來個關于各種首部字段的說明。

      通用首部字段 HTTP1.1

      請求首部字段:

      響應首部字段:

      實體首部字段:

      其實這么多首部字段,說白了就是一句話?使用首部字段是為了給瀏覽器和服務器提供報文主體大小、所使用的語言、認證信息等內容。

      看就是這么簡單,方便,關于怎么去使用,本文先不做講解,不然這首部字段說起來,那就沒盡頭了,有興趣的小伙伴不妨可以手動去搜索一下把!

      主體

      大家可以回去看一下圖一,圖一中響應報文的主體,hi,I am message,實體的主體和報文的主體是一個可選的數據塊。與起始行和首部不同的是,主體中可包含文本或二進制數據,也可以為空如圖1中的請求報文主體,Content-type行說明了主體是一個純文本文檔,Content-length 說明了主體有19字節

      其實有些人也會這么理解,Http報文包括請求報文和響應報文兩大部分,其中請求報文由請求行(request line)、請求頭(header)、空行和請求體四個部分組成。而響應報文由狀態行、響應頭部、空行和響應體四個部分組成。

      給大家一幅圖,這個是我之前從別的地方看來的,感覺和這句話很搭配。

      關于HTTP報文我們先告一段落,我們繼續往下看!

      HTTP請求方式

      開發人員都知道,請求方式最常用的就是 GET 和 POST,但是實際上不止這兩種,我之前竟然一點不知道,內心表示 HTTP 你還是我認識的 HTTP 么?

      GET:請求指定的頁面信息,并返回實體主體。

      HEAD:類似于get請求,只不過返回的響應中沒有具體的內容,用于獲取報頭。

      POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。

      PUT:從客戶端向服務器傳送的數據取代指定的文檔的內容。

      DELETE:請求服務器刪除指定的頁面。

      后來當我看到之后,內心接受了,原來是這么回事,HTTP1.0 定義了三種請求方法:GET, POST 和 HEAD 方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

      關于 HTTP 請求就說這么多了,接下來就是 HTTP 狀態碼了,這三位數字描述了請求過程中所發生的情況。每個狀態碼的第一位數字用于描述狀態的一般類型(“成功”、“出錯”等)。

      HTTP狀態碼

      給大家送上兩個圖,之前在刷面試的時候無意間看到的圖,感覺特別的形象,幫助大家理解狀態碼有神奇的功效。

      301—永久移動。被請求的資源已被永久移動位置;

      302—請求的資源現在臨時從不同的 URI 響應請求;

      305—使用代理。被請求的資源必須通過指定的代理才能被訪問;

      307—臨時跳轉。被請求的資源在臨時從不同的URL響應請求;

      400—錯誤請求;

      402—需要付款。該狀態碼是為了將來可能的需求而預留的,用于一些數字貨幣或者是微支付;

      403—禁止訪問。服務器已經理解請求,但是拒絕執行它;

      404—找不到對象。請求失敗,資源不存在;

      406—不可接受的。請求的資源的內容特性無法滿足請求頭中的條件,因而無法生成響應實體;

      408—請求超時;

      409—沖突。由于和被請求的資源的當前狀態之間存在沖突,請求無法完成;

      410—遺失的。被請求的資源在服務器上已經不再可用,而且沒有任何已知的轉發地址;

      413—響應實體太大。服務器拒絕處理當前請求,請求超過服務器所能處理和允許的最大值。

      417—期望失敗。在請求頭 Expect 中指定的預期內容無法被服務器滿足;

      418—我是一個茶壺。超文本咖啡罐控制協議,但是并沒有被實際的HTTP服務器實現;

      420—方法失效。

      422—不可處理的實體。請求格式正確,但是由于含有語義錯誤,無法響應;

      500—服務器內部錯誤。服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理;

      這個狀態碼的圖是在網上找的,鏈接送上【http://www.sohu.com/a/278045231_120014184】

      以上就是我想給大家介紹的 HTTP,你到底是什么鬼,下一篇文章我將會給大家講述 HTTP1.0 和 HTTP1.1 的那些事!敬請期待呦!

      我是懿,一個正在被打擊卻努力前進的碼農。

      歡迎加入我們的知識星球,一起成長,交流經驗。加入方式,長按下方二維碼噢

      重溫HTTP,你到底做了什么?

      最后,我想重復一句話:選擇和一群優秀的人一起成長,你成長的速度絕對會不一樣!

      本文轉載自公眾號【純潔的微笑】

      HTTP TCP/IP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:利用 GitHub 從零開始搭建一個自己的專屬博客
      下一篇:快遞100查詢地圖軌跡API接口案例代碼
      相關文章
      国产成人亚洲毛片| 久久精品国产亚洲av麻豆| 亚洲精品美女久久久久| 久久久久久a亚洲欧洲aⅴ| 久久久久亚洲爆乳少妇无| 亚洲国产专区一区| 亚洲国产精品日韩| 国产成人亚洲影院在线观看| 国产日产亚洲系列最新| 久久久青草青青国产亚洲免观 | 亚洲国产一区二区a毛片| 亚洲av综合色区| 亚洲人成电影在在线观看网色| 亚洲福利在线视频| 久久久久久久亚洲Av无码| 久久亚洲AV成人无码软件| 亚洲精品美女在线观看播放| 亚洲日韩国产精品无码av| 亚洲人成网站在线观看播放青青| 亚洲av无码片在线观看| 最新亚洲卡一卡二卡三新区| 亚洲精品宾馆在线精品酒店| 国产亚洲精品美女| 亚洲性在线看高清h片| 亚洲午夜福利在线观看| 亚洲国产精品高清久久久| 亚洲AV日韩AV永久无码久久| 亚洲日本一区二区| 亚洲影院在线观看| 亚洲人色大成年网站在线观看| 日韩亚洲人成在线| 99亚洲精品卡2卡三卡4卡2卡| 在线91精品亚洲网站精品成人| 亚洲国产精品专区在线观看| 国产精品亚洲mnbav网站| 亚洲国产精品一区二区成人片国内 | 亚洲短视频男人的影院| 亚洲小视频在线播放| 亚洲国产综合精品| 亚洲精品一卡2卡3卡四卡乱码| 亚洲AV综合色区无码一二三区 |