




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、TCP三次握手四次揮手關鍵字: tcp三次握手四次揮手 推薦精選1.TCP握手協(xié)議(簡單明了)在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務,采用三次握手建立一個連接。第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SEND狀態(tài),等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài);第三次握手:客戶端收到服務器的SYNACK包,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED狀態(tài)
2、,完成三次握手。完成三次握手,客戶端與服務器開始傳送數(shù)據(jù),在上述過程中,還有一些重要的概念:未連接隊列:在三次握手協(xié)議中,服務器維護一個未連接隊列,該隊列為每個客戶端的SYN包(syn=j)開設一個條目,該條目表明服務器已收到 SYN包,并向客戶發(fā)出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處于Syn_RECV狀態(tài),當服務器收到客戶的確認包時,刪除該條目,服務器進入ESTABLISHED狀態(tài)。Backlog參數(shù):表示未連接隊列的最大容納數(shù)目。SYN-ACK 重傳次數(shù)服務器發(fā)送完SYNACK包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳
3、,如果重傳次數(shù)超過系統(tǒng)規(guī)定的最大重傳次數(shù),系統(tǒng)將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。半連接存活時間:是指半連接隊列的條目存活的最長時間,也即服務從收到SYN包到確認這個報文無效的最長時間,該時間值是所有重傳請求包的最長等待時間總和。有時我們也稱半連接存活時間為Timeout時間、SYN_RECV存活時間。2.TCP握手協(xié)議(詳細)TCP/IP 是很多的不同的協(xié)議組成,實際上是一個協(xié)議組,TCP用戶數(shù)據(jù)報表協(xié)議(也稱作TCP傳輸控制協(xié)議,Transport Control Protocol。可靠的主機到主機層協(xié)議。這里要先強調一下,傳輸控制協(xié)議是OSI網絡的第四層的
4、叫法,TCP傳輸控制協(xié)議是TCP/IP傳輸?shù)?個基本協(xié)議的一種。兩個TCP意思非相同。 )。TCP是一種可靠的面向連接的傳送服務。它在傳送數(shù)據(jù)時是分段進行的,主機交換數(shù)據(jù)必須建立一個會話。它用比特流通信,即數(shù)據(jù)被作為無結構的字節(jié)流。通過每個TCP傳輸?shù)淖侄沃付樞蛱?,以獲得可靠性。是在OSI參考模型中的第四層,TCP是使用IP的網間互聯(lián)功能而提供可靠的數(shù)據(jù)傳輸,IP不停的把報文放到網絡上,而TCP是負責確信報文到達。在協(xié)同IP的操作中TCP負責:握手過程、報文管理、流量控制、錯誤檢測和處理(控制),可以根據(jù)一定的編號順序對非正常順序的報文給予從新排列順序。關于TCP的RFC文檔有RFC793、
5、RFC791、RFC1700。在TCP會話初期,有所謂的“三握手”:對每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進行協(xié)商使數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認數(shù)及數(shù)據(jù)發(fā)送、接收完畢后何時撤消聯(lián)系,并建立虛連接。為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序將數(shù)據(jù)包的序號,并需要這些包傳送給目標機之后的確認消息。 TCP總是用來發(fā)送大批量的數(shù)據(jù)。當應用程序在收到數(shù)據(jù)后要做出確認時也要用到TCP。由于TCP需要時刻跟蹤,這需要額外開銷,使得TCP的格式有些顯得復雜。下面就讓我們看一個TCP的經典案例,這是后來被稱為MITNICK攻擊中KEVIN開創(chuàng)了兩種攻擊技術:TCP會話劫持
6、SYN FLOOD(同步洪流)在這里我們討論的時TCP會話劫持的問題。先讓我們明白TCP建立連接的基本簡單的過程。為了建設一個小型的模仿環(huán)境我們假設有3臺接入互聯(lián)網的機器。A為攻擊者操縱的攻擊機。B為中介跳板機器(受信任的服務器)。C為受害者使用的機器(多是服務器),這里把C機器鎖定為目標機器。A機器向B機器發(fā)送SYN包,請求建立連接,這時已經響應請求的B機器會向A機器回應SYN/ACK表明同意建立連接,當A機器接受到B機器發(fā)送的SYN/ACK回應時,發(fā)送應答ACK建立A機器與B機器的網絡連接。這樣一個兩臺機器之間的TCP通話信道就建立成功了。B終端受信任的服務器向C機器發(fā)起TCP連接,A機器
7、對服務器發(fā)起SYN信息,使C機器不能響應B機器。在同時A機器也向B機器發(fā)送虛假的C機器回應的SYN數(shù)據(jù)包,接收到SYN數(shù)據(jù)包的B機器(被C機器信任)開始發(fā)送應答連接建立的 SYN/ACK數(shù)據(jù)包,這時C機器正在忙于響應以前發(fā)送的SYN數(shù)據(jù)而無暇回應B機器,而A機器的攻擊者預測出B機器包的序列號(現(xiàn)在的TCP序列號預測難度有所加大)假冒C機器向B機器發(fā)送應答ACK這時攻擊者騙取B 機器的信任,假冒C機器與B機器建立起TCP協(xié)議的對話連接。這個時候的C機器還是在響應攻擊者A機器發(fā)送的SYN數(shù)據(jù)。TCP協(xié)議棧的弱點:TCP連接的資源消耗,其中包括:數(shù)據(jù)包信息、條件狀態(tài)、序列號等。通過故意不完成建立連接
8、所需要的三次握手過程,造成連接一方的資源耗盡。通過攻擊者有意的不完成建立連接所需要的三次握手的全過程,從而造成了C機器的資源耗盡。序列號的可預測性,目標主機應答連接請求時返回的SYN/ACK的序列號時可預測的。(早期TCP協(xié)議棧,具體的可以參見1981年出的關于TCP雛形的RFC793文檔)TCP頭結構TCP協(xié)議頭最少20個字節(jié),包括以下的區(qū)域(由于翻譯不禁相同,文章中給出相應的英文單詞):TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是標示報問的返回地址。TCP目的端口(Destination port):16位的目的端口域定義傳輸?shù)?/p>
9、目的。這個端口指明報文接收計算機上的應用程序地址接口。TCP序列號(序列碼,Sequence Number):32位的序列號由接收端計算機使用,重新分段的報文成最初形式。當SYN出現(xiàn),序列碼實際上是初始序列碼(ISN),而第一個數(shù)據(jù)字節(jié)是ISN+1。這個序列號(序列碼)是可以補償傳輸中的 不一致。TCP應答號(Acknowledgment Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設置了ACK控制位,這個值表示一個準備接收的包的序列碼。數(shù)據(jù)偏移量(HLEN):4位包括TCP頭大小,指示何處數(shù)據(jù)開始。保留(Reserved):6位值域,這些位必須是0。為了
10、將來定義新的用途所保留。標志(Code Bits):6位標志域。表示為:緊急標志、有意義的應答標志、推、重置連接標志、同步序列號標志、完成發(fā)送數(shù)據(jù)標志。按照順序排列是:URG、ACK、PSH、RST、SYN、FIN。窗口(Window):16位,用來表示想收到的每個TCP數(shù)據(jù)段的大小。校驗位(Checksum):16位TCP頭。源機器基于數(shù)據(jù)內容計算一個數(shù)值,收信息機要與源機器數(shù)值 結果完全一樣,從而證明數(shù)據(jù)的有效性。優(yōu)先指針(緊急,Urgent Pointer):16位,指向后面是優(yōu)先數(shù)據(jù)的字節(jié),在URG標志設置了時才有效。如果URG標志沒有被設置,緊急域作為填充。加快處理標示為緊急的數(shù)據(jù)段
11、。選項(Option):長度不定,但長度必須以字節(jié)。如果 沒有 選項就表示這個一字節(jié)的域等于0。填充:不定長,填充的內容必須為0,它是為了數(shù)學目的而存在。目的是確??臻g的可預測性。保證包頭的結合和數(shù)據(jù)的開始處偏移量能夠被32整除,一般額外的零以保證TCP頭是32位的整數(shù)倍。標志控制功能URG:緊急標志緊急(The urgent pointer) 標志有效。緊急標志置位,ACK:確認標志確認編號(Acknowledgement Number)欄有效。大多數(shù)情況下該標志位是置位的。TCP報頭內的確認編號欄內包含的確認編號(w+1,F(xiàn)igure:1)為下一個預期的序列編號,同時提示遠端系統(tǒng)已經成功接
12、收所有數(shù)據(jù)。PSH:推標志該標志置位時,接收端不將該數(shù)據(jù)進行隊列處理,而是盡可能快將數(shù)據(jù)轉由應用處理。在處理 telnet 或 rlogin 等交互模式的連接時,該標志總是置位的。RST:復位標志復位標志有效。用于復位相應的TCP連接。SYN:同步標志同步序列編號(Synchronize Sequence Numbers)欄有效。該標志僅在三次握手建立TCP連接時有效。它提示TCP連接的服務端檢查序列編號,該序列編號為TCP連接初始端(一般是客戶端)的初始序列編號。在這里,可以把TCP序列編號看作是一個范圍從0到4,294,967,295的32位計數(shù)器。通過TCP連接交換的數(shù)據(jù)中每一個字節(jié)都經
13、過序列編號。在TCP報頭中的序列編號欄包括了TCP分段中第一個字節(jié)的序列編號。FIN:結束標志帶有該標志置位的數(shù)據(jù)包用來結束一個TCP回話,但對應端口仍處于開放狀態(tài),準備接收后續(xù)數(shù)據(jù)。服務端處于監(jiān)聽狀態(tài),客戶端用于建立連接請求的數(shù)據(jù)包(IP packet)按照TCP/IP協(xié)議堆棧組合成為TCP處理的分段(segment)。分析報頭信息: TCP層接收到相應的TCP和IP報頭,將這些信息存儲到內存中。檢查TCP校驗和(checksum):標準的校驗和位于分段之中(Figure:2)。如果檢驗失敗,不返回確認,該分段丟棄,并等待客戶端進行重傳。查找協(xié)議控制塊(PCB):TCP查找與該連接相關聯(lián)的協(xié)
14、議控制塊。如果沒有找到,TCP將該分段丟棄并返回RST。(這就是TCP處理沒有端口監(jiān)聽情況下的機制) 如果該協(xié)議控制塊存在,但狀態(tài)為關閉,服務端不調用connect()或listen()。該分段丟棄,但不返回RST??蛻舳藭L試重新建立連接請求。建立新的socket:當處于監(jiān)聽狀態(tài)的socket收到該分段時,會建立一個子socket,同時還有socket,tcpcb和 pub建立。這時如果有錯誤發(fā)生,會通過標志位來拆除相應的socket和釋放內存,TCP連接失敗。如果緩存隊列處于填滿狀態(tài),TCP認為有錯誤發(fā)生,所有的后續(xù)連接請求會被拒絕。這里可以看出SYN Flood攻擊是如何起作用的。丟棄:
15、如果該分段中的標志為RST或ACK,或者沒有SYN標志,則該分段丟棄。并釋放相應的內存。發(fā)送序列變量SND.UNA : 發(fā)送未確認SND.NXT : 發(fā)送下一個SND.WND : 發(fā)送窗口SND.UP : 發(fā)送優(yōu)先指針SND.WL1 : 用于最后窗口更新的段序列號SND.WL2 : 用于最后窗口更新的段確認號ISS : 初始發(fā)送序列號接收序列號RCV.NXT : 接收下一個RCV.WND : 接收下一個RCV.UP : 接收優(yōu)先指針I(yè)RS : 初始接收序列號當前段變量SEG.SEQ : 段序列號SEG.ACK : 段確認標記SEG.LEN : 段長SEG.WND : 段窗口SEG.UP : 段
16、緊急指針SEG.PRC : 段優(yōu)先級CLOSED表示沒有連接,各個狀態(tài)的意義如下:LISTEN : 監(jiān)聽來自遠方TCP端口的連接請求。SYN-SENT : 在發(fā)送連接請求后等待匹配的連接請求。SYN-RECEIVED : 在收到和發(fā)送一個連接請求后等待對連接請求的確認。ESTABLISHED : 代表一個打開的連接,數(shù)據(jù)可以傳送給用戶。FIN-WAIT-1 : 等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認。FIN-WAIT-2 : 從遠程TCP等待連接中斷請求。CLOSE-WAIT : 等待從本地用戶發(fā)來的連接中斷請求。CLOSING : 等待遠程TCP對連接中斷的確認。LAST-
17、ACK : 等待原來發(fā)向遠程TCP的連接中斷請求的確認。TIME-WAIT : 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認。CLOSED : 沒有任何連接狀態(tài)。TCP連接過程是狀態(tài)的轉換,促使發(fā)生狀態(tài)轉換的是用戶調用:OPEN,SEND,RECEIVE,CLOSE,ABORT和STATUS。傳送過來的數(shù)據(jù)段,特別那些包括以下標記的數(shù)據(jù)段SYN,ACK,RST和FIN。還有超時,上面所說的都會時TCP狀態(tài)發(fā)生變化。序列號請注意,我們在TCP連接中發(fā)送的字節(jié)都有一個序列號。因為編了號,所以可以確認它們的收到。對序列號的確認是累積性的。TCP必須進行的序列號比較操作種類包括以下幾種:決定一些發(fā)送了的但未確認的序列號。決定所有的序列號都已經收到了。決定下一個段中應該包括的序列號。對于發(fā)送的數(shù)據(jù)TCP要接收確認,確認時必須進行的:SND.UNA = 最老的確認了的序列號。SND.NXT = 下一個要發(fā)送的序列號。SEG.ACK = 接收TCP的確認,接收TCP期待的下一個序列號
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機械作補助協(xié)議書
- 社保自繳納協(xié)議書
- 酒店ota托管協(xié)議書
- 極限運動直升機飛行動作培訓服務協(xié)議
- 航拍無人機轉讓協(xié)議書
- 貸款車購買協(xié)議書
- 員工簽保密協(xié)議書
- 求公司解散協(xié)議書
- 總代理轉讓協(xié)議書
- 施工單包工協(xié)議書
- 安徽省合肥一中2025屆高三5月回歸教材讀本
- 2024年江蘇省無錫市中考歷史真題(解析版)
- 雙方房屋使用協(xié)議書
- 投資理財保本協(xié)議書
- 2025年廣東省深圳市中考道德與法治 總復習責任意識檢測卷(含答案)
- 地西半球的國家 復習課課件-2024-2025學年七年級地理下學期(人教版2024)
- 2025法語DELFA1級考試試卷
- 2025年中考時事政治題及答案
- 2025-2030全球及中國發(fā)電機租賃行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 第10課 相親相愛一家人 課件-2024-2025學年道德與法治一年級下冊統(tǒng)編版
- 山東省青島市嶗山區(qū)2024-2025學年初三下學年期末考試英語試題試卷含答案
評論
0/150
提交評論