1.tcp協議對應於傳輸層,而http協議對應於應用層,從本質上來說,二者沒有可比性。
2.http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服器的連線通道,當本次請求需要的資料完畢後,http會立即將tcp連線斷開,這個過程是很短的。所以http連線是一種短連線,是一種無狀態的連線。
所謂的無狀態,是指瀏覽器每次向伺服器發起請求的時候,不是通過乙個連線,而是每次都建立乙個新的連線。如果是乙個連線的話,伺服器程序中就能保持住這個連線並且在記憶體中記住一些資訊狀態。而每次請求結束後,連線就關閉,相關的內容就釋放了,所以記不住任何狀態,成為無狀態連線。
那麼問題來了:每次建立新連線不耗費效能嗎?
從http/1.1起,預設都開啟了keep-alive,保持連線特性。也就是說,在開啟乙個網頁之後,客戶端與伺服器之間的傳輸資料的tcp連線不馬上關閉,客戶端再次訪問時會使用,但是keep-alive保持時間不是有限的,超時之後還是會斷開,所以我們還把其看做是每次連線完成後就會關閉。後來,通過session, cookie等相關技術,也能保持一些使用者的狀態。但是還是每次都使用乙個連線,依然是無狀態連線。
為什麼http是無狀態的短連線,而tcp是有狀態的長連線?http不是建立在tcp的基礎上嗎,為什麼還能是短連線?
http就是在每次請求完成後就把tcp連線關了,所以是短連線。而我們直接通過socket程式設計使用tcp協議的時候,因為我們自己可以通過**區控制什麼時候開啟連線什麼時候關閉連線,只要我們不通過**把連線關閉,這個連線就會在客戶端和服務端的程序中一直存在,相關狀態資料會一直儲存著。
HTTP協議與TCP協議
http是乙個屬於應用層的物件導向的協議,由於其簡捷 快速的方式,適用於分布式超 資訊系統。http協議工作於客戶端 服務端架構為上。超文字傳輸協議 http,hypertext transfer protocol 是網際網路上應用最為廣泛的一種網路協議。它可以使瀏覽器更加高效,使網路傳輸減少,它不...
Http協議與TCP協議簡單理解
在c 編寫 很多時候會遇到http協議或者tcp協議,這裡做乙個簡單的理解。tcp協議對應於傳輸層,而http協議對應於應用層 從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服...
Http協議與TCP協議簡單理解
在c 編寫 很多時候會遇到http協議或者tcp協議,這裡做乙個簡單的理解。tcp協議對應於傳輸層,而http協議對應於應用層,從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服...