麻豆黑色丝袜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
主站蜘蛛池模板: 客厅餐桌椅子上波多野结衣| 国模人体沟沟| 日b视频免费看| 2015天堂网| 色诱久久av| 啊灬啊灬啊灬快灬深用口述| 免费一级乱子伦片| 国产一区电影| 久久久久久久综合狠狠综合| 最近中文国语字幕在线播放| 精品国产麻豆| 中文字幕www| 美女的胸www又黄的网站| 欧美性猛交xxxx乱大交高清| 久久久噜噜噜久久中文字幕色伊伊| jux434被公每天侵犯的我| 午夜免费理论片a级| 亚洲精品99久久久久中文字幕| 你是我的城池营垒免费看| 四虎永久在线精品国产馆v视影院| 后进式视频| 精品一区二区三区免费视频| 成人口工漫画网站免费| 色国产精品一区在线观看| 草莓视频网站下载| 日本1819| 欧美超清videos1080p| 男人天堂官方网站| 一个人看的www高清直播在线观看| 男人一边吃奶一边做边爱 | 日日日操| 韩国女主播一区二区| 欧美日韩电影在线观看| 国产女主播喷水视频在线观看| 亚洲欧美中文日韩在线| 四虎精品在线视频| 大学生男男澡堂69gaysex| 欧美一级黄色片视频| a级毛片免费观看在线播放| 中文字字幕在线精品乱码app| 国产午夜精品一区二区三区|