目錄
tcp三次握手
四次揮手
為什麼建立連線是三次而斷開連線是四次呢?
tcp和udp的區別
tcp資料報的封裝
udp資料報封裝
sctp
syn flood泛洪攻擊
tcp(transmission control protocol) 傳輸控制協議,是面向連線的協議,屬於osi七層模型中的傳輸層協議
我們所熟知的ftp、ssh、telnet、http、https、smtp、pop3等都是使用tcp協議
tcp最重要的乙個特點就是面向連線的協議,一次tcp的會話連線需要三次握手,會話斷開需要四次揮手
在分析三次握手和四次揮手前先看一下資料報互動過程中各訊號代表著什麼
(1)序號:seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記。
(2)確認序號:ack序號,佔32位,當ack=seq+1時,確認序號有效。
(3)標誌位:共6個,即urg、ack、psh、rst、syn、fin等,具體含義如下:
(a)urg:緊急指標(urgent pointer)有效。
(b)ack:確認序號有效。
(c)push:接收方應該盡快將這個報文交給應用層。
(d)rst:重置連線。
(e)syn(synchronize sequence numbers):發起乙個新連線。
(f)fin:釋放乙個連線。
需要注意的是:
(a)不要將確認序號ack與標誌位中的ack搞混了。
(b)確認方ack=發起方seq+1,兩端配對。
(1)第一次握手:client將標誌位syn置為1,隨機產生乙個值seq=x,並將該資料報傳送給server,client進入syn_sent狀態,等待server確認。
(2)第二次握手:server收到資料報後由標誌位syn=1知道client請求建立連線,server將標誌位syn和ack都置為1,ack=x+1,隨機產生乙個值seq=y,並將該資料報傳送給client以確認連線請求,server進入syn_rcvd狀態。
(3)第三次握手:client收到確認後,檢ack是否為 x+1,ack是否為1,如果正確則將標誌位ack置為1,seq=x+1,ack=y+1,並將該資料報傳送給server,server檢查ack是否為y+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間可以開始傳輸資料了
(1)第一次揮手:client傳送乙個fin,seq=u,用來關閉client到server的資料傳送,client進入fin_wait_1狀態。
(2)第二次揮手:server收到fin後,傳送乙個ack=1給client,確認序號ack=u+1,server進入close_wait狀態。
(3)第三次揮手:server傳送乙個fin,seq=w,用來關閉server到client的資料傳送,server進入last_ack狀態。
(4)第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack=1給server,ack=w+1,seq=u+1,server進入closed狀態,完成四次揮手。
這是因為服務端的listen狀態下的socket當收到syn報文的建連請求後,它可以把ack和syn(ack起應答作用,而syn起同步作用)放在乙個報文裡來傳送。但關閉連線時,當收到對方的fin報文通知時,它僅僅表示對方沒有資料傳送給你了;但未必你所有的資料都全部傳送給對方了,所以你未必可以馬上關閉socket,也許你還需要傳送一些資料給對方之後,再傳送fin報文給對方來表示你同意現在可以關閉連線了,所以它這裡的ack報文和fin報文多數情況下都是分開傳送的
基於連線與無連線
tcp要求系統資源較多,udp較少;
udp程式結構較簡單
流模式(tcp)與資料報模式(udp);
tcp保證資料正確性,udp可能丟包
tcp保證資料順序,udp不保證
tcp段首部的定長部分為20個位元組,即5個單位的長度
sctp(stream control transmission protocol,流控制傳輸協議)是ietf(internet engineering task force,網際網路工程任務組)在2023年定義的乙個傳輸層(transport layer)協議,是提供基於不可靠傳輸業務的協議之上的可靠的資料報傳輸協議。sctp的設計用於通過ip網傳輸scn(signaling communication network,信令通訊網)窄帶信令訊息。後期廣泛用於epc網路中的s6a/s1/sgs/sv等介面中。
sctp是乙個面向連線的流傳輸協議,它可以在兩個端點之間提供穩定、有序的資料傳遞服務。sctp可以看做是tcp協議的改進,它繼承了tcp較為完善的擁塞控制並改進tcp的一些不足之處
syn flood是當前最流行的dos(拒絕服務攻擊)之一,syn攻擊利用的是tcp的三次握手機制的缺陷,攻擊端利用偽造的ip位址向被攻擊端發出syn請求,而被攻擊端發出的ack響應報文將永遠傳送不到目的地,也就是得不到回應,那麼這個tcp連線就處於掛起狀態,也就是所謂的半連線狀態。伺服器收不到確認的話,在syn timeout時間內(一般為30秒-2分鐘)還會重**送ack報文給攻擊者,直到syn timeout超時。如果有成千上萬的這種連線,被攻擊的主機資源將被耗盡,從而達到攻擊的目的。
防禦syn flood攻擊
tcp 四次揮手 TCP的三次握手和四次揮手
三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...
TCP三次握手和四次揮手
一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...
TCP三次握手和四次揮手
三次握手 四次揮手 需四次揮手原因 由於tcp的半關閉特性,tcp連線時雙全工 即資料在兩個方向上能同時傳遞 因此,每個方向必須單獨的進行關閉。這個原則就是 當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向上的連線。當一端收到乙個fin後,它必須通知應用層另一端已經終止了那個方向的資料傳...