国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領取全套視頻
            千鋒教育

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術(shù)干貨  > TCP_TW用法介紹

            TCP_TW用法介紹

            來源:千鋒教育
            發(fā)布人:xqq
            時間: 2023-11-20 22:54:38 1700492078

            一、TCP_TW概述

            TCP_TW全稱為TCP Time Wait狀態(tài),指的是一種TCP協(xié)議中的狀態(tài),一般出現(xiàn)在TCP連接斷開的過程中。在一個TCP連接的關(guān)閉過程中,經(jīng)過FIN、ACK、ACK的握手確認,最終由一方發(fā)送最后的ACK包,這個包在發(fā)送后需要等待一段時間后才能進入CLOSE狀態(tài)。這個等待時間就是TCP_TW狀態(tài)。

            TCP_TW狀態(tài)主要的目的是確保確認方正確的接受了另外一方的FIN包,并在此時判斷一些延遲的重復數(shù)據(jù)包等問題。TCP_TW狀態(tài)的默認等待時間是2分鐘,這個時間可以通過修改操作系統(tǒng)的參數(shù)來進行設置。

            二、TCP_TW狀態(tài)產(chǎn)生原因

            TCP_TW狀態(tài)的主要原因是防止由于網(wǎng)絡原因,F(xiàn)IN包或者ACK包沒有到達對方。如果沒有進入TCP_TW狀態(tài),那么就會立即回收socket和相關(guān)資源,這個時候FIN包到了接收方,接收方返回一個ACK包,但是由于sender已經(jīng)釋放了相關(guān)資源,這個時候ACK就無處可去,接收方無法獲取到這個ACK,這就不只是一個連接的問題了,可能會導致鏈接資源耗盡等問題。

            三、TCP_TW如何回收

            TCP_TW狀態(tài)的回收是通過定時器來完成的。每當一個socket進入TCP_TW狀態(tài)時,系統(tǒng)就會開啟一個定時器,并等待固定時間,比如2分鐘。在這個時間內(nèi),如果接收到對方的ACK包,那么這個定時器就會被立即銷毀,并進入CLOSE狀態(tài)。

            然而,在TCP_TW狀態(tài)下,如果由于ACK漏接或者其他原因,這個時間到了之后還沒有收到對方的ACK包,那么這個socket就需要被回收。如果這個socket處于端口共享狀態(tài),那么socket實際上不會被立即回收,而是進入假CLOSE狀態(tài)。這個時候,TCP協(xié)議會重新分配一個隨機數(shù)seq,同時重置計時器,如果在一段時間之內(nèi),沒有收到對方發(fā)來的重復的ACK包,那么socket就會被徹底關(guān)閉。

            四、TCP_TW狀態(tài)需要注意的問題

            TCP_TW狀態(tài)實際上是一個非常重要的狀態(tài),需要注意以下三個問題:

            1. 系統(tǒng)中同時存在大量TCP_TW狀態(tài)的socket就會導致系統(tǒng)資源的壓力,可能會引導奔潰。為了避免這種情況,可以通過修改內(nèi)核參數(shù)來限制TCP_TW狀態(tài)的數(shù)量。一般來說,建議將內(nèi)核參數(shù)設置為6000左右。

            2. 防止SYN等IP攻擊。攻擊者可以通過大量的SYN包來偽造TCP協(xié)議中的一個socket,從而放置于TCP_TW狀態(tài)。如果這種攻擊成功,系統(tǒng)的隊列資源將被占滿,無法被其他請求使用,系統(tǒng)就會崩潰。為了防止這個問題,可以在系統(tǒng)中添加過濾規(guī)則,阻止來自可疑IP地址的請求。

            3. 在協(xié)議棧中,應用程序和內(nèi)核之間的性能問題。每進入一個TCP_TW狀態(tài),都意味著會在內(nèi)核中創(chuàng)建一個資源對象,這個資源對象的使用可能會帶來一些性能問題。如果TCP_TW狀態(tài)對象過多,就有可能導致內(nèi)存使用過高,而且更加影響網(wǎng)絡系統(tǒng)的性能。

            五、TCP_TW狀態(tài)的代碼實現(xiàn)

            #include 
            #include 
            #include 
            #include 
            
            int tcp_time_wait(struct sock *sk, int state, int timeo)
            {
            int flags = sk->sk_shutdown;
            whitle (timeo) {
            flags |= send_sigurg(sk->sk_socket, NULL);
            release_sock(sk);
            
            if (signal_pending(current))
            goto ;
            
            if (sk->sk_state != state)
            goto ;
            
            if (tcp_out_of_resources(sk, GFP_ATOMIC))
            tcp_enter_memory_pressure(sk);
            
            if (time_after(jiffies, timeo))
            goto ;
            
            set_current_state(TASK_INTERRUPTIBLE);
            schedule_timeout(to_backoff(timeo));
            set_current_state(TASK_RUNNING);
            
            lock_sock(sk);
            }
            
            exit_reset:
            if (TCP_SKB_CB(sk->sk_send_head)->when == 0)
            TCP_SKB_CB(sk->sk_send_head)->when = tcp_time_stamp;
            
            if (sk->sk_state != TCP_TIME_WAIT)
            sk->sk_shutdown = flags|SEND_SHUTDOWN;
            
            sk->sk_state = TCP_TIME_WAIT;
            tcp_set_state(sk, TCP_TIME_WAIT);
            tcp_time_wait(sk, timeo);
            
            exit_ok:
            release_sock(sk);
            return 1;
            
            exit_signal:
            release_sock(sk);
            return -EINTR;
            }
            

            tags: tcp_tw
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領取
            今日已有369人領取成功
            劉同學 138****2860 剛剛成功領取
            王同學 131****2015 剛剛成功領取
            張同學 133****4652 剛剛成功領取
            李同學 135****8607 剛剛成功領取
            楊同學 132****5667 剛剛成功領取
            岳同學 134****6652 剛剛成功領取
            梁同學 157****2950 剛剛成功領取
            劉同學 189****1015 剛剛成功領取
            張同學 155****4678 剛剛成功領取
            鄒同學 139****2907 剛剛成功領取
            董同學 138****2867 剛剛成功領取
            周同學 136****3602 剛剛成功領取

            上一篇

            xfreerdp詳解

            下一篇

            mysql查看鎖
            相關(guān)推薦HOT