jasmine214--love

          只有當你的內(nèi)心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0
          相對于SOCKET開發(fā)者,TCP創(chuàng)建過程和鏈接折除過程是由TCP/IP協(xié)議棧自動創(chuàng)建的.因此開發(fā)者并不需要控制這個過程.但是對于理解TCP底層運作機制,相當有幫助.
           
             而且對于有網(wǎng)絡協(xié)議工程師之類筆試,幾乎是必考的內(nèi)容.企業(yè)對這個問題熱情之高,出乎我的意料:-)。有時上午面試前強調(diào)這個問題,并重復講一次,下午幾乎每一個人都被問到這個問題。
           
          因此在這里詳細解釋一下這兩個過程。
           
          TCP三次握手
           
          所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發(fā)送3個包。
           
          三次握手的目的是連接服務器指定端口,建立TCP連接,并同步連接雙方的序列號和確認號并交換 TCP 窗口大小信息.在socket編程中,客戶端執(zhí)行connect()時。將觸發(fā)三次握手。
           
           
           
           
          • 第一次握手:
            客戶端發(fā)送一個TCP的SYN標志位置1的包指明客戶打算連接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。
          • 第二次握手:
            服務器發(fā)回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即X+1。


          • 第三次握手.
            客戶端再次發(fā)送確認包(ACK) SYN標志位為0,ACK標志位為1.并且把服務器發(fā)來ACK的序號字段+1,放在確定字段中發(fā)送給對方.并且在數(shù)據(jù)段放寫ISN的+1

          SYN攻擊

             在三次握手過程中,服務器發(fā)送SYN-ACK之后,收到客戶端的ACK之前的TCP連接稱為半連接(half-open connect).此時服務器處于Syn_RECV狀態(tài).當收到ACK后,服務器轉(zhuǎn)入ESTABLISHED狀態(tài).

            Syn攻擊就是 攻擊客戶端 在短時間內(nèi)偽造大量不存在的IP地址,向服務器不斷地發(fā)送syn包,服務器回復確認包,并等待客戶的確認,由于源地址是不存在的,服務器需要不斷的重發(fā)直 至超時,這些偽造的SYN包將長時間占用未連接隊列,正常的SYN請求被丟棄,目標系統(tǒng)運行緩慢,嚴重者引起網(wǎng)絡堵塞甚至系統(tǒng)癱瘓。

           Syn攻擊是一個典型的DDOS攻擊。檢測SYN攻擊非常的方便,當你在服務器上看到大量的半連接狀態(tài)時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊.在Linux下可以如下命令檢測是否被Syn攻擊

          netstat -n -p TCP | grep SYN_RECV

          一般較新的TCP/IP協(xié)議棧都對這一過程進行修正來防范Syn攻擊,修改tcp協(xié)議實現(xiàn)。主要方法有SynAttackProtect保護機制、SYN cookies技術、增加最大半連接和縮短超時時間等.

          但是不能完全防范syn攻擊。

          TCP 四次揮手

          TCP的連接的拆除需要發(fā)送四個包,因此稱為四次揮手(four-way handshake)。客戶端或服務器均可主動發(fā)起揮手動作,在socket編程中,任何一方執(zhí)行close()操作即可產(chǎn)生揮手操作。


           

           

          參見wireshark抓包,實測的抓包結(jié)果并沒有嚴格按揮手時序。我估計是時間間隔太短造成。


          原文: http://blog.chinaunix.net/u3/105675/showart.php?id=2201855

          Feedback

          # re: TCP三次握手及四次揮手詳細圖解  回復  更多評論   

          2010-12-14 18:48 by 何楊
          好啊!
          主站蜘蛛池模板: 辽中县| 永新县| 申扎县| 砀山县| 周口市| 香河县| 华亭县| 廉江市| 巴林左旗| 博爱县| 沅陵县| 昌吉市| 辽宁省| 江山市| 册亨县| 兴安县| 新邵县| 平江县| 梁山县| 桐乡市| 乌鲁木齐县| 资中县| 宁阳县| 萨迦县| 桂林市| 武乡县| 高雄市| 上杭县| 山丹县| 盐城市| 墨玉县| 清新县| 玉田县| 鄂温| 东平县| 普格县| 阜新市| 镇原县| 灵台县| 银川市| 迁安市|