tcp三次握手與四次揮手_第1頁(yè)
tcp三次握手與四次揮手_第2頁(yè)
tcp三次握手與四次揮手_第3頁(yè)
tcp三次握手與四次揮手_第4頁(yè)
tcp三次握手與四次揮手_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、關(guān)鍵字:tcp三次握手四次揮手握手協(xié)議(簡(jiǎn)單明了) 在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè) 連接。第一次握手:建立連接時(shí),客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入 SYN_SEN狀態(tài),等待服務(wù)器確認(rèn);第二次握手=服務(wù)器收到syn包,必須確認(rèn)客戶的S丫N (ack=j+1),同時(shí)自己也 發(fā)送一個(gè)SYN包(syn二k),即SYN+AC電,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第 三次握手:客戶端收到服務(wù)器的SYhPACK包,向服務(wù)器發(fā)送確認(rèn)包ACK (ack=k+1, 此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHE狀態(tài),完成三次握手。完成三次握手,客戶

2、端與服務(wù)器開始傳送數(shù)據(jù),在上述過(guò)程中,還有一些重要的概念:未連接隊(duì)列:在三次握手協(xié)議中,服務(wù)器維護(hù)一個(gè)未連接隊(duì)列,該隊(duì)列為每個(gè)客戶端 的SYN包(syn二j)開設(shè)一個(gè)條目,該條目表明服務(wù)器已收到SYN包,并向客戶發(fā)出確認(rèn),正在等待客戶的確認(rèn)包。這些條目所標(biāo)識(shí)的連接在服務(wù)器處于 Syn_RECV犬態(tài),當(dāng)服務(wù)器收到客戶的確認(rèn)包時(shí),刪除該條目,服務(wù)器進(jìn)入 ESTABLISHE 狀態(tài)。Backlog參數(shù):表示未連接隊(duì)列的最大容納數(shù)目。SY N-ACK重傳次數(shù)服務(wù)器發(fā)送完SYN- ACK包,如果未收到客戶確認(rèn)包,服務(wù)器 進(jìn)行首次重傳,等待一段時(shí)間仍未收到客戶確認(rèn)包,進(jìn)行第二次重傳,如果重傳次數(shù)超過(guò)系 統(tǒng)

3、規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息從半連接隊(duì)列中刪除。注意,每次重傳等待的時(shí) 間不一定相同。半連接存活時(shí)間=是指半連接隊(duì)列的條目存活的最長(zhǎng)時(shí)間,也即服務(wù)從收 到SYN包 到確認(rèn)這個(gè)報(bào)文無(wú)效的最長(zhǎng)時(shí)間,該時(shí)間值是所有重傳請(qǐng)求包的最長(zhǎng)等待時(shí)間總和。有時(shí) 我們也稱半連接存活時(shí)間為Timeout時(shí)間、SYN REC存活時(shí)間。握手協(xié)議(詳細(xì))TCP/IP是很多的不同的協(xié)議組成,實(shí)際上是一個(gè)協(xié)議組,TCP用戶數(shù)據(jù)報(bào)表協(xié)議(也稱作TCP傳輸控制協(xié)議,Transport Control Protocol??煽康闹鳈C(jī)到主 機(jī)層協(xié)議。這里要先強(qiáng)調(diào)一下,傳輸控制協(xié)議是OSI網(wǎng)絡(luò)的第四層的叫法,TCP傳輸控制協(xié)議是

4、TCP/IP傳輸?shù)?個(gè)基本協(xié)議的一種。兩個(gè)TCP意思非相同。)。TCP是一種可靠的面向連接的傳送服務(wù)。它在傳送數(shù)據(jù)時(shí)是分段進(jìn)行的,主機(jī)交換 數(shù)據(jù)必須建立一個(gè)會(huì)話。它用比特流通信,即數(shù)據(jù)被作為無(wú)結(jié)構(gòu)的字節(jié)流。通過(guò)每個(gè) TCP傳輸?shù)淖侄沃付樞蛱?hào),以獲得可靠性。是在OSI參考模型中的第四層,TCP是 使用IP的網(wǎng)間互聯(lián)功能而提供可靠的數(shù)據(jù)傳輸,IP不停的把報(bào)文放到網(wǎng)絡(luò)上,而TCP 是負(fù)責(zé)確信報(bào)文到達(dá)。在協(xié)同IP的操作中TCP負(fù)責(zé):握手過(guò)程、報(bào)文管理、流量控制、 錯(cuò)誤檢測(cè)和處理(控制),可以根據(jù)一定的編號(hào)順序?qū)Ψ钦m樞虻膱?bào)文給予從新排列順 序。關(guān)于TCP的RFC文檔有RFC793、RFC791、R

