日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP请求/响应原理

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP请求/响应原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:什么是HTTP協議?

超文本傳輸協議?(HyperText?Transfer?Protocol),一個基于請求與響應,無狀態的,應用層的協議,常基于TCP/IP協議傳輸數據。?目的是保證客戶端與服務器之間的高校通信。

二:工作原理

客戶端(瀏覽器)向服務器提交?HTTP?請求,服務器向客戶端返回響應信息。

具體步驟:

  • 客戶端和服務器建立連接(TCP三次握手);
  • 客戶端發送一個請求給服務器;
  • 服務器返回相應的響應信息給客戶端;
  • 釋放連接(TCP四次揮手);
  • 客戶端接收服務器所返回的信息通過瀏覽器顯示在用戶的顯示屏上
  • 三:TCP連接

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TCP三次握手

    過程: ??

    1.客戶端發送SYN(SEQ=x)報文給服務器端,進入SYN_SEND狀態。

    2.服務器端收到SYN報文,回應一個SYN?(SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。

    3.客戶端收到服務器端的SYN報文,回應一個ACK(ACK=y+1)報文,進入Established狀態。

    ??

    為什么要三次握手?

    一次握手:客戶端無法確認是否能夠和服務器正常通信,卻一直發連接請求是毫無意義的。

    兩次握手:1.客戶端發一條連接請求給服務器,由于網絡阻塞,服務器未收到。

    2.客戶端等了一段時間,服務器仍未回應它,于是再次發出連接請求,服務器收到請求并進行確認,TCP連接建立,開始通信,通信結束后釋放連接。客戶端進入CLOSED狀態。

    3.此時服務端收到失效的連接請求,并向客戶端確認,但客戶端已關閉,服務端將會為連接請求分配資源并且一直等待下去,浪費了服務端連接資源。

    四次握手:三次握手已經能夠建立連接,期間服務器有一次確認連接請求的操作就已足夠,沒必要進行多次確認,對于資源來說是一種浪費。

    四:釋放TCP連接

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?TCP四次揮手

    過程:

    1.數據發送完畢后,客戶端發送釋放連接請求(FIN=1,seq=u?)并進入FIN-WAIT-1狀態。

    2.服務器收到釋放連接請求,做出應答(?ACK=1,seq=v,ack=u+1.),并進入CLOSE-WAIT狀態。(此時客戶端處于FIN-WAIT-2狀態不發送只接收數據,此時仍在接收服務器傳輸的數據)

    3.服務器發送完所有數據后發送釋放連接請求(FIN=1,ACK=1,seq=w,ack=u+1),并進入LAST-ACK狀態。

    4.客戶端收到釋放連接請求后發送確認應答(ACK=1,seq=u+1,ack=w+1),并進入TIME-WAIT狀態.該狀態會持續2MSL時間(服務器收到應答會立即進入CLOSED狀態),若該時間段內沒有收到重發請求,就進入CLOSED狀態。

    ?

    A:為什么四次揮手?

    建立連接時,?服務器收到建立連接請求的SYN報文后,把ACK和SYN放在一個報文里發送給客戶端。?而釋放連接,服務器接收到客戶端的FIN報文時,表示客戶端不再發送但還能接收數據,此時服務器未必將全部數據都發送給了客戶端,因此會先發送ACK報文進入CLOSE-WAIT狀態,待發送完所有數據后,再發送FIN報文給客戶端表示同意關閉連接(ACK和FIN一般都會分開發送),從而導致多了一次。

    B:為什么客戶端發完第四次揮手后需要持續2MSL時間后才會關閉?

    如果客戶端發完第四次揮手立即關閉:

    第一,若最后一個ACK報文丟失,服務器收不到客戶端的應答,會再次發送一個釋放連接請求,而此時客戶端已經關閉,服務器會一直等待并發送請求。

    第二,若在此次連接中出現“已經失效的連接請求報文段”,下次建立的TCP連接中就會出現舊連接的請求報文(若客戶端發送完第四次揮手后,在2MSL時間后關閉,此段時間內可以使本次連接內產生的所有報文段從網絡中消失,下次建立的TCP連接中就不會出現舊連接的請求報文)。


    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的HTTP请求/响应原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。