成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

HTTP你可能還不知道的事。

Coding01 / 363人閱讀

摘要:是一個基于通信協(xié)議來傳遞數(shù)據(jù)的無狀態(tài)協(xié)議,且其是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議。以上所述可以理解成一個完整的請求及響應(yīng)過程,其中還涉及到解析域名三次握手等細節(jié),因為本篇文章主要介紹就不做詳細講解感興趣的同學(xué)可以去研究下。

HTTP是一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)的無狀態(tài)協(xié)議,且其是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議。說到應(yīng)用層,引一下《計算機網(wǎng)絡(luò)》里邊的內(nèi)容,在家沒有翻到這本書才想起來給忘帶了過來,真是后悔大學(xué)里沒有把這些基礎(chǔ)掌握扎實啊。(掌握一些基礎(chǔ)知識有百益而無一害,而且計算機方面知識都是互通的,不分到具體某個領(lǐng)域,就像是《計算機基礎(chǔ)》這本書,雖說沒有重要的知識要領(lǐng)掌握,但這是一本決定你層次高低的標桿,就是因為其內(nèi)容很多涉及到計算機底層原理的知識)TCP/IP網(wǎng)絡(luò)通信模型總共分為四層如下所示:

TCP/IP網(wǎng)絡(luò)通信模型
應(yīng)用層-Application layer(HTTP,F(xiàn)TP,DNS...)
傳輸層-Transport layer (TCP,UDP,RTP...)
網(wǎng)絡(luò)層-Internet layer (IP,ICMP,AKP...)
網(wǎng)絡(luò)接入層-Link layer(IEEE 802.1A,F(xiàn)DDI,Ethernet...)

而HTTP就是基于其中應(yīng)用層的一套協(xié)議,該層包括所有和應(yīng)用程序協(xié)同工作,利用基礎(chǔ)網(wǎng)絡(luò)交換應(yīng)用程序?qū)S玫臄?shù)據(jù)的協(xié)議(來自維基百科),例如表格中列舉的一樣,感興趣的同學(xué)可以自己研究下,本篇主要討論一下http協(xié)議。言歸正傳,HTTP協(xié)議工作在客戶端-服務(wù)端之間,瀏覽器作為HTTP客戶端通過URL向WEB服務(wù)器發(fā)送請求,服務(wù)器接收到來自客戶端(瀏覽器)的請求后會返回響應(yīng)信息,就是簡單的“請求-應(yīng)答”模式但是為什么說http協(xié)議是無狀態(tài)的?找了些資料大概是這樣解釋的:

協(xié)議對于事務(wù)處理沒有記憶能力

對同一個url請求沒有上下文關(guān)系

每次的請求都是獨立的,它的執(zhí)行情況和結(jié)果與前面的請求和之后的請求是無直接關(guān)系的,它不會受前面的請求應(yīng)答情況直接影響,也不會直接影響后面的請求應(yīng)答情況

服務(wù)器中沒有保存客戶端的狀態(tài),客戶端必須每次帶上自己的狀態(tài)去請求服務(wù)器

以上幾點中的關(guān)鍵詞已經(jīng)加粗,做重點理解,這時可以拋出一個最恰當?shù)膯栴}:既然HTTP是無狀態(tài)的,那keep-alive的值意義何在?其實keep-alive就是為了讓客戶端和服務(wù)端保持一種持久的連接聯(lián)系,這樣也是為了減少請求/響應(yīng)的開銷,提高性能,但這并不意味著請求頭中有了這個參數(shù),HTTP就不是無狀態(tài)的協(xié)議了,其本身仍是無狀態(tài)的協(xié)議,而且無狀態(tài)指的是在應(yīng)用層這個層次上服務(wù)器沒有保存客戶端的狀態(tài)信息,ok說到這里也是時候搞一搞cookiesession了,兩者都是客戶端和服務(wù)端通信的介質(zhì),簡而言之,cookie是客戶端的存儲空間,由瀏覽器來維持,其采用的是在客戶端保持狀態(tài)的方案,而session機制采用的是在服務(wù)器端保持狀態(tài)的方案。有些時候由于服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個標識,所以session機制可能需要借助于cookie機制來達到保存標識的目的。(近期做的一個項目讓我意識到了自己的知識窄區(qū)例如session/http相關(guān)知識,以前只是知道并沒有深入了解,個人覺得在某些專業(yè)領(lǐng)域還是要拋棄不求甚解的思想,有時候鉆個牛角尖也會有額外的收獲)重點來了,雖然cookie和session都可以保存狀態(tài),還有keep-alive持久連接,但是,但是,但是它們并沒有改變HTTP本身無狀態(tài)這一點,因為這些辦法只是在幫助客戶端和服務(wù)端建立一套更好的協(xié)作通信關(guān)系,以提高通信和開發(fā)效率。