5、FC1700。在TCP會(huì)話初期,有所謂的三握手對(duì)每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進(jìn)行協(xié)商使 數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認(rèn)數(shù)及數(shù)據(jù)發(fā)送、接收 完畢后何時(shí)撤消聯(lián)系,并建立虛連接。為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之 前,以特定的順序?qū)?shù)據(jù)包的序號(hào),并需要這些包傳送給目標(biāo)機(jī)之后的確認(rèn)消息。TCP 總是用來(lái)發(fā)送大批量的數(shù)據(jù)。當(dāng)應(yīng)用程序在收到數(shù)據(jù)后要做出確認(rèn)時(shí)也要用到TCP由于TCP需要時(shí)刻跟蹤,這需要額外開銷,使 得TCP的格式有些顯得復(fù)雜。下面就讓我們看一個(gè)TCP的經(jīng)典案例,這是后來(lái)被稱為 MITNICK攻擊中KEVIN開創(chuàng)了兩種攻擊技術(shù):TCP會(huì)話劫持SYN FLO

6、O (D同步洪流)在這里我們討論的時(shí)TCP會(huì)話劫持的問(wèn)題。先讓我們明白TCP建立連接的基本簡(jiǎn)單的過(guò)程。為了建設(shè)一個(gè)小型的模仿環(huán)境我們 假設(shè)有3臺(tái)接入互聯(lián)網(wǎng)的機(jī)器。A為攻擊者操縱的攻擊機(jī)。B為中介跳板機(jī)器(受信任的 服務(wù)器)。C為受害者使用的機(jī)器(多是服務(wù)器),這里把C機(jī)器鎖定為目標(biāo)機(jī)器。A機(jī) 器向B機(jī)器發(fā)送SYN包,請(qǐng)求建立連接,這時(shí)已經(jīng) 響應(yīng)請(qǐng)求的B機(jī)器會(huì)向A機(jī)器回應(yīng)SYN/ACK表明同意建立連接,當(dāng)A機(jī)器接受到B機(jī) 器發(fā)送的SYN/ACK回應(yīng)時(shí),發(fā)送應(yīng)答ACK建立A機(jī)器與B機(jī)器的網(wǎng)絡(luò)連接。這樣一個(gè) 兩臺(tái)機(jī)器之間的TCP通話信道就建立成功了。B終端受信任的服務(wù)器向C機(jī)器發(fā)起TCP連接,A機(jī)器

7、對(duì)服務(wù)器發(fā)起S丫N信息, 使C機(jī)器不能響應(yīng)B機(jī)器。在同時(shí)A機(jī)器也向B機(jī)器發(fā)送虛假的C機(jī)器回應(yīng)的S丫N數(shù) 據(jù)包,接收到SYN數(shù)據(jù)包的B機(jī)器(被C機(jī)器信任)開始發(fā)送應(yīng)答連接建立的 SYN/ACK數(shù)據(jù)包,這時(shí)C機(jī)器正在忙于響應(yīng)以前發(fā)送的SYN數(shù)據(jù)而 無(wú)暇回應(yīng)B機(jī) 器,而A機(jī)器的攻擊者預(yù)測(cè)出B機(jī)器包的序列號(hào)(現(xiàn)在的TCP序列號(hào)預(yù)測(cè)難度有所加 大)假冒C機(jī)器向B機(jī)器發(fā)送應(yīng)答ACK這時(shí)攻擊者騙取B機(jī)器的信任,假冒C機(jī)器與 B機(jī)器建立起TCP協(xié)議的對(duì)話連接。這個(gè)時(shí)候的C機(jī)器還是在響應(yīng)攻擊者A機(jī)器發(fā)送的 S丫N數(shù)據(jù)。TCP協(xié)議棧的弱點(diǎn):TCP連接的資源消耗,其中包括:數(shù)據(jù)包信息、條件狀態(tài)、序 列號(hào)等。通過(guò)故意

