HTTP有哪些優點?又有哪些缺點?


簡單、靈活、易於擴展

首先,HTTP 最重要也是最突出的優點是“簡單、靈活、易於擴展”。

應用廣泛、環境成熟

HTTP 協議的另一大優點是“應用廣泛”,軟硬件環境都非常成熟。

無狀態

看過了兩個優點,我們再來看看一把“雙刃劍”,也就是上一講中說到的“無狀態”,它對於 HTTP 來說既是優點也是缺點。

“無狀態”有什么好處呢?

因為服務器沒有“記憶能力”,所以就不需要額外的資源來記錄狀態信息,不僅實現上會簡單一些,而且還能減輕服務器的負擔,能夠把更多的 CPU 和內存用來對外提供服務。

而且,“無狀態”也表示服務器都是相同的,沒有“狀態”的差異,所以可以很容易地組成集群,讓負載均衡把請求轉發到任意一台服務器,不會因為狀態不一致導致處理出錯,使用“堆機器”的“笨辦法”輕松實現高並發高可用。

那么,“無狀態”又有什么壞處呢?

既然服務器沒有“記憶能力”,它就無法支持需要連續多個步驟的“事務”操作。例如電商購物,首先要登錄,然后添加購物車,再下單、結算、支付,這一系列操作都需要知道用戶的身份才行,但“無狀態”服務器是不知道這些請求是相互關聯的,每次都得問一遍身份信息,不僅麻煩,而且還增加了不必要的數據傳輸量。

所以,HTTP 協議最好是既“無狀態”又“有狀態”,不過還真有“魚和熊掌”兩者兼得這樣的好事,這就是“小甜餅”Cookie 技術(后面會學到)。

明文

HTTP 協議里還有一把優缺點一體的“雙刃劍”,就是明文傳輸。

“明文”意思就是協議里的報文(准確地說是 header 部分)不使用二進制數據,而是用簡單可閱讀的文本形式。

對比 TCP、UDP 這樣的二進制協議,它的優點顯而易見,不需要借助任何外部工具,用瀏覽器、Wireshark 或者 tcpdump 抓包后,直接用肉眼就可以很容易地查看或者修改,為我們的開發調試工作帶來極大的便利。

當然,明文的缺點也是一樣顯而易見,HTTP 報文的所有信息都會暴露在“光天化日之下”,在漫長的傳輸鏈路的每一個環節上都毫無隱私可言,不懷好意的人只要侵入了這個鏈路里的某個設備,簡單地“旁路”一下流量,就可以實現對通信的窺視。

不安全

與“明文”缺點相關但不完全等同的另一個缺點是“不安全”。

安全有很多的方面,明文只是“機密”方面的一個缺點,在“身份認證”和“完整性校驗”這兩方面 HTTP 也是欠缺的。

“身份認證”簡單來說就是“怎么證明你就是你”。在現實生活中比較好辦,你可以拿出身份證、駕照或者護照,上面有照片和權威機構的蓋章,能夠證明你的身份。

至此,結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM