麻豆黑色丝袜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进女人j啪啪无遮挡动态| 日韩手机视频| 国产一级不卡毛片| 天天操天天干天天干| 老子影院我不卡在线理论| 一个人看的hd免费视频| 国产精品国产三级在线专区| 国语一级片| 日韩精品资源| 好男人社区神马www在线观看| 亚洲国产欧美目韩成人综合| 污小说总裁整夜没拔出| 九九精品99久久久香蕉| 国产欧美精品一区二区色综合| 欧美激情综合色综合啪啪五月| 日韩国产成人精品视频| 国产线路中文字幕| 日本一区中文字幕日本一二三区视频| 麻豆日记下载| 精品在线一区二区| 色悠久久久久综合欧美99| 亚洲欧美日韩中文无线码| 精品天海翼一区二区| 韩国男女无遮挡高清性视频| 国产一级黄色录像| 野花视频在线观看免费观看最新 | 日本高清不卡免费| 污小说总裁整夜没拔出| 欧美人与动人物姣配xxxx| 啊…别了在线观看免费下载| 日韩伦理片电影在线免费观看| 中文字幕avdvd| 又爽又刺激的视频| 欧美一级视| 国产亚洲欧美日韩俺去了| 波多野结衣护士无删减| 秋葵视频在线观看在线下载|