關於HTTP Keep-Alive

來源:互聯網
上載者:User
只知道他可以保持長串連,有個小小的疑問,他是如何辨別是否是同個使用者的,是IP嗎? 如果是的話哪整區域網路都可以用得到這個長連結對嗎?

回複內容:

只知道他可以保持長串連,有個小小的疑問,他是如何辨別是否是同個使用者的,是IP嗎? 如果是的話哪整區域網路都可以用得到這個長連結對嗎?

tcp協議中包含四個要素源地址 源連接埠號碼 目的地址 目的連接埠號碼,雙方從建立通訊開始,這四項就是固定的,假設http伺服器是監聽80連接埠,那麼對於用戶端瀏覽器來說,這四要素就是瀏覽器ip 瀏覽器作業系統給當前請求分配的socket控制代碼連接埠號碼 web伺服器位址 80。瀏覽器在建立socket前,需要先向作業系統申請一個socket控制代碼,申請成功後就得到一個本地的socket控制代碼連接埠號碼,然後和伺服器通過三向交握建立TCP串連。建立串連後,在伺服器端也會有一個對應的socket控制代碼。同時在TCP層,每個TCP請求都還有一個seq編號,在TCP握手的時候產生的。雙方進行通訊的時候,網卡中得到的資料包中解析出這個seq號,就知道是對應哪個socket控制代碼了。

首先,串連在建立的時候就已經確立了串連的雙方,也只有位於已經確立的串連兩端的使用者可以使用這個長串連。
你在電腦上開啟瀏覽器串連網站,在確立串連的過程中,是你的電腦與網站伺服器建立的串連,在串連保持的過程中,其他電腦是沒法借用你這個串連的。

串連的形成是終端(你的電腦、網站的伺服器)通過 socket 連接埠通訊端形成的映射關係,判斷和識別這個串連,也是通過對應主機的連接埠來實現的。

session.

長連結、短連結指的是 TCP 層的事情。HTTP層的使用者識別還是通過 SESSION。

1.HTTP 的 Keep-Alive 指的是 TCP/IP Socket 的長串連,即使用者瀏覽器=>Web容器的這一段來處理這個問題,與你的代碼無關。

2.保持長串連,是為了在短時間內,同一個Client下次再次向本伺服器的Web容器發起請求,不用再次進行握手建立串連這一繁雜的階段,節省伺服器的處理時間,以及提升下一次請求的處理速度。

3.對於一個 Socket (通訊端)來說,已經建立一個 TCP 串連,是針對於一個IP一個發起請求的連接埠,以及遠端伺服器一個IP一個接受請求的連接埠而言的。由於HTTP 長串連是基於此的,所以並不是針對同一個使用者的長串連,而是針對同一個串連的長串連。

4.路由器之所以能讓內網所有使用者使用同一個外網IP對外發起網路請求,是因為 NAT 機制,所以當一個內網使用者對一個Web容器發起請求後,對於Web容器而言,與他建立串連的是該內網的最外層網路節點(比如路由器)。而當Web容器傳回資料,路由器能夠通過NAT overload,對資料包的目標進行區分,發送到指定的內網裝置的連接埠上,不會存在內網所有裝置串線的情況

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.