揭開HTTP網路協議神秘面紗系列 一)

2021-07-27 10:35:46 字數 3254 閱讀 6351

超文字傳輸協議(http,hypertext transfer protocol)是網際網路上應用最為廣泛的一種網路協議。所有的www檔案都必須遵守這個標準。

2015-09-06 10:54收藏

分享

1.了解web及網路基礎

tcp/ip協議族按層次可以分為下面四層:

應用層:決定了向使用者提**用服務時通訊的活動,tcp/ip協議族內預存了各類通用的應用服務,比如:ftp(檔案傳輸協議)和dns(網域名稱系統)服務就是其中兩類,http協議也處於該層。

傳輸層:對上層應用,提供處於網路連線中的兩台計算機之間的資料傳輸。在傳輸層有兩個性質不同的協議:tcp(傳輸控制協議)和udp(使用者資料報協議)

網路層:用來處理在網路上流動的資料報,資料報是網路的傳輸最小資料單位,該層規定了通過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把資料報傳送給對方。與對方計算機之間通過多台計算機或網路裝置進行傳輸時,網路層所起的作用就是在眾多的選項內選擇一條傳輸路線。

鏈路層:用來處理連線網路的硬體部分,包括控制作業系統,硬體的裝置驅動,nic,及光纖等物理可見部分(還包括聯結器等一切傳輸媒介),硬體上的範疇均在鏈路層的作用範圍之內。

利用tcp/ip協議族進行網路通訊時,會通過分層順序與對方進行通訊,傳送端從應用層往下走,接收端則往應用層往上走,就拿傳送端的客戶端在應用層(http協議)發出乙個想看某個web頁面的htpp請求為例,如下圖示:

傳送端在層與層之間傳輸資料時,每經過一層時必定會被打上乙個該層所屬的首部資訊,反之,接收端在層與層傳輸資料時,每經過一層時會把對應的首部消去,這種把資料資訊包裝起來的做法稱為封裝。

負責傳輸的ip協議:作用是把各種資料報傳送給對方,其指明了節點被分配到的位址,而mac位址是指網絡卡所屬的固定位址,ip間的通訊依賴mac位址,在網路上,通訊的雙方在同一區域網內的情況較少,通常是經過多台計算機和網路裝置中轉才能連線到對方,在中轉時,會利用下一站中轉裝置的mac位址來搜尋下乙個中轉目標,這時,會採用arp協議(arp是一種用以解析位址的協議,根據通訊方的ip位址就可以反查出對應的mac位址)。例子如圖:

tcp協議為了準確無誤的將資料送達目標處,tcp協議採用了三次握手策略,其握手過程中用了三個標記:flag-syn和ack,該過程如圖:

注意:若在握手過程中某個階段莫名中斷,tcp協議會再次以相同的順序傳送相同的資料報。*

各種協議與http協議的關係就如圖所示:

uri用字元標識某一網際網路資源,而url表示資源的地點(網際網路上所處的位置),故url是uri的子集。

uri格式通常包括以下幾個:

登陸資訊

伺服器位址(ip或網域名稱)

伺服器端口號

帶層次的檔案路徑

查詢字串

片段標識

uri格式例子如圖:

黑色:協議方案名

紅色:登陸資訊(認證)

淺藍色:伺服器端口號

紫色:帶層次的檔案路徑

深藍色:查詢字串

深綠色:片段識別符號

2.簡單的http協議

請求報文:是由請求方法,請求uri,協議版本,可選的請求首部欄位和內容實體構成的。

響應報文:基本上由協議版本,狀態碼(表示請求成功或失敗的數字**),用以解釋狀態碼的原因短語,可選的響應首部字段以及實體主體構成。

告知伺服器意圖的http方法有以下幾個:

- get:獲取資源,如果請求的資源是文字,那就保持原樣返回,如果是像cgi那樣的程式,則返回經過執行後的輸出結果。

- post:主要用來傳輸實體的主體,而不是獲取響應的主體內容。

- put:傳輸檔案,要求請求報文中包含檔案內容,但是http/1.1put方法自身不帶驗證機制,任何人都可以上傳檔案,存在安全性問題,故一般有開發此功能的web**都會配合web應用程式的驗證機制,如:rest機制。

head:不獲取返回報文主體部分,而是獲取其uri的有效性及資源更新的日期時間等首部字段。

delete:用來刪除檔案,但是http/1.1delete方法自身也不帶驗證機制,任何人都可以刪除檔案,存在安全性問題,故一般有開發此功能的web**都會配合web應用程式的驗證機制,如:rest機制。

options:用來查詢針對請求uri指定的資源。

trace:在用其傳送請求時,在max-forwards首部欄位中填入數值,每經過乙個伺服器端就將該數字減1,當數值剛好減到0時,就停止繼續傳輸,最後接收到請求的伺服器端則返回狀態碼200ok的響應,因此可以查詢傳送出去的請求是怎樣被加工修改的。

connect:要求在與**伺服器通訊時建立隧道,實現用隧道協議進行tcp通訊,主要使用ssl和tls協議把通訊內容加密後經網路隧道傳輸。

http持久連線:keep-alive(持久連線)的特點是,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態,好處在於減少了tcp連線的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載,也減少了開銷的那部分時間,是http請求和響應能夠更早的結束。

管管線化技術可以讓客戶端同時並行傳送多個請求,而不需要乙個接乙個地等待響應。

http是無狀態協議優勢在於它減少伺服器的cpu及記憶體資源的消耗,但它不能保持之前的狀態進行請求處理,這樣需要在登陸認證的web頁面中那個,每次請求 跳轉頁面都需要再次認證登陸或附上請求認證引數,因此為了解決這個問題,可以引用cookie技術,該過程如圖:

揭開信貸神秘面紗

貸款信用保險是指保險人對銀行或其他金融機構與企業之間的借貸合同進行擔保,以承保借款人信譽風險的保險。在貸款信用保險中,貸款方 即債權人 是投保人。但保單簽發後,貸款方即成為被保險人。當企業無法歸還貸款時,債權人可以從保險那裡獲得補償。貸款人在獲得保險人的補償後,必須將債權轉讓給保險人,由保險人向借款...

揭開Zookeeper神秘面紗

zookeeper是乙個開源的分布式的,為分布式應用提供協調服務的apache專案。hadoop 和hbase的重要元件。它是乙個為分布式應用 提供一致性服務 的軟體,提供的功能包括 配置維護 網域名稱服務 分布式同步 組服務 等。1 zookeeper 乙個領導者 leader 多個跟隨者 fol...

揭開MVC的神秘面紗

最近參加的高校平台專案中涉及到了 mvc。mvc,有人說是一種設計模式,也有人說是使用者介面層設計架構。那麼 mvc到底是什麼呢?今天我們一起來學習一下。mvc,即model view controller,把乙個應用的輸入 處理 輸出流程按照 model view controller 的方式進行...