HTTP主要通過URI來傳輸數(shù)據(jù)和建立來建立連接,這里的URI(Uniform Resource Identifier)指的是統(tǒng)一資源標識符,不同于URL(Uniform Resource Locator),其指的是統(tǒng)一資源定位符,兩者的關(guān)系可以理解為URL是一個特殊類型且具體的URI,一個URL里包含了用于查找某個資源的足夠信息。就隨便拿一個地址舉例子來說:

http://www.google.com:7001/signContract?apptoken=jksldjflkdjslkfjds&contractId=110&orderId=911#user

從這個URL我們可以看出里邊的參數(shù)包含一下幾項:

協(xié)議部分:‘http:’這代表網(wǎng)頁使用的是http協(xié)議,在‘http’后面的‘//’為分割符,此外還有HTTPS、FTP協(xié)議,BTW,一個域名下不建議同時摻雜http和https的鏈接,這樣會導(dǎo)致出現(xiàn)混合內(nèi)容,對網(wǎng)站安全造成威脅,例如之前神策埋點的鏈接就造成類似問題。具體關(guān)于混合內(nèi)容涉及到we端安全方面的知識,感興趣的同學(xué)可以去了解下,我也是無意中一個朋友問到這個問題才去了解的,多了解下有害無益嘛。

域名部分:該地址的域名為“www.google.com”,一個URL中也可以使用IP地址作為域名使用,比如使用這個IP也可以打開百度首頁(渣渣): 202.108.22.5,至于為什么,感興趣的同學(xué)可以去了解下DNS(Domain Name System)。

端口:“7001”域名后面冒號(:)緊跟著的是端口,可以省略,如果省略的話會采用瀏覽器的默認端口即80。

目錄路徑:從端口號開始的第一個“/”開始到最后一個“/”,這之間是目錄部分,例如“signContract”。

參數(shù)部分:從“?”開始到“#”為止之間的部分是參數(shù),多個參數(shù)用“&”連接,此例中的參數(shù)是
apptoken=jksldjflkdjslkfjds&contractId=110&orderId=911

錨:從“#”開始到最后是錨部分,小融租項目里沒有使用到錨點部分,這里示例只做講解。參數(shù)可省略。

至于http狀態(tài)碼、請求及響應(yīng)相關(guān)的東西就不做詳解了,這里個人覺得有必要再梳理一下http的工作原理。首先客戶端向服務(wù)器發(fā)送一個請求報文,請求報文中包含請求的方法、url、協(xié)議版本、請求頭部、請求數(shù)據(jù),服務(wù)器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。以下是http請求響應(yīng)的步驟:

客戶端連接到web服務(wù)器:通常是從瀏覽器地址欄進入,建立一個TCP套接字連接,例如:“https://www.google.com/

發(fā)送HTTP請求:通過TCP套接字,客戶端向web服務(wù)器發(fā)送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成。

服務(wù)器接受請求并返回http響應(yīng):web服務(wù)器解析請求,定位請求資源。返回給客戶端讀取。

釋放連接:若connectionclose,則服務(wù)器主動關(guān)閉TCP連接,客戶端被動關(guān)閉連接,釋放TCP連接;若connectionkeep-alive,則該連接會保持一段時間。

客戶端瀏覽器解析HTML內(nèi)容:客戶端瀏覽器首先解析狀態(tài)行,查看表明請求是否成功的狀態(tài)代碼。然后解析響應(yīng)頭,響應(yīng)頭告知一下為若干字節(jié)的HTML文檔和文檔的字符集??蛻舳藶g覽器讀取響應(yīng)數(shù)據(jù)HTML,并在瀏覽器渲染。