8、不完成建立連接所需要的三次握手過(guò)程,造成連接一方的資源耗盡。通過(guò)攻擊者有意的不完成建立連接所需要的三次握手的全過(guò)程,從而造成了 C機(jī)器 的資源耗盡。序列號(hào)的可預(yù)測(cè)性,目標(biāo)主機(jī)應(yīng)答連接請(qǐng)求時(shí)返回的SYN/ACK的序列號(hào)時(shí) 可預(yù)測(cè)的。(早期TCP協(xié)議棧,具體的可以參見1981年出的關(guān)于TCP雛形的 RFC793 文檔)TCP頭結(jié)構(gòu)TCP協(xié)議頭最少20個(gè)字節(jié),包括以下的區(qū)域(由于翻譯不禁相同,文章中給出相 應(yīng)的英文單詞):TCP源端口 (Source Port) : 16位的源端口其中包含初始化通信的端口。源端口 和源IP地址的作用是標(biāo)示報(bào)問(wèn)的返回地址。TCP目的端口(Destinationport

9、) : 16位的目的端口域定義傳輸?shù)哪康?。這個(gè)端 口指明報(bào)文接收計(jì)算機(jī)上的應(yīng)用程序地址接口。TCP序列號(hào)(序列碼Sequenee Number) : 32位的序列號(hào)由接收端計(jì)算機(jī) 使 用,重新分段的報(bào)文成最初形式。當(dāng)SYN出現(xiàn),序列碼實(shí)際上是初始序列碼(ISN),而第一個(gè)數(shù)據(jù)字節(jié)是ISN+1o這個(gè)序列號(hào)(序列碼)是可以補(bǔ)償傳輸中的不一致。TCP應(yīng)答號(hào)(Acknowledgment Number): 32位的序列號(hào)由接收端計(jì)算機(jī)使 用, 重組分段的報(bào)文成最初形式。,如果設(shè)置了ACK空制位,這個(gè)值表示一個(gè)準(zhǔn)備接收的包的序列碼。數(shù)據(jù)偏移量(HLEN) 4位包括TCP頭大小,指示何處數(shù)據(jù)開始。保留(R

10、eserved): 6位值域,這些位必須是0。為了將來(lái)定義新的用途所保 留。標(biāo)志(Code Bits): 6位標(biāo)志域。表示為:緊急標(biāo)志、有意義的應(yīng)答標(biāo)志、推、重 置連接標(biāo)志、同步序列號(hào)標(biāo)志、完成發(fā)送數(shù)據(jù)標(biāo)志。按照順序排列是=URG、ACKvPSHx RSTx SYN、FINo窗口(Window): 16位,用來(lái)表示想收到的每個(gè)TCP數(shù)據(jù)段的大小。校驗(yàn)位(Checksum) 16位TCP頭。源機(jī)器基于數(shù)據(jù)內(nèi)容計(jì)算一個(gè)數(shù)值,收信息機(jī) 要與源機(jī)器數(shù)值結(jié)果完全一樣,從而證明數(shù)據(jù)的有效性。優(yōu)先指針(緊急,UrgentPointer):16位,指向后面是優(yōu)先數(shù)據(jù)的字節(jié),在URG標(biāo)志設(shè)置了時(shí)才有效。如果UR

