大家好,今天小編來為大家解答以下的問題,關于tcp協議三次握手圖,udp協議和tcp協議這個很多人還不知道,現在讓我們一起來看看吧!
TCP協議的三次握手的過程
TCP握手協議:在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。
1、第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;SYN:同步序列編號(SynchronizeSequenceNumbers)
2、第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
3、第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據。
TCP為什么是三次握手,而不是兩次或四次
網上有很多文章講TCP為什么建立連接時需要三次握手,關閉連接時需要四次握手,講了很多原理,反而讓很多人難以理解。
其實只有一句話:TCP連接是兩個端點之間的事,由于TCP連接是可靠連接,所以不管是建立連接還是關閉連接,需要兩個端點都要發送請求和收到確認
其次要理解TCP的通道是全雙工的,是可以讀和寫數據的,理解這個之后就明白了為什么關閉連接時需要四次握手。
首先講三次握手,建立連接時不涉及到讀寫通道,只是兩個端點的請求和確認。要記住是兩個端點之間的,兩個端點是平等的關系。
從客戶端的角度來說,它只需要發送一個請求syn,然后收到ack就能知道連接是可以建立的
從服務器端的角度,它也只需要發送一個請求syn,然后收到ack就能知道連接是可以建立的
所以建立連接時最少只需要三次握手即可,即服務器端收到客戶端syn,之后向客戶端發送ack的同時攜帶上自己的syn,這樣就只需要三次握手就能使雙方都發生syn和都收到ack.
當然你自己設計的時候也可以使用4次或者更多的握手,但是最少3次即可
關閉連接時也還是兩個端點都要發送請求和收到確認。但是關閉連接時涉及到兩個端點的讀寫通道的事。
從客戶端的角度來說,它發送一個關閉請求FIn,然后收到ack就知道可以關閉連接的
從服務器的角度來說,它發送一個關閉請求Fin,然后收到ack就知道可以關閉連接的
但是由于是讀和寫通道,所以服務器端在收到客戶端的關閉Fin時,可能還在往客戶端發送消息,所以只能先發送ack確認客戶端客戶關閉寫通道,這時候服務端不能使用通過一消息發送它的關閉Fin,只能過會等它自己寫完了,才能重新發送一個關閉請求的Fin。
所以比建立連接時多了一次握手,關閉連接時最少需要4次握手。理解了為什么需要4次握手之后,就不難理解TCP半關閉的概念。
TCP的三次握手的最終目的是什么
三次握手的目的是同步連接雙方的序列號和確認號并交換TCP窗口大小信息。
簡述TCP建立連接過程中使用的3次握手法
TCP握手協議在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接.第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
SYN:同步序列編號(SynchronizeSequenceNumbers)第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手.完成三次握手,客戶端與服務器開始傳送數據
TCP三次握手和四次揮手是什么意思
TCP三次握手
就好比打電話,需要經過撥號,振鈴,接通。才能進行講話
過程:
A:我要跟你建立連接
B:好的,我知道了,我也要跟你建個連接
A:我知道你收到了我的連接請求,我也收到了你的連接請求
滑動窗口:
主要為了避免一次性發送的數據過多,導致對方緩存溢出。
滑動窗口是動態協商,也就是說,在建立連接的時候,就會進行協商
同時,在緩沖區發生變化的時候,也會進行協商。
TCP四次揮手
主要為了避免當一方斷開連接,而另一方不知道的情況下,需要耗費資源去維護本該斷開的連接
過程:
假設三次連接已經建立完成
A:我要跟你斷開連接了
B:好的,我知道你要斷開連接了
B:我也要跟你斷開連接
A:好的,那就斷開連接吧
如果你還想了解更多這方面的信息,記得收藏關注本站。