TCP三次握手與四次分手

2022-04-29 15:36:07 字數 2567 閱讀 3743

三次握手

解釋:客戶端a和伺服器b剛開始處於closed狀態,兩者之間沒有任何聯絡,a主動開啟,b被動開啟由

closed進入listen狀態,這是a傳送乙個syn=1的標誌位的資料報,並且資料的序列為seq=x,

a也由closed進入syn-sent狀態,b接收到a的請求,也主動 傳送syn=1的建立連線的請求的

資料,在b這裡資料報的排序為seq=y並且傳送乙個確認號ack=x+1用來表示已經收到a傳送的資料,

ack用來確認ack是有效的,b也有listen轉入syn-rcvd狀態,a收到b的資料,傳送乙個序列號

為x+1,確認號為y+1的資料,同樣ack用來表示ack的有效性,此時a由syn-sent狀態轉入

estab-listend狀態,b收到a的回覆,狀態也轉入estab-listend狀態。 到此三次握手建立完成。

知識點:

urg :表示本報文段中傳送的資料是否包含緊急資料。後面的緊急指標字段(urgent pointer )只有當

urg=1 時才有效。

ack :表示是否前面的確認號字段是否有效。ack=1 ,表示有效。只有當ack=1時 時,前面的確認號

欄位才有效。tcp 規定,連線建立後, ack 必須為1, 帶ack 標誌的tcp 報文段稱為確認報文段

psh :提示接收端應用程式應該立即從tcp 接收緩衝區中讀走資料,為接收後續資料騰出空間。如果為1 ,

則表示對方應當立即把資料提交給上層應用,而不是快取起來,如果應用程式不將接收到的資料讀走,

就會一直停留在tcp 接收緩衝區中。

rst :如果收到乙個rst=1 的報文,說明與主機的連線出現了嚴重錯誤(如主機崩潰),必須釋放連線,

然後再重新建立連線。或者說明上次傳送給主機的資料有問題,主機拒絕響應,帶rst 標誌的tcp

報文段稱為復位報文段

syn :在建立連線時使用,用來同步序號。當syn=1 ,ack=0 時,表示這是乙個請求建立連線的報文段;

當syn=1 ,ack=1 時,表示對方同意 建立連線。syn=1,說明這是乙個請求建立連線或同意建立

連線的報文。只有在前兩次握手中syn才 才置為1 ,帶syn 標誌的tcp 報文段 稱為同步報文段。

fin :表示通知對方本端要關閉連線了,標記資料是否傳送完畢。如果fin=1 ,即告訴對方:「我的資料

已經傳送完畢,你可以釋放連線了」,帶fin 標誌的tcp報 報文段稱為結束報文段。

有限狀態機:

closed  沒有任何連線狀態

listen  偵聽狀態,等待來自遠方tcp 埠的連線請求

syn-sent  在傳送連線請求後,等待對方確認

syn-received  在收到和傳送乙個連線請求後,等待對方確認

established:建立連線

涉及攻擊:黑客製造出大量主機和伺服器建立連線,在建立三次握手的時候,不給伺服器傳送第三次確認,

這樣就會增大伺服器的快取壓力,導致伺服器無法對外提供服務。

四次揮手

解釋:剛開始客戶端a和伺服器b都處於estab-lished狀態,是可以進行資料傳輸的,這是a主動關閉,

並傳送乙個fin=1,seq=u的資料,a隨機進入fin-wait-1狀態,b收到資料後,傳送乙個seq=v,

ack=u+1(表示接收到a傳送的資料),ack=1表示ack的有效性,b隨機進入close-wait狀態,

a也進入fin-wait-2狀態,b此時再傳送乙個fin=1,ack=1,seq=w,ack=u+1的資料,隨機進入

last-ack狀態,a收到後,傳送乙個seq=u+1,ack=w+1,ack=1的資料,b收到後進入close

狀態,a進入time-wait狀態,2倍的msl值後進入closed狀態。

知識點:

有限狀態機

fin-wait-1 主動關閉, 主機已傳送關閉連線請求,等待對方確認

fin-wait-2  主動關閉, 主機已收到對方關閉傳輸連線確認,等待對方傳送關閉傳輸連線請求

time-wait  完成雙向傳輸連線關閉,等待所有分組消失

close-wait  被動關閉, 收到對方發來的關閉連線請求,並已確認。

last-ack 被動關閉, 等待最後乙個關閉傳輸連線確認,並等待所。

closing:雙方同時嘗試關閉傳輸連線,等待對方確認。

注意:當客戶端執行主動關閉時,它將向伺服器傳送乙個結束報文段,同時連線進入fin_wait_1 狀態。

若此時客戶端收到伺服器專門用於確認目的的確認報文段,則連線轉移至fin_wait_2 狀態。

當客戶端處於fin_wait_2 狀態時,伺服器處於close_wait 狀態,這一對狀態是可能發生

半關閉的狀態。此時如果伺服器也關閉連線(傳送結束報文段)則客戶端將給予確認並進入

time_wait 狀態。

TCP三次握手與四次分手

ack 此標誌表示應答域有效,就是說前面所說的tcp應答號將會包含在tcp資料報中 有兩個取值 0和1,為1的時候表示應答域有效,反之為0 syn 表示同步序號,用來建立連線。syn標誌位和ack標誌位搭配使用,當連線請求的時候,syn 1,ack 0 連線被響應的時候,syn 1,ack 1 這個...

tcp三次握手與四次分手

三次握手a主機請求b主機 a主機 先發 syn 1 seq a 給b主機 a主機進入syn sent狀態 b主機收到後傳送 syn 1 ack 1 seq b ack a 1 給a主機 b主機此時伺服器進入syn recv狀態 a主機收到後傳送ack 1 seq a 1 ack b 1 給b主機 客...

TCP三次握手,四次分手

tcp報文重要字段 1 序號 seq序號,佔32位 2 確認號 ack序號,32位,只有標誌位ack位1時,確認號才有效。ack seq 1 3 標誌位 共六個 urg 緊急指標,告訴接收tcp模組緊要指標域指著緊要資料。ack 置1時表示確認號 為合法,為0的時候表示資料段不包含確認資訊,確認號被...