麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

TCP_TW用法介紹

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

一、TCP_TW概述

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

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

二、TCP_TW狀態產生原因

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

三、TCP_TW如何回收

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

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

四、TCP_TW狀態需要注意的問題

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

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

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

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

五、TCP_TW狀態的代碼實現

#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
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您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查看鎖
相關推薦HOT
主站蜘蛛池模板: 最好看的最新中文字幕2018免费视频| 啊v在线视频| 国产自产2023最新麻豆| 全彩无翼口工漫画大全3d| 精品麻豆国产| 亚洲天堂五月天| 啊公交车坐最后一排被c视频| 动漫女同性被吸乳羞羞漫画| 国产免费久久精品99久久| 又粗又硬又大又爽免费观看| 免费观看我爱你电影| 国内精品自产拍在线观看91| 里番acg全彩本子在线观看| 国产-第1页-浮力影院| 亚欧在线观看| 亚洲欧美小视频| 四虎影视永久地址www成人| 欧美www网站| 男男动漫全程肉无删减彩漫| 夜月高清免费在线观看| 欧美极品欧美日韩| 一二三四社区在线中文视频 | 大ji巴c死你h| 秋霞日韩一区二区三区在线观看 | 伊人第一路线| 国产精品久久国产精品99| 你懂的免费在线观看| 国产chinesehd在线观看| 韩国电影中文字幕在线观看| 中文毛片无遮挡高清免费 | 一本久久a久久精品vr综合| 欧美性猛交xxxx乱大交蜜桃| 日本动态120秒免费| 国产精品视频不卡| 亚洲a∨精品一区二区三区下载| 国产福利影院| 91麻豆国产福利精品| 乱岳合集500篇| 成人午夜小视频| 交换年轻夫妇5| 国产精品一区二区久久沈樵|