1. 程式人生 > >HTTP請求的過程與TCP連線的過程

HTTP請求的過程與TCP連線的過程

 

http請求的詳細過程

HTTP是一個應用層的協議,在這個層的協議,是一種網路互動需要遵守的一種協議規範。

1、連線:當輸入一個請求時,首先建立一個socket連線,因為socket是通過ip和埠建立的,所以,之前則還有一個DNS解析過程。如把www.baidu.com變成一個ip,如果url不包含埠號,則會使用該協議的預設埠號,HTTP協議的預設埠號為80

2、請求:連線成功後,開始向web伺服器傳送請求,這個請求一般是GET或POST請求。

3、應答:web伺服器收到這個請求,進行處理。web伺服器會把檔案內容傳送給響應的web瀏覽器。 包括:HTTP頭資訊,體資訊。

4、關閉連線:當應答結束後,web瀏覽器與web伺服器必須斷開,以保證其它web瀏覽器能夠與web伺服器建立連線。


TCP連線的三次握手和四次揮手

建立連線協議(三次握手)

1、SYN_SEND 客戶端傳送一個帶SYN標誌的TCP報文到伺服器。這是三次握手過程中的報文1;

2、SYN_RECV 伺服器端迴應客戶端,這是三次握手中的第2個報文,這個報文同時帶ACK標誌(表示伺服器準備好了資料通訊)和SYN標誌。因為它表示對剛才客戶端SYN報文的迴應;同時又標誌SYN給客戶端,詢問客戶端是否準備好資料通訊;核心在收到最後一個ACK後,accept會返回。

3、ESTABLISH 客戶端必須再次迴應伺服器端一個ACK報文(表示客戶端也準備好了資料通訊),這是報文段3;


連線中止協議(四次揮手)

由於TCP連線是全雙工的,因此每個方向都必須單獨進行關閉

當一方完成它的資料傳送任務後,就能傳送一個FIN來中止這個方向的連線。收到一個FIN只意味著這一方向上沒有資料流動,

一個TCP連線在收到一個FIN後仍能傳送資料。

首先進行關閉的一方講執行主動關閉,而另一方執行被動關閉;FIN報文和ACK報文一般都是分開發送的

1、TCP客戶端傳送一個FIN,使用者關閉客戶端到伺服器的資料傳送,即報文段4;

2、伺服器收到這個FIN,它發回一個ACK,確認序號為收到的序號加1,即報文段5,和SYN一樣,一個FIN將佔用一個序號

3、伺服器關閉客戶端的連線,傳送一個FIN給客戶端,即報文段6;

4、客戶端發回ACK報文確認,並將確認序號設定為收到序號加1,即報文段7;

(1和2關閉客戶端到伺服器的資料通訊,3和4關閉伺服器端到客戶端的資料通訊)


相關推薦

HTTP請求過程TCP連線過程

  http請求的詳細過程 HTTP是一個應用層的協議,在這個層的協議,是一種網路互動需要遵守的一種協議規範。 1、連線:當輸入一個請求時,首先建立一個socket連線,因為socket是通過ip和埠建立的,所以,之前則還有一個DNS解析過程。如把www.baidu.com變成一個ip,如果url不包含埠號

http請求從瀏覽器到伺服器過程

前些天剛看完《How Tomcat Works》,雖然書比較老,但是看完後收穫還是挺多的,懂得了tomcat的內部結構和一個請求進出tomcat的全過程。前些天看的為什麼現在提呢,因為做到了面試題呀,發現自己原本很清晰的思路突然模糊了,所以花點時間總結一下。 題目是說一說

Spring mvc 從一個http請求分析DispatcherServlet的工作過程

開發工具 Intellij IDEA  目標、除錯 請求http://localhost:8080/coffee/helloworld <servlet> <servlet-name>dispatcher</servlet-

TCP連線過程可能出現的錯誤