以上所述可以理解成一個完整的請求及響應(yīng)過程,其中還涉及到DNS解析域名、TCP三次握手等細節(jié),因為本篇文章主要介紹HTTP就不做詳細講解(感興趣的同學(xué)可以去研究下)。關(guān)于HTTP相關(guān)知識點是我最近接觸到的,所以總結(jié)一下加深自己的印象,文中若有歧義或是不正確的地方還望不吝指正,不過要想把HTTP整個吃透還相差甚遠,畢竟上周在公交車上看到個人拿了一本《圖解HTTP》,想想真的是學(xué)海無涯,就如那句hello-world所說,打開了新世界的大門,而且這個新world還有很多東西需要探索,這時就要告訴自己:Keep going and never stop !

在這里非常感謝維基百科以及以下鏈接作者的解惑,向大佬看齊【敬禮!】

http://www.jianshu.com/p/80e2...

http://www.cnblogs.com/bellko...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88373.html

相關(guān)文章

  • 2016年這9大開發(fā)趨勢預(yù)測還不知道就out了

    摘要:開發(fā)趨勢三戴爾合并將是一個災(zāi)難大規(guī)模并購幾乎從來沒有真正解決實現(xiàn),所以通過預(yù)測曲線。戴爾為支付一筆龐大的收購資金,但是這并不能解決真正問題,戰(zhàn)略再也不能回頭了。 從容器到NoSQL再到Spark,這些趨勢在可預(yù)計的2016年還會持續(xù)下去。我的預(yù)測主要針對大數(shù)據(jù)范疇,但我試圖嘗試突破自己,僅供參考。 開發(fā)趨勢一:容器將統(tǒng)治世界 Docker將繼續(xù)發(fā)展,并獲得安全特性,而且添加各種形式的治...

    heartFollower 評論0 收藏0
  • 段念:永遠選擇自己想要的

    摘要:華為說應(yīng)屆生招聘已經(jīng)結(jié)束了。我進入華為之后,要定崗,一般大家都愿意去市場部,因為華為最強的是市場部。我非常驚訝,因為為了避免這樣的事情,在簡歷里我只字未提在華為的測試經(jīng)歷。 非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/article/72226 段念,現(xiàn)任豆瓣工程副總裁,曾在Google,樂元互動,OpenTV等公司...

    blastz 評論0 收藏0
  • 一次失敗的互聯(lián)網(wǎng)創(chuàng)業(yè)經(jīng)歷

    摘要:離創(chuàng)業(yè)結(jié)束已經(jīng)有一段時間,在剛剛結(jié)束的時候,就想復(fù)盤下這段經(jīng)歷,但怕當時的自己可能不夠客觀,就想著調(diào)整一段時間后,再來記錄,結(jié)果一拖到現(xiàn)在。別光想著成功,如果失敗了,你是否能接受補充一點,很多大廠不喜歡員工有創(chuàng)業(yè)經(jīng)歷。離創(chuàng)業(yè)結(jié)束已經(jīng)有一段時間,在剛剛結(jié)束的時候,就想復(fù)盤下這段經(jīng)歷,但怕當時的自己可能不夠客觀,就想著調(diào)整一段時間后,再來記錄,結(jié)果一拖到現(xiàn)在。前年11月份這個時候,沒經(jīng)過多少心里...

    Tecode 評論0 收藏0
  • webpack 大法好 ---- what`s webpack?(前言)

    摘要:原始的開發(fā)模式已經(jīng)滿足不了呈指數(shù)增長的需求了。它承擔起了模塊管理這一重要角色。是個前端小菜鳥,接觸前端不到兩年時間,去年畢業(yè)正式參加工作。目前就職于杭州邊鋒網(wǎng)絡(luò)神盾局就是這么霸氣。 對于剛進入前端領(lǐng)域的人,特別是還處于小白階段的初學(xué)者來說,很多人對 webpack 并不熟知。就像 Light (對,我就是 Light)一樣,剛接觸前端,最關(guān)心的就是樣式和簡單的交互了。那時候怎么會知道像...

    wwolf 評論0 收藏0

發(fā)表評論

0條評論

Coding01

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<