• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            山寨:不是最好的,是最適合我們的!歡迎體驗山寨 中文版MSDN

            Blog @ Blog

            當華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達

            常用鏈接

            統(tǒng)計

            積分與排名

            BBS

            Blog

            Web

            最新評論

            TCP頭結(jié)構(gòu)

            TCP頭結(jié)構(gòu)
            TCP頭結(jié)構(gòu)
               TCP協(xié)議頭最少20個字節(jié),包括以下的區(qū)域(由于翻譯不禁相同,文章中給出相應(yīng)的英文單詞):
               TCP源端口(Source Port):16位的源端口其中包含初始化通信的端口。源端口和源IP地址的作用是標示報問的返回地址。
               TCP目的端口(Destination port):16位的目的端口域定義傳輸?shù)哪康摹_@個端口指明報文接收計算機上的應(yīng)用程序地址接口。
               TCP序列號(序列碼,Sequence Number):32位的序列號由接收端計算機使用,重新分段的報文成最初形式。當SYN出現(xiàn),序列碼實際上是初始序列碼(ISN),而第一個數(shù)據(jù)字節(jié)是ISN+1。這個序列號(序列碼)是可以補償傳輸中的不一致。
               TCP應(yīng)答號(Acknowledgment   Number):32位的序列號由接收端計算機使用,重組分段的報文成最初形式。,如果設(shè)置了ACK控制位,這個值表示一個準備接收的包的序列碼。
               數(shù)據(jù)偏移量(HLEN):4位包括TCP頭大小,指示何處數(shù)據(jù)開始。
               保留(Reserved):6位值域,這些位必須是0。為了將來定義新的用途所保留。
               標志(Code Bits):6位標志域。表示為:緊急標志、有意義的應(yīng)答標志、推、重置連接標志、同步序列號標志、完成發(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ù)學(xué)目的而存在。目的是確保空間的可預(yù)測性。保證包頭的結(jié)合和數(shù)據(jù)的開始處偏移量能夠被32整除,一般額外的零以保證TCP頭是32位的整數(shù)倍。
            <附圖是用SNIFFER抓的一個包頭結(jié)構(gòu)>

                    00 50 07 45 9b d6 43        3c 47 fd 37 50 50 18
                    ff 1f 05 a5 00 00 48         54 54 50 2f 31 2e 31
                    20 32 30 30 20 4f 4b         0d 0a 53 65 72 76 65
                    72 3a 20 4d 69 63 72         6f 73 6f 66 74 2d 49
                    49 53 2f 35 2e 30 0d         0a 44 61 74 65 3a 20
                    57 65 64 2c 20 31 32         20 4e 6f 76 20 32 30
                    30 33 20 30 33 3a 33         37 3a 35 35 20 47 4d
                    54 0d 0a 43 6f 6e 6e         65 63 74 69 6f 6e 3a
                    20 63 6c 6f 73 65 0d         0a 48 54 54 50 2f 31
                    2e 31 20 32 30 30 20         4f 4b 0d 0a 53 65 72
                    76 65 72 3a 20 4d 69         63 72 6f 73 6f 66 74
                    2d 49 49 53 2f 35 2e         30 0d 0a 50 72 61 67
                    6d 61 3a 20 6e 6f 2d         63 61 63 68 65 0d 0a
                    43 6f 6e 74 65 6e 74         2d 74 79 70 65 3a 20
                    74 65 78 74 2f 70 6c         61 69 6e 3b 63 68 61
                    72 73 65 74 3d 67 62         32 33 31 32 0d 0a 0d
                    0a

            解析:
            源端口:00 50    目的端口:07 45  序列號:9b d6 43 3c
            應(yīng)答號:47 fd 37 50   數(shù)據(jù)偏移量:50   保留:
            標志位:18       窗口:ff 1f             校驗位:05 a5
            優(yōu)先指針:00 00    選項:       填充:(余下的205字節(jié)為TCP數(shù)據(jù))

                  標志控制功能 URG:緊急標志
                  緊急(The urgent pointer) 標志有效。緊急標志置位,
                ACK:確認標志 確認編號(Acknowledgement  Number)欄有效。大多數(shù)情況下該標志位是置位的。TCP報頭內(nèi)的確認編號欄內(nèi)包含的確認編號(w+1,F(xiàn)igure:1)為下一個預(yù)期的序列編號,同時提示遠端系統(tǒng)已經(jīng)成功接收所有數(shù)據(jù)。
              PSH:推標志
                  該標志置位時,接收端不將該數(shù)據(jù)進行隊列處理,而是盡可能快將數(shù)據(jù)轉(zhuǎn)由應(yīng)用處理。在處理 telnet 或 rlogin 等交互模式的連接時,該標志總是置位的。
                RST:復(fù)位標志 復(fù)位標志有效。用于復(fù)位相應(yīng)的TCP連接。
                SYN:同步標志 同步序列編號(Synchronize Sequence Numbers)欄有效。該標志僅在三次握手建立TCP連接時有效。它提示TCP連接的服務(wù)端檢查序列編號,該序列編號為TCP連接初始端(一般是客戶端)的初始序列編號。在這里,可以把TCP序列編號看作是一個范圍從0到4,294,967,295的32位計數(shù)器。通過TCP連接交換的數(shù)據(jù)中每一個字節(jié)都經(jīng)過序列編號。在TCP報頭中的序列編號欄包括了TCP分段中第一個字節(jié)的序列編號。
              FIN:結(jié)束標志
                帶有該標志置位的數(shù)據(jù)包用來結(jié)束一個TCP回話,但對應(yīng)端口仍處于開放狀態(tài),準備接收后續(xù)數(shù)據(jù)。服務(wù)端處于監(jiān)聽狀態(tài),客戶端用于建立連接請求的數(shù)據(jù)包(IP packet)按照TCP/IP協(xié)議堆棧組合成為TCP處理的分段(segment)。
                分析報頭信息: TCP層接收到相應(yīng)的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)閉,服務(wù)端不調(diào)用connect()或listen()。該分段丟棄,但不返回RST。客戶端會嘗試重新建立連接請求。
              建立新的socket:當處于監(jiān)聽狀態(tài)的socket收到該分段時,會建立一個子socket,同時還有socket{},tcpcb{}和pub{}建立。這時如果有錯誤發(fā)生,會通過標志位來拆除相應(yīng)的socket和釋放內(nèi)存,TCP連接失敗。如果緩存隊列處于填滿狀態(tài),TCP認為有錯誤發(fā)生,所有的后續(xù)連接請求會被拒絕。這里可以看出SYN Flood攻擊是如何起作用的。
                 丟棄:如果該分段中的標志為RST或ACK,或者沒有SYN標志,則該分段丟棄。并釋放相應(yīng)的內(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)收到了。
                   ③決定下一個段中應(yī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 = 接收到的最后一個序列號

            posted on 2008-05-19 23:09 isabc 閱讀(5643) 評論(3)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

            評論

            # re: TCP頭結(jié)構(gòu) 2008-11-20 11:19 bamboo1122

            謝謝你的這篇文章,最近正在研究網(wǎng)絡(luò)數(shù)據(jù)流..

            忽然看到你的簽名:

            當華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達

            這句話我第一次聽到是在《似水年華》里,超級喜歡里面的那種唯美的意境。
            或許這句話就是文和英之間的秘密吧..

            呵呵,非常感謝  回復(fù)  更多評論   

            # re: TCP頭結(jié)構(gòu) 2010-12-14 18:05 sdner

            同樣謝謝你了。我也在看網(wǎng)絡(luò)相關(guān)協(xié)議。  回復(fù)  更多評論   

            # re: TCP頭結(jié)構(gòu) 2011-12-14 14:45 wu

            感謝分享。  回復(fù)  更多評論   

            廣告信息(免費廣告聯(lián)系)

            中文版MSDN:
            歡迎體驗

            久久国产精品-久久精品| 久久综合精品国产一区二区三区| 久久久久黑人强伦姧人妻| 日本精品一区二区久久久| 久久夜色精品国产亚洲| 久久人人妻人人爽人人爽| 久久国产香蕉一区精品| 午夜久久久久久禁播电影| 亚洲欧美日韩精品久久| 97精品依人久久久大香线蕉97| 久久99热狠狠色精品一区| 中文字幕久久精品| 99久久人妻无码精品系列蜜桃 | 精品久久久久久久无码| 国产成人久久精品二区三区| 久久精品国产清自在天天线 | 久久精品国产亚洲av麻豆小说| 国产精品久久久99| 欧洲人妻丰满av无码久久不卡| 国产L精品国产亚洲区久久| 午夜精品久久久久久久| 午夜精品久久久久久久无码| 91精品国产91久久久久福利| 国产69精品久久久久观看软件| 一级做a爰片久久毛片16| 亚洲va久久久噜噜噜久久| 亚洲va久久久久| 国产女人aaa级久久久级| 青青草原精品99久久精品66| 无码国内精品久久综合88| 国产精品成人精品久久久 | 精品伊人久久大线蕉色首页| 欧美久久亚洲精品| 久久精品成人欧美大片| 热久久这里只有精品| 久久国产高清字幕中文| 久久99国产综合精品女同| 久久婷婷五月综合色奶水99啪| 人妻无码αv中文字幕久久琪琪布| 四虎影视久久久免费| 久久亚洲国产精品123区|