一周或兩周一更美好的計畫是用來打破的,由於前段眼疾的情況已經有三周沒跟大家分享些乾貨。身體是革命的本錢,還望老碼猿們在加班的時候也要注意身體健康。
作為一位稱職的碼農,在這三周養眼的時間裡也不忘學習,系統的去了解了下我們大家都熟悉而有陌生的http協議
我相信在我們碼農當中還有很大一部分web應用程式開發者並不了解支撐web基礎的http協議
。接下來我們從以下幾點去熟悉了解http協議
http全稱為hypertext transfer protocol超文字傳輸協議(超文字轉移協議)。
80年代http的最初是致力於全世界的研究者們進行知識共享。隨後的一段時間的發展,一級網景通訊公司與微軟的瀏覽器大戰是得http標準協議逐步被確立。目前主流的http協議版本是2023年1月公布的http/1.1 版本。為了讓大家深刻回憶下http/1.1 在我們web程式中的存在請看上期spring boot 啟動原理解析(二) tomcat 啟動詳解中的一圖
在了解http如何進行通訊時有幾個tcp/ipd協議族是需要進行了解的:
1. 應用層:決定了向使用者提**用服務時通訊的活動
2. 傳輸層:對上層應用層提供出於網路連線中的兩台計算機之間的資料傳輸
3. 網路層:處理在網路上流動的資料報
4. 資料鏈路層:處理連線網路的硬體部分
複製**
http協議是利用tcp/ip協議族進行網路通訊,會通過分層順序與對方進行通訊。
我們以乙個網路請求為例子,首先作為傳送端的客戶端在應用層(http協議)發起了乙個web頁面的http請求。接著傳輸層(tcp協議)把應用層接收到的資料(http請求報文)進行分割,並在各個報文上打上標記序號及埠號後**給網路層。網路層(ip協議)增加接收目的地的mac位址後**給鏈路層,最後有鏈路層對外部網路傳送請求報文。接收端的伺服器在鏈路層收到資料,按序向上層傳送,一直到應用層。請求的響應過程則以伺服器端為起點傳送資料一直到客戶端接收到傳輸的資料。這樣乙個完整的http請求就完成了。
傳送端在層與層之間的資料傳輸時,每經過一層時必定會被打上乙個該層所屬的首部資訊。反之,接收端在層與層之間傳輸資料時,沒經過一層時都會把對應的首部資訊刪了。
從上文的http通訊解讀過程我們知道沒有任環節進行通訊狀態的儲存,故此http是一種無狀態協議。為實現儲存通訊狀態功能則需引入cookie技術。
狀態碼描述的是伺服器返回的請求結果。狀態碼的類別有
2xx的響應結果表明請求被正常處理了。
3xx重定向 響應結果表明瀏覽器需要執行某些特殊的處理以正確處理請求。301 moved permannetly
永久性重定向,請求的資源已被分配了新的uri;302 found
臨時性重定向,請求的資源已被分配了新的uri;
4xx客戶端錯誤 表明客戶端是發生錯誤原因所在。400 bad request
請求報文中存在錯誤;403 forbidden
伺服器拒絕請求資源的訪問;404
伺服器上未找到請求資源。
5xx伺服器錯誤 表明伺服器本身發生錯誤
http + 加密 + 認證 + 完整性保護 = https
事物皆具兩面性,http本身也有不足之處
如果在http協議通訊過程中使用未加密的明文,比如web頁面進行登入操作時就會面臨被竊聽以及私密資訊暴露的風險;對於http來說,伺服器跟客戶端都無法確認通訊方,因此很有可能並不是和原本預想的通訊方在實際的通訊。
為了統一的解決上述問題,需要在http上再加入加密處理和認證等機制。通常的將加了加密及認證機制的http稱為http(http secret)
。
你對程式設計感興趣嗎?
對,就這麼直接。可能你會脫口而出 當然,我會為程式設計而通宵達旦並且感到興奮,每當我解決乙個困擾很久的問題的時候,我心裡感受到的成就感是無法言語的。諸如此類,你會跟我說一長篇你如何如何喜歡程式設計。然而,你真的喜歡程式設計嗎?當你擁有了足夠多的錢,生活無憂的時候,你是否依然會一直程式設計下去呢?我想...
你對程式設計感興趣嗎?
對,就這麼直接。可能你會脫口而出 當然,我會為程式設計而通宵達旦並且感到興奮,每當我解決乙個困擾很久的問題的時候,我心裡感受到的成就感是無法言語的。諸如此類,你會跟我說一長篇你如何如何喜歡程式設計。然而,你真的喜歡程式設計嗎?當你擁有了足夠多的錢,生活無憂的時候,你是否依然會一直程式設計下去呢?我想...
感興趣區域ROI
roi在目前的理解看來就是擷取影象的一部分進行想要的操作,比如要在一張圖的任意地方嵌入另一張圖,首先要做的事就是把要嵌入的所覆蓋的這塊地方圈出來,然後把要嵌入的放到這個框框裡就行了 建立roi的兩種方法 1 imgroi image rect x,y,width,height 直接指定一塊矩形,選出...