TCP協議三次握手 四次揮手過程

2022-07-13 04:24:07 字數 1715 閱讀 7925

本文通過圖來梳理tcp-ip協議相關知識。tcp通訊過程包括三個步驟:建立tcp連線通道,傳輸資料,斷開tcp連線通道。如圖1所示,給出了tcp通訊過程的示意圖。

上圖主要包括三部分:建立連線、傳輸資料、斷開連線。

建立tcp連線很簡單,通過三次握手便可建立連線。建立好連線後,開始傳輸資料。tcp資料傳輸牽涉到的概念很多:超時重傳、快速重傳、流量控制、擁塞控制等等。斷開連線的過程也很簡單,通過四次握手完成斷開連線的過程。三次握手建立連線:

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

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

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

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與伺服器才正式開始傳送資料。理想狀態下,tcp連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,tcp 連線都將被一直保持下去。

傳輸資料過程:

a.超時重傳超時重傳機制用來保證tcp傳輸的可靠性。每次傳送資料報時,傳送的資料報都有seq號,接收端收到資料後,會回覆ack進行確認,表示某一seq 號資料已經收到。傳送方在傳送了某個seq包後,等待一段時間,如果沒有收到對應的ack回覆,就會認為報文丟失,會重傳這個資料報。b.快速重傳接受資料一方發現有資料報丟掉了。就會傳送ack報文告訴傳送端重傳丟失的報文。如果傳送端連續收到標號相同的ack包,則會觸發客戶端的快速重 傳。比較超時重傳和快速重傳,可以發現超時重傳是傳送端在傻等超時,然後觸發重傳;而快速重傳則是接收端主動告訴傳送端資料沒收到,然後觸發傳送端重傳。c.流量控制這裡主要說tcp滑動窗流量控制。tcp頭里有乙個欄位叫window,又叫advertised-window,這個欄位是接收端告訴傳送端自己 還有多少緩衝區可以接收資料。於是傳送端就可以根據這個接收端的處理能力來傳送資料,而不會導致接收端處理不過來。 滑動窗可以是提高tcp傳輸效率的一種機制。d.擁塞控制滑動窗用來做流量控制。流量控制只關注傳送端和接受端自身的狀況,而沒有考慮整個網路的通訊情況。擁塞控制,則是基於整個網路來考慮的。考慮一下這 樣的場景:某一時刻網路上的延時突然增加,那麼,tcp對這個事做出的應對只有重傳資料,但是,重傳會導致網路的負擔更重,於是會導致更大的延遲以及更多 的丟包,於是,這個情況就會進入惡性迴圈被不斷地放大。試想一下,如果乙個網路內有成千上萬的tcp連線都這麼行事,那麼馬上就會形成「網路風 暴」,tcp這個協議就會拖垮整個網路。為此,tcp引入了擁塞控制策略。擁塞策略演算法主要包括:慢啟動,擁塞避免,擁塞發生,快速恢復。

四次揮手斷開連線:

第一次揮手:主動關閉方傳送乙個fin,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發資料了(當 然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但此時主動關閉方還可以接受資料。

第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號)。

第三次揮手:被動關閉方傳送乙個fin,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會再給你發資料了。

第四次揮手:主動關閉方收到fin後,傳送乙個ack給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

tcp協議三次握手 四次揮手

起初,伺服器和客戶端都為closed狀態。在通訊開始前,雙方都得建立各自的傳輸控制塊 tcb 伺服器建立完tcb後遍進入listen狀態,此時準備接收客戶端發來的連線請求。第一次握手 客戶端向服務端傳送連線請求報文段。該報文段的頭部中syn 1,ack 0,seq x。請求傳送後,客戶端便進入syn...

TCP協議三次握手四次揮手

1.什麼是tcp協議 tcp協議是作用在傳輸層的傳輸控制協議 tcp 提供一種面向連線的 可靠的位元組流服務 在乙個 tcp 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於 tcp tcp 使用校驗和,確認和重傳機制來保證可靠傳輸 tcp 給資料分節進行排序,並使用累積確認保證資料的順序不變和非重...

TCP協議三次握手四次揮手

tcp有哪些過程?a.建立連線 b.資料傳輸 c.終止連線 tcp三次握手和四次揮手的過程?syn,ack是什麼?syn 請求建立連線 含有同步序列號的標誌位的資料,tcp建立連線時,將這個 位 置1 ack 針對syn的確認應答 fin是什麼?fin 傳送端完成傳送任務 位 當tcp完成資料傳輸需...