麻豆黑色丝袜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
主站蜘蛛池模板: 四虎永久在线精品免费影视| 国精品在亚洲_欧美| 波多野结衣被绝伦在线观看| 久久亚洲精品人成综合网 | 精品一区二区三区在线观看| 大片毛片女女女女女女女| 美女被吸乳羞羞动漫| 男人j进女人p免费视频不要下载的| 韩国爱情电影妈妈的朋友| 精品国产精品久久一区免费式| 中文字幕无线码中文字幕免费 | 好紧我太爽了视频免费国产| 69精品久久久久| 日本三级吃奶乳视频在线播放| 男朋友想吻我腿中间部位| 国产最新凸凹视频免费| 久草这里只有精品| 久久精品国产色蜜蜜麻豆| 又色又爽又黄的视频软件app| 小莹与翁回乡下欢爱姿势| 三级很黄很黄的视频| 好吊妞视频988在线播放| 日本不卡在线播放| 天天拍拍夜夜出水| 午夜dj在线观看免费视频| 免费看的黄色大片| 男人天堂网在线观看| 98av视频| 国产激情电影综合在线看| 曰批免费视频播放免费| 美妇又紧又嫩又多水好爽| 亚洲最大成人网色| 一级做a爱片久久毛片| 翁公厨房嫒媛猛烈进出| 2021国产麻豆剧传媒仙踪林| 香港伦理电影三级中文字幕| 日韩精品一区二区三区毛片| 天天做天天摸天天爽天天爱| 最近中文2019字幕第二页| 一二三四社区在线中文视频| 四虎影院国产|