有關HTTP的粗讀

2021-09-07 09:57:52 字數 2039 閱讀 4861

去年粗讀《http權威指南》和《**http》還有部分《tcp/ip詳解》後,覺得心裡明亮不少,web的大門又向我敞開了一些?。如今回想起來說到粗讀,對我的形容還是很準確的,因為到現在,我基本忘了看到了什麼,學到了什麼。但是又覺得,我明明都看了呀。所以我也只能從乙個普通程式設計師的角度來敘述,在我的前端開發到伺服器和服務端**的幾方面流程中,盡可能多的了解http會帶給我們個人什麼好處,也鼓勵愛技術的新司機更多的了解http, 這是我們做應用層面的研發人必備的素養。

接下來我將從請求發出到拿到結果來簡單敘述,這裡敘述的僅僅是我們開發中每天能遇到的整體流程,沒提**,沒有閘道器,沒有ssl, 沒有快取,沒有認證,沒有報文詳解。細節的部分我無法分享過多,畢竟兩本http的書籍超過一千頁,超級推薦。

既然打算從實際工作的角度來談,那還是要說一下從我們的前端頁面或者是前端ajax請求如何拿到響應。

在我們輸入**或者發起ajax http請求時, 由於http協議基於tcp/ip協議簇, 要建立tcp通訊通道時, ip位址和埠號是必要的。 如何通過網域名稱拿到ip位址呢?這就通過dns(domain name system)網域名稱系統。網域名稱系統是誰的,網域名稱系統在哪兒呢?  像bat,sina這種大公司,一級網域名稱dns當然是自己搭建的了,根網域名稱.com .cn .net此類都是在全世界13臺根伺服器上進行解析的.

拋開自己搭建dns的大公司不講,再來看乙個小站點,可以看到dns是hichina,我們在看hichina的註冊商是fastdomain,乙個網域名稱,主機,dns服務商,他們負責這個小站點的dns。

有了dns,就拿到我們網域名稱的ip位址,一般正式網域名稱都解析到你的80埠下,網域名稱解析不是別埠,預設使用80埠。如我們部署在非80埠下,那必要帶上埠號來訪問,埠號的解析是瀏覽器的事情。這是建立tcp連線的必要條件。http協議基於tcp/ip協議簇,在通訊層次化的模型當中,不同於osi參考模型,tcp/ip一般分為四層來描述,應用層,傳輸層,網路層,資料鏈路層,這四層的形容方式在各種資料中有所不同,但所表達的意義是相同的。http就處在應用層,tcp處在傳輸層  , ip則處在網路層。由此我們也了解了tcp連線基於ip協議,需要ip位址+tcp埠,http over tcp over ip。在http1.0 , 1.1版本中通常連線時持久和並行的。三次握手和tcp如何保證通訊可靠在這裡就不需要我多做敘述了。理解這些對於我們理解socket,websocket很有幫助。

就我個人理解,在使用http通訊的過程中,我們基於各種協議的支撐,就好比我們出去旅遊, 經過了三種途徑高速公路=》飛機航線=》海上航線最終抵達目的地,再經過海上航線=》飛機航線=》高速公路又回到家裡。在http中,所有報文從上游流向下游,也就是說客戶端request的時候,客戶端作為上游。當客戶端response時,則伺服器作為上游。沒有從下游到上游的概念。所以總體來講就是http報文通過流的形式在建立好的tcp通道按順序傳輸,tcp將資料流分成小塊,封裝到ip分組中,這是我們常說的資料報(網路傳輸的最小單位)。在這一系列過程中,會增加tcp報文和ip報文,當然這些內容,對於我們http層面上的開發人員來講並不重要。

接下來通過資料鏈路到達目的地。到達目的地之後,還要通過ip=>tcp=》http的過程將報文給到http伺服器,比如iis等。畢竟我們的http伺服器只認識http協議層面的報文不是嗎。有關http報文的詳細內容想必大家在f12的時候經常看到 。

我認為目前能給我個人帶來的好處,有且不僅限於如下幾條,可能像資料結構是為了奠定基礎吧:

一. 前後端分離快速開發,異常快速定位

二. 更好的理解socket和websocket,協議轉換

三. 請求分發複雜均衡等伺服器架構

四. 優化應用的網路傳輸

五. web安全

有關Http的介紹

http使用一種基於訊息的模型。該協議基本不需要連線,雖然它使用有狀態的tcp協議作為它的傳輸機制,但每次請求和響應都自動完成,並可能使用不同的tcp連線。例子 get http 1.1 user agent mozilla 5.0 windows nt 6.1 win64 x64 rv 60.0 ...

粗讀 《誰動了我的乳酪》,反思

內容簡介 未來,變化是唯一的不變。不改變,就會被瞬息萬變的未來所淘汰。懂得隨機應變並享受變化的你,才是未來最青睞的人。在變化面前,成長中的你應當如何做出正確的選擇?是像匆匆一樣取下掛在脖子上的鞋子迅速出發?還是像嗅嗅那樣經常能嗅出乳酪變質的味道?或者像唧唧發現自身的問題之後敢於自嘲,勇敢面對變化的現...

有關HTTP協議 TCP和UDP協議整理

1 http協議定義了瀏覽器怎麼向伺服器請求文件,以及怎麼把文件傳送給瀏覽器。從層級的角度看,http協議是面向事務的應用層協議。http報文通常使用tcp連線傳送。2 http使用了面向連線的tcp作為傳輸層協議,保證了資料的可靠傳輸。http協議是無連線的,通訊的雙發在交換http報文之前不需要...