連線過程可能出現的錯誤情況有:(1) 如果客戶機TCP協議沒有接收到對它的SYN資料段的確認,函式以錯誤返回,錯誤型別為ETIMEOUT。通常TCP協議在傳送SYN資料段失敗之後,會多次傳送SYN資料段,在所有的傳送都高中失敗之後,函式以錯誤返回。注:SYN(synchron

TCP連線過程中的記憶體使用問題

當伺服器的併發TCP連線數以十萬計時,我們就會對一個TCP連線在作業系統核心上消耗的記憶體多少感興趣。socket程式設計方法提供了SO_SNDBUF、SO_RCVBUF這樣的介面來設定連線的讀寫快取,linux上還提供了以下系統級的配置來整體設定伺服器上的TCP記憶體使用,但這些配置看名字卻有些互相沖突

03 http請求協議響應協議

pos conn nec TP cti AS .com form type 編輯本博客 yuan先生blogs 請求協議 請求格式 請求首行: 請求方式:get,post 請求路徑:/form/entry 協議版本:HTTP/1.1 請求頭: Host Connect

深入Nginx之《HTTP請求報文HTTP響應報文》

分組 value align 後端服務 請求超時 odin cep 問題 ati HTTP請求報文 這個很有必要了解,好歹我們得知道Nginx在提供HTTP服務時,客戶端都會傳些什麽。HTTP請求中客戶端傳送的內容稱為HTTP請求報文。 1、請求行包含: 請

寫儲存過程呼叫儲存過程

--建立儲存過程的語法 if exists(select * from sysobjects where name='sp_selectStudent')  drop procedure sp_selectStudent go create procedure sp_selectStud

Http 請求響應內容協商(二)-$Ajax 和 Spring mvc

一、jquery $.ajax 中的引數說明 1、contentType:傳送資料到伺服器時所使用的內容型別。簡單的說就是告訴服務我從的是什麼型別。 預設是:"application/x-www-form-urlencoded"。 2、dataType:預期的伺服器響應

谷歌瀏覽器檢視HTTP請求響應頭

用谷歌瀏覽器開啟某個網頁後,右擊滑鼠,選擇【檢查】, 然後點選【network】,再重新整理一下(重新整理的時候才會捕捉HTTP請求頭、響應頭給你看), 重新整理之後,點選左邊【name】(其實是請求的網址)下面的任何一行,然後右邊就會顯示HTTP的請求和相應資訊,共有三欄【Genera

HTTP請求方法HTTP訊息結構

HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的連結來交換資訊,是一個無狀態的請求/響應協議。 一個HTTP"客戶端"是一個應用程式(Web瀏覽器或其他任何客戶端),通過連線到伺服器達到向伺服器傳送一個或多個HTTP的請求的目的。 一個HTTP"伺服器"同樣也是一個應用程式(通常是一個Web

HTTP請求報文響應報文格式,含:getpost的區別

POST 方法是GET方法的一個替代方法,它主要是向Web伺服器提交表單資料,尤其是大批量的資料.POST方法克服了GET方法的一些缺點。通過POST方法提交表單資料時,資料不是作為URL請求的一部分而是作為標準資料傳送網路伺服器,這就克服了GET方法中的資訊無法保密和資料。因此,出於安全的考慮以及對使用者

檢視Apache併發請求數及其TCP連線狀態

 這兩天搭建了一組Apache伺服器,每臺伺服器4G記憶體,採用的是prefork模式,一開始設定的連線數太少了,需要較長的時間去響應使用者的請求,後來修改了一下Apache 2.0.59的配置檔案httpd.conf: 引用 # prefork MPM # Start

檢視 併發請求數及其TCP連線狀態

如何合理設定apache httpd的最大連線數? 手頭有一個網站線上人數增多,訪問時很慢。初步認為是伺服器資源不足了,但經反覆測試,一旦連線上,不斷點選同一個頁面上不同的連結,都能迅速開啟,這種現象就是說明apache最大連線數已經滿了,新的訪客只能排隊等待有空閒的連結,而如果一旦連線上,在keeyali

Feign http 請求跟蹤—亂碼及連線

開發十年,就只剩下這套架構體系了! >>>   

65535TCP連線數的關係測試結論

首先說結論: 一臺主機上只能保持最多65535個TCP連線是嗎? 客戶端是這樣的,服務端不是 是否有關係 .有關係 對於客戶端 對於客戶端來說,只有65535,因為根據TCP四元組的sport來說,sport只有16位,所以(2^16)-1是65535。也就是最多有65535個可用埠,這裡

基於TCP傳送http請求建立連線斷開連線過程

首先說說TCP是什麼,HTTP又是什麼? TCP:傳輸控制協議,面向連線的,可靠地,安全的,基於位元組流的傳輸層協議 HTTP:超文字傳輸協議,但是這個協議是應用層傳輸協議,它是建立在TCP之上的協議 建立連線(三次握手):                        第

TCPHTTP協議的連線過程,及聯絡區別

1、TCP連線      手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網路建立TCP連線。TCP協議可以對上層網路提供介面,使上層網路資料的傳輸建立在“無差別”的網路之上。建立起一個TCP連線需要經過“三次握手”:第一次握手:客戶端傳送sy

一次完整的http請求過程https的實現

http一次完整的http請求過程: (1)發起請求建立連接; 三次握手 接收請求或拒絕請求 (2)接受請求 來自網絡的請求報文中對某資源的一次請求過程; 並發訪問響應模型(Web I/O); 單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應

轉:HTTP請求過程&HTTP/1.0和HTTP/1.1的區別&HTTP怎麼處理長連線

1.HTTP簡介   web瀏覽器和伺服器之類的互動過程必須遵守的協議.他是tcp/ip中的一個應用協議。用來協議資料交換過程和資料本身的格式.主要的有HTTP/1.0和HTTP1.1.   HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。   HTTP客戶首先