MSCBSC 移動通信論壇
搜索
登錄注冊
網(wǎng)絡優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實習生/應屆生招聘職位

  • 閱讀:3321
  • 回復:4
[HUWEI] tcp三次握手及原理
qiugl
金牌會員
鎵嬫満鍙風爜宸查獙璇? style=


 發(fā)短消息    關(guān)注Ta 

積分 5374
帖子 532
威望 1229 個
禮品券 10 個
專家指數(shù) 20
注冊 2007-9-9
專業(yè)方向  網(wǎng)優(yōu)
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2007-09-10 20:48:23  只看樓主 
TCP/IP 是很多的不同的協(xié)議組成,實際上是一個協(xié)議組,TCP 用戶數(shù)據(jù)報表協(xié)議(也
稱作TCP 傳輸控制協(xié)議,Transport Control Protocol。可靠的主機到主機層協(xié)議。這里要先
強調(diào)一下,傳輸控制協(xié)議是OSI 網(wǎng)絡的第四層的叫法,TCP 傳輸控制協(xié)議是TCP/IP 傳輸?shù)?br /> 6 個基本協(xié)議的一種。兩個TCP 意思非相同。)。TCP 是一種可靠的面向連接的傳送服務。
它在傳送數(shù)據(jù)時是分段進行的,主機交換數(shù)據(jù)必須建立一個會話。它用比特流通信,即數(shù)據(jù)
被作為無結(jié)構(gòu)的字節(jié)流。通過每個TCP 傳輸?shù)淖侄沃付樞蛱枺垣@得可靠性。是在OSI
參考模型中的第四層,TCP 是使用IP 的網(wǎng)間互聯(lián)功能而提供可靠的數(shù)據(jù)傳輸,IP 不停的把
報文放到網(wǎng)絡上,而TCP 是負責確信報文到達。在協(xié)同IP 的操作中TCP 負責:握手過程、
報文管理、流量控制、錯誤檢測和處理(控制),可以根據(jù)一定的編號順序?qū)Ψ钦m樞虻?br /> 報文給予從新排列順序。關(guān)于TCP 的RFC 文檔有RFC793、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ù)之前,以
特定的順序?qū)?shù)據(jù)包的序號,并需要這些包傳送給目標機之后的確認消息。TCP 總是用來
發(fā)送大批量的數(shù)據(jù)。當應用程序在收到數(shù)據(jù)后要做出確認時也要用到TCP。由于TCP 需要
時刻跟蹤,這需要額外開銷,使得TCP 的格式有些顯得復雜。下面就讓我們看一個TCP 的
經(jīng)典案例,這是后來被稱為MITNICK 攻擊中KEVIN 開創(chuàng)了兩種攻擊技術(shù):
TCP 會話劫持
SYN FLOOD(同步洪流)
在這里我們討論的時TCP 會話劫持的問題。
先讓我們明白TCP 建立連接的基本簡單的過程。為了建設(shè)一個小型的模仿環(huán)境我們假
設(shè)有3 臺接入互聯(lián)網(wǎng)的機器。A 為攻擊者操縱的攻擊機。B 為中介跳板機器(受信任的服務
器)。C 為受害者使用的機器(多是服務器),這里把C 機器鎖定為目標機器。A 機器向B
機器發(fā)送SYN 包,請求建立連接,這時已經(jīng)響應請求的B 機器會向A 機器回應SYN/ACK
表明同意建立連接,當A 機器接受到B 機器發(fā)送的SYN/ACK 回應時,發(fā)送應答ACK 建立
A 機器與B 機器的網(wǎng)絡連接。這樣一個兩臺機器之間的TCP 通話信道就建立成功了。
B 終端受信任的服務器向C 機器發(fā)起TCP 連接,A 機器對服務器發(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)、序列
號等。通過故意不完成建立連接所需要的三次握手過程,造成連接一方的資源耗盡。
通過攻擊者有意的不完成建立連接所需要的三次握手的全過程,從而造成了C 機器的
資源耗盡。序列號的可預測性,目標主機應答連接請求時返回的SYN/ACK 的序列號時可預
測的。(早期TCP 協(xié)議棧,具體的可以參見1981 年出的關(guān)于TCP 雛形的RFC793 文檔)
TCP 頭結(jié)構(gòu)
TCP 協(xié)議頭最少20 個字節(jié),包括以下的區(qū)域(由于翻譯不禁相同,文章中給出
相應的英文單詞):
TCP 源端口(Source Port):16 位的源端口其中包含初始化通信的端口。源端口和
源IP 地址的作用是標示報問的返回地址。
TCP 目的端口(Destination port):16 位的目的端口域定義傳輸?shù)哪康。這個端口指
明報文接收計算機上的應用程序地址接口。
TCP 序列號(序列碼,Sequence Number):32 位的序列號由接收端計算機使用,重
新分段的報文成最初形式。當SYN 出現(xiàn),序列碼實際上是初始序列碼(ISN),而第一個數(shù)
據(jù)字節(jié)是ISN+1。這個序列號(序列碼)是可以補償傳輸中的不一致。
TCP 應答號(Acknowledgment Number):32 位的序列號由接收端計算機使用,重
組分段的報文成最初形式。,如果設(shè)置了ACK 控制位,這個值表示一個準備接收的包的序
列碼。
數(shù)據(jù)偏移量(HLEN):4 位包括TCP 頭大小,指示何處數(shù)據(jù)開始。
保留(Reserved):6 位值域,這些位必須是0。為了將來定義新的用途所保留。
標志(Code Bits):6 位標志域。表示為:緊急標志、有意義的應答標志、推、重置
連接標志、同步序列號標志、完成發(fā)送數(shù)據(jù)標志。按照順序排列是:URG、ACK、PSH、
RST、SYN、FIN。
窗口(Window):16 位,用來表示想收到的每個TCP 數(shù)據(jù)段的大小。
校驗位(Checksum):16 位TCP 頭。源機器基于數(shù)據(jù)內(nèi)容計算一個數(shù)值,收信息機
要與源機器數(shù)值結(jié)果完全一樣,從而證明數(shù)據(jù)的有效性。
優(yōu)先指針(緊急,Urgent Pointer):16 位,指向后面是優(yōu)先數(shù)據(jù)的字節(jié),在URG
標志設(shè)置了時才有效。如果URG 標志沒有被設(shè)置,緊急域作為填充。加快處理標示為緊急
的數(shù)據(jù)段。
選項(Option):長度不定,但長度必須以字節(jié)。如果沒有選項就表示這個一字節(jié)
的域等于0。
填充:不定長,填充的內(nèi)容必須為0,它是為了數(shù)學目的而存在。目的是確?
間的可預測性。保證包頭的結(jié)合和數(shù)據(jù)的開始處偏移量能夠被32 整除,一般額外的零以保
證TCP 頭是32 位的整數(shù)倍。
標志控制功能
URG:緊急標志
緊急(The urgent pointer) 標志有效。緊急標志置位,
ACK:確認標志
確認編號(Acknowledgement Number)欄有效。大多數(shù)情況下該標志位是置位的。
TCP 報頭內(nèi)的確認編號欄內(nèi)包含的確認編號(w+1,F(xiàn)igure:1)為下一個預期的序列編號,同
時提示遠端系統(tǒng)已經(jīng)成功接收所有數(shù)據(jù)。
PSH:推標志
該標志置位時,接收端不將該數(shù)據(jù)進行隊列處理,而是盡可能快將數(shù)據(jù)轉(zhuǎn)由應用
處理。在處理telnet 或rlogin 等交互模式的連接時,該標志總是置位的。
RST:復位標志
復位標志有效。用于復位相應的TCP 連接。
SYN:同步標志
同步序列編號(Synchronize Sequence Numbers)欄有效。該標志僅在三次握手建立
TCP 連接時有效。它提示TCP 連接的服務端檢查序列編號,該序列編號為TCP 連接初始端
(一般是客戶端)的初始序列編號。在這里,可以把TCP 序列編號看作是一個范圍從0 到4,
294,967,295 的32 位計數(shù)器。通過TCP 連接交換的數(shù)據(jù)中每一個字節(jié)都經(jīng)過序列編號。
在TCP 報頭中的序列編號欄包括了TCP 分段中第一個字節(jié)的序列編號。
FIN:結(jié)束標志
帶有該標志置位的數(shù)據(jù)包用來結(jié)束一個TCP 回話,但對應端口仍處于開放狀態(tài),
準備接收后續(xù)數(shù)據(jù)。
服務端處于監(jiān)聽狀態(tài),客戶端用于建立連接請求的數(shù)據(jù)包(IP packet)按照TCP/IP
協(xié)議堆棧組合成為TCP 處理的分段(segment)。
分析報頭信息: TCP 層接收到相應的TCP 和IP 報頭,將這些信息存儲到內(nèi)存中。
檢查TCP 校驗和(checksum):標準的校驗和位于分段之中(Figure:2)。如果檢驗
失敗,不返回確認,該分段丟棄,并等待客戶端進行重傳。
查找協(xié)議控制塊(PCB{}):TCP 查找與該連接相關(guān)聯(lián)的協(xié)議控制塊。如果沒有找
到,TCP 將該分段丟棄并返回RST。(這就是TCP 處理沒有端口監(jiān)聽情況下的機制) 如果該
協(xié)議控制塊存在,但狀態(tài)為關(guān)閉,服務端不調(diào)用connect()或listen()。該分段丟棄,但不返
回RST?蛻舳藭䥽L試重新建立連接請求。
建立新的socket:當處于監(jiān)聽狀態(tài)的socket 收到該分段時,會建立一個子socket,
同時還有socket{},tcpcb{}和pub{}建立。這時如果有錯誤發(fā)生,會通過標志位來拆除相應
的socket 和釋放內(nèi)存,TCP 連接失敗。如果緩存隊列處于填滿狀態(tài),TCP 認為有錯誤發(fā)生,
所有的后續(xù)連接請求會被拒絕。這里可以看出SYN Flood 攻擊是如何起作用的。
丟棄:如果該分段中的標志為RST 或ACK,或者沒有SYN 標志,則該分段丟棄。
并釋放相應的內(nèi)存。
發(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)先指針
IRS : 初始接收序列號
當前段變量
SEG.SEQ : 段序列號
SEG.ACK : 段確認標記
SEG.LEN : 段長
SEG.WND : 段窗口
SEG.UP : 段緊急指針
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-ACK : 等待原來發(fā)向遠程TCP 的連接中斷請求的確認。
TIME-WAIT : 等待足夠的時間以確保遠程TCP 接收到連接中斷請求的確認。
CLOSED : 沒有任何連接狀態(tài)。
TCP 連接過程是狀態(tài)的轉(zhuǎn)換,促使發(fā)生狀態(tài)轉(zhuǎn)換的是用戶調(diào)用:OPEN,SEND,
RECEIVE,CLOSE,ABORT 和STATUS。傳送過來的數(shù)據(jù)段,特別那些包括以下標記的數(shù)
據(jù)段SYN,ACK,RST 和FIN。還有超時,上面所說的都會時TCP 狀態(tài)發(fā)生變化。
序列號
請注意,我們在TCP 連接中發(fā)送的字節(jié)都有一個序列號。因為編了號,所以可以
確認它們的收到。對序列號的確認是累積性的。TCP 必須進行的序列號比較操作種類包括
以下幾種:
①決定一些發(fā)送了的但未確認的序列號。
②決定所有的序列號都已經(jīng)收到了。
③決定下一個段中應該包括的序列號。
對于發(fā)送的數(shù)據(jù)TCP 要接收確認,確認時必須進行的:
SND.UNA = 最老的確認了的序列號。
SND.NXT = 下一個要發(fā)送的序列號。
SEG.ACK = 接收TCP 的確認,接收TCP 期待的下一個序列號。
SEG.SEQ = 一個數(shù)據(jù)段的第一個序列號。
SEG.LEN = 數(shù)據(jù)段中包括的字節(jié)數(shù)。
SEG.SEQ+SEG.LEN-1 = 數(shù)據(jù)段的最后一個序列號。
如果一個數(shù)據(jù)段的序列號小于等于確認號的值,那么整個數(shù)據(jù)段就被確認了。而
在接收數(shù)據(jù)時下面的比較操作是必須的:
RCV.NXT = 期待的序列號和接收窗口的最低沿。
RCV.NXT+RCV.WND:1 = 最后一個序列號和接收窗口的最高沿。
SEG.SEQ = 接收到的第一個序列號。
SEG.SEQ+SEG.LEN:1 = 接收到的最后一個序列號。
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡AI應用典型場景技術(shù)解決方案白皮書
  • 2、回復“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復“ZGDX”免費領(lǐng)取《中國電信5G NTN技術(shù)白皮書
  • 6、回復“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復“5GX3”免費領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1
  • 對本帖內(nèi)容的看法? 我要點評

     
    [充值威望,立即自動到帳] [VIP貴賓權(quán)限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權(quán)限,下載站內(nèi)資料無憂
    dingshipeng
    論壇元老



     發(fā)短消息    關(guān)注Ta 

    公益·慈善勛章  
    積分 22675
    帖子 31
    威望 684 個
    禮品券 0 個
    專家指數(shù) 0
    注冊 2007-8-30
    專業(yè)方向 
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2007-09-13 08:39:50 
    學習了,雖然有點看不懂
    努力哈

    對本帖內(nèi)容的看法? 我要點評

     
    [立即成為VIP會員,百萬通信專業(yè)資料立即下載,支付寶、微信付款,簡單、快速!]
    ll19190504
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關(guān)注Ta 

    積分 3383
    帖子 305
    威望 19214 個
    禮品券 5 個
    專家指數(shù) 0
    注冊 2007-12-17
    專業(yè)方向  通信
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2009-07-20 17:01:12 
    好文要頂!
    我頂!

    對本帖內(nèi)容的看法? 我要點評

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國通信人才網(wǎng)
    瀟瀟東哥
    高級會員



     發(fā)短消息    關(guān)注Ta 

    積分 1760
    帖子 352
    威望 4301 個
    禮品券 0 個
    專家指數(shù) 0
    注冊 2010-4-29
    專業(yè)方向  網(wǎng)優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2010-05-16 20:46:21  QQ
    學習了,雖然有點看不懂
    努力

    對本帖內(nèi)容的看法? 我要點評

     
    [2分鐘擁有VIP權(quán)限和充足威望,可下載站內(nèi)任何資料] [快速找到一份高薪的通信行業(yè)職位]
    tongzhizhe
    銀牌會員



     發(fā)短消息    關(guān)注Ta 

    積分 2914
    帖子 586
    威望 1721 個
    禮品券 0 個
    專家指數(shù) -16
    注冊 2010-5-17
    專業(yè)方向  網(wǎng)優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2010-08-03 10:14:04 
    有點看不懂

    對本帖內(nèi)容的看法? 我要點評

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國通信人才網(wǎng)

    快速回復主題    
    標題 [HUWEI] tcp三次握手及原理" tabindex="1">
    內(nèi)容
     上傳資料請點左側(cè)【添加附件】

    當前時區(qū) GMT+8, 現(xiàn)在時間是 2025-01-26 01:16:33
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務郵箱:mscbsc@163.com

    Processed in 0.679983 second(s), 20 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動通信網(wǎng) - 移動通信論壇 - 通信招聘網(wǎng) - Archiver