TCP握手與揮手

2021-08-02 19:03:57 字數 1510 閱讀 4383

1.什麼是三次握手?

在進行tcp資料傳輸時要確保資料傳送的穩定性,三次握手就是對資料與資料段進行協商跟蹤是資料的傳送與接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送、接收完畢後何時撤消聯絡,並建立虛連線。

2.三次握手過程

第一次握手

b的tcp服務區程序先建立傳輸控塊tcb,準備接受使用者程序的連線請求。然後伺服器程序就處於listen(收聽)狀態,等待使用者的連線請求。

第二次握手

a的tcp客戶程序也是首先建立傳輸控制模組tcb,然後向b發出連線請求報文段,這時首部中的同步位syn = 1,同時選擇乙個初始序號seq = x。tcp規定,syn 報文段不能攜帶資料,但要消耗掉乙個序號。這時,tcp客戶端程序進入syn-sent狀態。

第三次握手

b收到連線請求報文段後,如同意連線,則向a傳送確認。在確認報文段中應把syn位和ack位都置1,確認號是ack=x+1,同時也為自己選乙個初始序號seq=y。這個報文段也不攜帶資料,同樣需要消耗乙個序號,此時tcp伺服器程序進入syn-rcvd狀態。

3.為什麼要進行三次握手?

1.為了防止已過期的連線再次傳回主機

如果採用兩次握手也許會引發一些故障,比如,若a要連線到b,但由於某些原因資訊未能傳到b主機,於是a又發了一次,於是連線建立了,但在a與b正在進行資料傳輸時,失去的連線突然又傳到b主機,b主機認為連線是建好的,於是在傳送完資訊後等待a傳送東西過來。

2.可以預防發生死鎖  

考慮計算機a和b之間的通訊,假定b給a傳送乙個連線請求分組,a收到了這個分組,並傳送了確認應答分組。按照兩次握手的協定,a認為連線已經成功地建立了,可以開始傳送資料分組。可是,b在a的應答分組在傳輸中被丟失的情況下,將不知道a是否已準備好,不知道a建議什麼樣的序列號,b甚至懷疑a是否收到自己的連線請求分 組。在這種情況下,b認為連線還未建立成功,將忽略a發來的任何資料分組,只等待連線確認應答分組。而a在發出的分組超時後,重**送同樣的分組。這樣就形成了死鎖。

二、四次揮手

1.什麼是四次揮手?

四次揮手即連線終止協議,是用來確保tcp能正常釋放的。

第一次揮手:

tcp客戶端先發來乙個fin,用來關閉客戶到伺服器之間的連線;

第二次揮手:

伺服器收到這個fin,將會發回乙個確認號,確認號是ack=u+1;

第三次揮手:

伺服器關閉到客戶的連線,並傳送乙個fin給客戶端;

第四次揮手:

客戶端發回乙個ack確認報文,並且確認號為ack=u+1。

2.為什麼要進行四次揮手?

由於tcp是全雙工的,因此在接收到fin時知道將不會有資料傳過來,但它卻依然可以傳送資料,因此在客戶端收到fin後再向伺服器端傳送確認訊號,之後伺服器端再斷開與客戶端的連線,然後客戶端再發出確認訊號,這樣整個連線才能被釋放,如果少一次揮手的話,則雖然一方已經將連線斷開,但另一方依然可以接收它所傳送的資料,這樣連線就沒有被完全斷開,因此要進行四次揮手。

tcp握手與揮手

1.為什麼要三次握手 先簡單介紹一下三次握手的過程 1 客戶端向伺服器端傳送乙個syn置位的報文,並進入syn send狀態,等待伺服器確認 2 伺服器發出段2,也帶有syn位,同時ack置位表示確認,此時伺服器進入syn recv狀態 3 客戶端收到伺服器端的syn ack包,向伺服器傳送確認包a...

TCP的握手與揮手

在資料傳送前不需要建立連線,接受方收到udp報文後也不需要給出回應 不可靠的,但同時省去了很多開銷,獲得了速度的 提公升 在資料傳送之前必須建立連線,完成資料傳送之後斷開連線 socket每一條tcp連線都有兩個端點,稱之為socket 套接字 ip位址 埠號 碼農翻身中又將其比喻為乙個插座,負責將...

TCP握手 揮手的過程分析

華清遠見嵌入式學院 講師。tcp連線建立 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。伺服器必須準備好接受外來的連線。這通過呼叫socket bind和listen函式來完成,稱為被動開啟 passive open 第一次握手 客戶通過呼叫connect進行主動開啟...