怎樣學習 HTTP 協議?

想學 Node.js , 發現需要足夠 http 的基礎:

http://weibo.com/1651843872/xxzdihHzy

網上給出的資料似乎與此關聯不是非常緊密:

http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

為了實用, 應該怎樣深入 http 協議? 具體什麼方面?

相關問題: 怎麼樣才算熟悉HTTP協議?

http://www.zhihu.com/question/19910495


去看rfc嘛,那是標準。

http1.1是rfc2616,在這 http://www.ietf.org/rfc/rfc2616.txt

rfc是有些抽象晦澀的,學究氣比較重。

不過或許你需要看的不是rfc這麼正式的東西,假設你熟悉socket的話,裝個抓包工具玩玩,寫寫腳本(shell,python,php),玩玩可以查看http協議頭的瀏覽器插件,配置配置apache或nginx,先跟那些名詞混個臉熟,再上網多看看博客,在用中學可能比較實際。


寫個基於 gae 的翻X軟體,邊寫邊把《HTTP權威指南》翻一翻。

注意,不要搞 socket 轉發那一套。其實也沒法搞 socket 轉發那一套,因為 gae 不允許。

所以基於 gae 的話,就需要把傳來的 http 包解開,解開之後,再通過 gae 的 http_fetch 介面,帶上解開得到的 http 屬性去目標站獲取數據。

這個解包的過程,應該很有助於理解 http 的。


了解一下HTTP協議的處理流程吧,沒壞處的http://t.cn/RZlABkl


HTTP權威指南 http://book.douban.com/subject/10746113/


如果是希望學習本質上的知識以及背後的原理,可以去看rfc(當然這還是不夠的);如果是為了面試或者普通的工作需要。這裡假設題主是為了後者,那麼建議先看看以下的幾篇博文:

我覺得學習任何一門知識,都需要系統化,而不是碎片。但是現如今互聯網上的信息過於碎片化,感覺很多都是泛泛而談,或者寫得很好但是卻不全面。於是我有如下的總結。供你參考:

一、閱讀好的博客

比如阮一峰老師的

  1. 互聯網協議入門(一) - 阮一峰的網路日誌(這個還有第二篇)、
  2. 以及http協議入門、
  3. HTTPS 升級指南 - 阮一峰的網路日誌。

二、看書

看一本好書永遠是高效的學習方法,這裡推薦幾本經典的作品。

這幾本書可以在這裡下載到電子版本:http學習資料 | http知識積累以及相關的實踐 深度筆記

  1. HTTP權威指南
  2. 圖解HTTP
  3. 圖解TCP IP
  4. TCP-IP詳解

電子書下載傳送門

三、別人的筆記

看別人總結好的知識,有利於自己快速學習,快速吸收。省去了去網上大海撈針,這裡看一點、那裡看一點的成本。零零散散的知識,碎片化的學習需要改變。我們需要的是系統的學習,而且可以定期複習的模式。那麼,看別人的筆記就是一個不錯的方法。

這裡我在gayhub上發現了一個比較好的,

《HTTP權威指南》每章的知識點總結! 在gayhub上有將進400顆星

以及深度筆記上的一篇比較好的筆記:

http知識積累以及相關的實踐 深度筆記

四、實踐出真知 

開發工作過程中,多使用F12,查看chrome自帶的控制台。 分析每次請求和響應,每一行請求頭,每一行響應頭,每一個響應體、請求體。它們的具體意義是什麼,如果能做到知其然,我認為對於普通的工作就已經足夠了。

我只是一枚小白,所以沒有上面的回答那麼高大上。

以上..


&. 這本書講了http的方方面面.

我覺得http最有意思是 1, 連接管理 2, cache 3, https.

最近我在我們團隊還分享http.如下:

Http協議.swf_免費高速下載


如果你要開發瀏覽器開發webserver,那就看RFC吧。

其他情況看看《HTTP權威指南》然後再打開chrome F12看看基本就搞定了。


自己總結的一篇最基本的HTTP協議

開發之前應該了解的HTTP - CSDN博客blog.csdn.net

這樣學習就夠了


如果你對TCP、IP等底層協議有了一些了解,那麼看《HTTP權威指南》把,介紹了HTTP的方方面面,很詳細,但需要慢慢理解。


裝一個firebug,多寫一些小測試程序,很快就熟悉了。


打開chrome F12 控制台點擊Network,自己用node的http模塊寫個簡單的程序監聽AJAX請求,解析報文,處理POST或者GET請求,配合一些抓包工具如fiddler,基本上可以熟悉http啥回事怎麼操作的,然後一步步往更加底層的協議如TCP/IP啊等等深入去學習,感覺這種學習曲線會容易接受一點。一開始直接看權威指南,有點難啃


推薦閱讀:

大家在工作中那些地方用到了http協議的細節?
golang net/http的小問題?
想寫個web伺服器,用Go語言實現,需要有哪些前提知識呢?
怎麼在Linux操作系統搭建HTTP伺服器?
這種情況下,304還是200更好?

TAG:Nodejs | 網路傳輸協議 | HTTP |