11、G標(biāo)志沒(méi)有被設(shè)置,緊急域作為填充。加快處理標(biāo)示為緊急的 數(shù)據(jù)段。選項(xiàng)(Option):長(zhǎng)度不定,但長(zhǎng)度必須以字節(jié)。如果沒(méi)有選項(xiàng)就表示這個(gè)一字節(jié)的域 等于0。填充:不定長(zhǎng),填充的內(nèi)容必須為0,它是為了數(shù)學(xué)目的而存在。目的是確???間的可預(yù)測(cè)性。保證包頭的結(jié)合和數(shù)據(jù)的開始處偏移量能夠被32整除,一般額外的零以 保證TCP頭是32位的整數(shù)倍。標(biāo)志空制功能URG:緊急標(biāo)志緊急(The urge nt poi nter)標(biāo)志有效。緊急標(biāo)志置位,ACK確認(rèn)標(biāo)志確認(rèn)編號(hào)(Acknowledgement Number)欄有效。大多數(shù)情況下該標(biāo)志位是置位 的。TCP報(bào)頭內(nèi)的確認(rèn)編號(hào)欄內(nèi)包含的確認(rèn)編號(hào)(W+1,

12、Figure: 1)為下一個(gè)預(yù)期 的序 列編號(hào),同時(shí)提示遠(yuǎn)端系統(tǒng)已經(jīng)成功接收所有數(shù)據(jù)。PSH推標(biāo)志該標(biāo)志置位時(shí),接收端不將該數(shù)據(jù)進(jìn)行隊(duì)列處理,而是盡可能快將數(shù)據(jù)轉(zhuǎn)由應(yīng)用處 理。在處理telnet或riogin等交互模式的連接時(shí),該標(biāo)志總是置位的。RST復(fù)位標(biāo)志復(fù)位標(biāo)志有效。用于復(fù)位相應(yīng)的TCP連接。SYN同步標(biāo)志同步序列編號(hào)(SynchronizeSequenee Numbers欄有效。該標(biāo)志僅在三次握手建立 TCP連接時(shí)有效。它提示TCP連接的服務(wù)端檢查序列編號(hào),該序列編號(hào)為TCP連接初 始端(一般是客戶端)的初始序列編號(hào)。在這里,可以把TCP序列編號(hào)看作是一個(gè)范圍從 0到4, 294, 9

13、67, 295的32位計(jì)數(shù)器。通過(guò)TCP連接交換的數(shù)據(jù)中每一個(gè)字節(jié)都經(jīng) 過(guò)序列編號(hào)。在TCP報(bào)頭中的序列編號(hào)欄包括了 TCP分段中第一個(gè)字節(jié)的序列編號(hào)。FIN:結(jié)束標(biāo)志(IP packet)按照帶有該標(biāo)志置位的數(shù)據(jù)包用來(lái)結(jié)束一個(gè)TCP回話,但對(duì)應(yīng)端口仍處于開放 狀態(tài),準(zhǔn) 備接收后續(xù)數(shù)據(jù)。服務(wù)端處于監(jiān)聽狀態(tài),客戶端用于建立連接請(qǐng)求的數(shù)據(jù)包TCP/IP協(xié)議堆棧組合成為TCP處理的分段(segment)O分析報(bào)頭信息=TCP層接收到相應(yīng)的TCP和IP報(bào)頭,將這些信息存儲(chǔ)到內(nèi)存中。檢查TCP校驗(yàn)和(checksum):標(biāo)準(zhǔn)的校驗(yàn)和位于分段之中(Figure: 2)。如果 檢驗(yàn)失敗,不返回確認(rèn),該分段丟

14、棄,并等待客戶端進(jìn)行重傳。查找協(xié)議控制塊(PCB) TCP查找與該連接相關(guān)聯(lián)的協(xié)議控制塊。如果沒(méi)有找到,TCP將該分段丟棄并返回RST (這就是TCP處理沒(méi)有端口監(jiān)聽情況下的機(jī)制)如果該協(xié)議控制塊存 在,但狀態(tài)為關(guān)閉,服務(wù)端不調(diào)用connect()或listen()。該分段丟棄,但不返回RST客戶端會(huì)嘗試重新建立連接請(qǐng)求。建立新的socket:當(dāng)處于監(jiān)聽狀態(tài)的socket收到該分段時(shí),會(huì)建立一個(gè)子socket, 同時(shí)還有socket!, tcpcb和pub建立。這時(shí)如果有錯(cuò)誤發(fā)生,會(huì)通過(guò)標(biāo)志位來(lái)拆除相 應(yīng)的socket和釋放內(nèi)存,TCP連接失敗。如果緩存隊(duì)列處于填滿狀態(tài),TCP認(rèn)為有錯(cuò) 誤發(fā)生

15、,所有的后續(xù)連接請(qǐng)求會(huì)被拒絕。這里可以看出SYN Flooc攻擊是如何起作用 的。丟棄:如果該分段中的標(biāo)志為RST或ACK或者沒(méi)有SYN標(biāo)志,則該分段 丟棄。 并釋放相應(yīng)的內(nèi)存。發(fā)送序列變量 :發(fā)送未確認(rèn) :發(fā)送下一個(gè) :發(fā)送窗口 :發(fā)送優(yōu)先指針 :用于最后窗口更新的段序列號(hào) :用于最后窗口更新的段確認(rèn)號(hào)ISS :初始發(fā)送序列號(hào)接收序列號(hào) :接收下一個(gè) :接收下一個(gè)9/9=接收優(yōu)先指針I(yè)RS :初始接收序列號(hào)當(dāng)前段變量 :段序列號(hào) :段確認(rèn)標(biāo)記 :段長(zhǎng) :段窗口 :段緊急指針 :段優(yōu)先級(jí)CLOSED表示沒(méi)有連接,各個(gè)狀態(tài)的意義如下:LISTEN:監(jiān)聽來(lái)自遠(yuǎn)方TCP端口的連接請(qǐng)求。SY N-SE

16、NT:在發(fā)送連接請(qǐng)求后等待匹配的連接請(qǐng)求。SYN-RECEIVED在收到和發(fā)送一個(gè)連接請(qǐng)求后等待對(duì)連接請(qǐng)求的確認(rèn)。ESTABLISHED代表一個(gè)打開的連接,數(shù)據(jù)可以傳送給用戶。FIN-WAIT-1 :等待遠(yuǎn)程TCP的連接中斷請(qǐng)求,或先前的連接中斷請(qǐng)求的確認(rèn)。FIN-WAIT-2從遠(yuǎn)程TCP等待連接中斷請(qǐng)求。CLOSE-WAIT等待從本地用戶發(fā)來(lái)的連接中斷請(qǐng)求。CLOSING :等待遠(yuǎn)程TCF對(duì)連接中斷的確認(rèn)。LAST-ACK:等待原來(lái)發(fā)向遠(yuǎn)程TCP的連接中斷請(qǐng)求的確認(rèn)。TIME-WAIT :等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請(qǐng)求的確 認(rèn)。CLOSED:沒(méi)有任何連接狀態(tài)。TCP連接過(guò)程是狀態(tài)的轉(zhuǎn)換,促使發(fā)生狀態(tài)轉(zhuǎn)換的是用戶調(diào)用:OPENSEND RECEIVE CLOSE ABORT和STATUS傳送過(guò)來(lái)的數(shù)據(jù)段,特別那些包括 以下 標(biāo)記的數(shù)據(jù)段SYN ACK RST和FIN。還有超時(shí),上面所說(shuō)的都會(huì)時(shí)TCP狀態(tài)發(fā)生變 化。序列號(hào)請(qǐng)注意,我們?cè)赥CP連接中發(fā)送的字節(jié)都有一個(gè)序列號(hào)。因?yàn)榫幜颂?hào),所 以可以確 認(rèn)它們的收到。對(duì)序列號(hào)的確認(rèn)是累積性的。TCP必須進(jìn)行的序列號(hào)比較操作種類包括以下幾種: 決定一些發(fā)送了的但未確認(rèn)的序列號(hào)。 決定所有的序

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論