麻豆黑色丝袜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
主站蜘蛛池模板: 午夜爽爽影院| 波多野结衣在丈夫面前| 日韩色在线观看| 妖精的尾巴ova| 国产砖码砖专区| 啊v在线播放| 爽天天天天天天天| 引诱亲女乱小说完整版18| 露脸国语对白视频| 日本插曲的痛的30分钟| 四虎影视成人永久在线观看| 免费一级做a爰片久久毛片潮喷| 口工里番h全彩动态图| 日本漫画大全无翼无彩全番| 波多野结衣33分钟办公室jian情| 久久久久久久久国产| 99久久精品免费精品国产| 日韩欧美国产三级| 中文字幕一精品亚洲无线一区| 日本午夜精品一区二区三区电影 | 翁熄合h| 男人桶女人视频不要下载| 久久久久久久国产精品电影| 国产伦精品一区二区三区免费下载| 欧美aaaaaaaaa| 国产日韩欧美| 日本护士xxxx视频免费| 国产成人精品无缓存在线播放 | 男女性潮高清免费网站| 嫩草影院免费观看| 欧美zoozzooz在线观看| 中文字幕www| 被夫上司强迫的女人在线| 美女扒开大腿让我爽| 性一交一乱一伦一| 小嫩妇又紧又嫩好紧视频| 毛片大全免费| 亚洲国产精品自产在线播放 | 久久综合综合久久| 美女张开腿黄网站免费| 波多野结衣电影免费在线观看|