TCP IP 三次握手和HTTP過程

2022-03-20 08:43:36 字數 2423 閱讀 8260

手機能夠使用聯網功能是因為手機底層實現了tcp/ip協議,可以使手機終端通過無線網路建立tcp連線。tcp協議可以對上層網路提供介面,使上層網路資料的傳輸建立在「無差別」的網路之上。

建立起乙個tcp連線需要經過「三次握手」:

第一次握手:客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個ack包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,tcp 連線都將被一直保持下去。斷開連線時伺服器和客戶端均可以主動發起斷開tcp連線的請求,斷開過程需要經過「四次握手」(過程就不細寫了,就是伺服器和客 戶端互動,最終確定斷開)。

http協議即超文字傳送協議(hypertext transfer protocol ),是web聯網的基礎,也是手機聯網常用的協議之一,http協議是建立在tcp協議之上的一種應用。

http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為「一次連線」。

在http 1.0中,客戶端的每次請求都要求建立一次單獨的連線,在處理完本次請求後,就自動釋放連線。

在http 1.1中則可以在一次連線中處理多個請求,並且多個請求可以重疊進行,不需要等待乙個請求結束後再傳送下乙個請求。

由於通常情況下socket連線就是tcp連線,因此socket連線一旦建立,通訊雙方即可開始相互傳送資料內容,直到雙方連線斷開。但在實際網路應用中,客戶端到伺服器之間的通訊往往需要穿越多個中間節點,例如路由器、閘道器、防火牆等,大部分防火牆缺省會關閉長時間處於非活躍狀態的連線而導致 socket 連線斷連,因此需要通過輪詢告訴網路,該連線處於活躍狀態。

而http連線使用的是「請求—響應」的方式,不僅在請求時需要先建立連線,而且需要客戶端向伺服器發出請求後,伺服器端才能回覆資料。

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)

sequence number(順序號碼) acknowledge number(確認號碼)

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機;

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

完成三次握手,主機a與主機b開始傳送資料。

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。 

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認; 

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。 完成三次握手,客戶端與伺服器開始傳送資料.

問:為什麼連線的時候是三次握手,關閉的時候卻是四次握手?

答:因為在建立連線時,當server端收到client端的syn連線請求報文後,可以直接傳送syn+ack報文。其中ack報文是用來應答的,syn報文是用來同步的。

但是關閉連線時,當server端收到fin報文時,很可能並不會立即關閉socket,所以只能先回覆乙個ack報文,告訴client端,"你發的fin報文我收到了"。只有等到我server端所有的報文都傳送完了,我才能傳送fin報文,因此不能一起傳送。故需要四步握手。

1. tcp面向連線、udp面向無連線

2. tcp保證資料正確性、udp可能丟包

3. tcp 傳輸速度慢、udp傳輸速度快

4. 每一條tcp只能點對點;udp支援一對

一、一對多、多對

一、多對多

5. tcp對系統資源要求多、udp對系統資源要求較少

TCP IP三次握手和HTTP過程

手機能夠使用聯網功能是因為手機底層實現了tcp ip協議,可以使手機終端通過無線網路建立tcp連線。tcp協議可以對上層網路提供介面,使上層網路資料的傳輸建立在 無差別 的網路之上。建立起乙個tcp連線需要經過 三次握手 第一次握手 客戶端傳送syn包 syn j 到伺服器,並進入syn send狀...

TCP IP 三次握手

1.首先客戶端通過向伺服器端傳送乙個syn來建立乙個 主動開啟,作為三路握手的一部分。同步位為1 2.然後伺服器端應當為乙個合法的syn回送乙個 syn ack。同步位和確認位都為1 3.最後,客戶端再傳送乙個ack。這樣就完成了三 路握手,並進入了連線建立狀態。確認位位1 ftp服務之前首先需要t...

TCP IP三次握手

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...