在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么建鏈接要3次握手,斷鏈接需要4次揮手?

Linux愛好者 ? 來源:Jack ? 作者:Linux愛好者 ? 2020-11-12 15:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

首先處理這個問題,我們要知道一些網絡知識,要知道tcp那些事,比如說三次握手,和四次揮手......很多人會問,為什么建鏈接要3次握手,斷鏈接需要4次揮手?讓我們一起看下下面的流程圖:

首先,是三次握手:

首先Client端發送連接請求報文,Server段接受連接后回復ACK報文,并為這次連接分配資源。Client端接收到ACK報文后也向Server段發生ACK報文,并分配資源,這樣TCP連接就建立了。

然后是中間部分:兩者之間可以傳輸數據了

再次,下面的斷開鏈接:【注意】中斷連接端可以是Client端,也可以是Server端。

假設Client端發起中斷連接請求,也就是發送FIN報文。Server端接到FIN報文后,意思是說"我Client端沒有數據要發給你了",但是如果你還有數據沒有發送完成,則不必急著關閉Socket,可以繼續發送數據。

所以你先發送ACK,"告訴Client端,你的請求我收到了,但是我還沒準備好,請繼續你等我的消息"。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,"告訴Client端,好了,我這邊數據發完了,準備好關閉連接了"。

Client端收到FIN報文后,"就知道可以關閉連接了,但是他還是不相信網絡,怕Server端不知道要關閉,所以發送ACK后進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK后,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復,則證明Server端已正常關閉,那好,我Client端也可以關閉連接了。Ok,TCP連接就這樣關閉了!

那么可以這么理解,當client進入time_wait的等待時間是2個MSL

讓我們看一下一臺linux服務器的網絡狀態:

# netstat -an | awk '/^tcp/ {++State[$NF]}END{for(key in State)print key " " State[key]}'LAST_ACK 7LISTEN 9SYN_RECV 2CLOSE_WAIT 125ESTABLISHED 1070FIN_WAIT1 17FIN_WAIT2 247CLOSING 4TIME_WAIT 25087

對于網站來說,這樣的time_wait略顯偏高, 也就是說大量的關閉操作在等待2個MSL后結束,正常我們的tcp 端口是65535個,如果并發再高一些,可能會大量的socket不能及時被釋放,從而導致性能下降,所以我們可以通過linux內核進行一些網絡調整比如,開啟socket重用和快速回收:

net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_max_tw_buckets = 5000net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_keepalive_time = 1200net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_syncookies = 1

表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防范少量SYN攻擊,默認為0,表示關閉;

net.ipv4.tcp_tw_reuse = 1

表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉;

net.ipv4.tcp_tw_recycle = 1

表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。

系統tcp_timestamps缺省就是開啟的,所以當tcp_tw_recycle被開啟后,實際上這種行為就被激活了.如果服務器身處NAT環境,安全起見,通常要禁止tcp_tw_recycle,至于TIME_WAIT連接過多的問題,可以通過激活tcp_tw_reuse來緩解。

net.ipv4.tcp_max_tw_buckets = 5000

表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除并打印警告信息。默認為180000,改為 5000。對于Apache、Nginx等服務器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對于Squid,效果卻不大。此項參數可以控制TIME_WAIT套接字的最大數量,避免Squid服務器被大量的TIME_WAIT套接字拖死。

net.ipv4.tcp_max_syn_backlog = 8192

表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網絡連接數。

net.ipv4.tcp_keepalive_time = 1200

表示當keepalive起用的時候,TCP發送keepalive消息的頻度。缺省是2小時,改為20分鐘。

net.ipv4.ip_local_port_range = 1024-65000

表示用于向外連接的端口范圍。缺省情況下很小:32768到61000,改為1024到65000。

# netstat -an | awk '/^tcp/ {++State[$NF]}END{for(key in State)print key " " State[key]}' LAST_ACK140 LISTEN9 SYN_RECV7 CLOSE_WAIT2 ESTABLISHED972 FIN_WAIT121 FIN_WAIT2152 CLOSING2 TIME_WAIT682

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11508

    瀏覽量

    213567
  • 服務器
    +關注

    關注

    13

    文章

    9783

    瀏覽量

    87824
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1402

    瀏覽量

    80932

原文標題:Linux TCP 狀態 TIME_WAIT 過多的處理

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TCP三握手和四揮手,這樣解釋太通俗易懂了!

    TCP連接的建立和釋放分別通過“三握手”和“四揮手”來完成。三握手過程TCP三
    的頭像 發表于 04-24 19:33 ?734次閱讀
    TCP三<b class='flag-5'>次</b><b class='flag-5'>握手</b>和四<b class='flag-5'>次</b><b class='flag-5'>揮手</b>,這樣解釋太通俗易懂了!

    如何監測TCP三握手過程

    在計算機網絡中,傳輸控制協議(TCP)是確保數據可靠傳輸的關鍵協議之一。TCP通過三握手過程來建立兩個端點之間的連接,這個過程對于網絡通信的穩定性和安全性至關重要。 TCP三握手
    的頭像 發表于 01-06 09:20 ?755次閱讀

    TCP三握手與負載均衡的配置

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三握手(Three-way Handshake)建立連接,確保數據的可靠傳輸。而負載均衡(Load
    的頭像 發表于 01-06 09:15 ?549次閱讀

    TCP三握手如何影響網絡性能

    在計算機網絡中,TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三握手過程來建立兩個網絡實體之間的連接,確保數據傳輸的可靠性和順序性。 TCP三握手的過程 SYN
    的頭像 發表于 01-06 09:13 ?629次閱讀

    TCP三握手的常見問題及解決方案

    TCP三握手(Three-way Handshake)是TCP(傳輸控制協議)建立連接時的一個過程,它確保了兩個端點在開始通信之前都準備好了。這個過程包括三通信:SYN(同步),SYN-ACK
    的頭像 發表于 01-06 09:11 ?1225次閱讀

    TCP三握手與連接建立的關系

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它負責在兩個主機之間建立、維護和終止連接,確保數據的可靠傳輸。TCP連接的建立過程是通過三握手
    的頭像 發表于 01-06 09:09 ?715次閱讀

    TCP三握手的步驟詳解

    1.TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。在兩個主機之間建立通信之前,必須通過三握手過程來建立一個穩定的連接。這個過程確保了兩個端點都準備好發送和接收數據。 2. 第一
    的頭像 發表于 01-06 09:07 ?932次閱讀

    TCP三握手的網絡抓包分析

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。TCP通過三握手過程建立兩個通信實體之間的連接,確保數據傳輸的可靠性和順序性。 TCP三握手
    的頭像 發表于 01-06 09:05 ?706次閱讀

    TCP三握手安全性分析

    TCP(傳輸控制協議)的三握手是建立可靠連接的重要機制,它確保了通信雙方在數據傳輸前的連接狀態是可靠和準確的。然而,從安全性的角度來分析,TCP三握手并非無懈可擊,以下是對其安全性
    的頭像 發表于 01-03 18:10 ?1007次閱讀

    TCP三握手與UDP的區別

    、連接管理、可靠性、效率等方面有著顯著的區別。 1. TCP三握手 TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。在數據傳輸之前,TCP需要建立一個連接,這個過程被稱為“三
    的頭像 發表于 01-03 17:35 ?841次閱讀

    TCP三握手的基本原理

    在計算機網絡中,TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它確保了數據在網絡中傳輸的可靠性和順序性。為了建立兩個網絡實體之間的通信,TCP使用一種稱為“三握手
    的頭像 發表于 01-03 17:25 ?1134次閱讀

    TCP三握手協議的作用

    在計算機網絡中,數據的傳輸需要在發送方和接收方之間建立一個穩定的連接,以確保數據的完整性和順序。TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,它通過三握手協議來建立
    的頭像 發表于 01-03 17:15 ?916次閱讀

    TCP三握手的詳細過程

    TCP(傳輸控制協議)三握手是一種在互聯網上建立一個可靠的、有序的和錯誤檢測能力的連接的方法。這個過程確保了兩個設備(通常是客戶端和服務器)在數據傳輸開始之前能夠相互確認對方的存在和狀態。以下
    的頭像 發表于 01-03 17:11 ?1185次閱讀

    DHCP 四握手

    DHCP的四握手過程大白話大致如下: 客戶端:剛開機,還沒有IP地址,哪位佬能給個IP? 這個過程中,客戶端就是一個網絡小白,它也不知道自己IP是多少,就開始喊話,問有沒有DHCP服務器能給它分配
    的頭像 發表于 12-25 10:11 ?463次閱讀

    簡述TCP協議的三握手機制

    TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它主要用于在IP網絡中進行數據傳輸。TCP協議的三握手
    的頭像 發表于 08-16 10:57 ?2009次閱讀
    主站蜘蛛池模板: 欧美成人性高清观看 | 日本污视频 | 国产亚洲美女精品久久久2020 | 成年午夜一级毛片视频 | 四虎影视永久在线精品免费播放 | 又黄又爽又猛午夜性色播在线播放 | 亚洲成在人线影视天堂网 | 黄色国产网站 | 欧美色爱综合 | 国产精品资源在线观看网站 | 欧美精品一区视频 | 日本韩国做暖暖小视频 | 天天做天天爽天天谢 | 天天做天天爱夜夜想毛片 | 狠狠色噜噜狠狠狠狠五月婷 | 国产看色免费 | 欧美激情亚洲精品日韩1区2区 | 国模无水印一区二区三区 | 亚洲第一区第二区 | 久久久久国产精品免费网站 | 美女被拍拍拍拍拍拍拍拍 | 91久久澡人人爽人人添 | 最好看的2019中文字幕免费高清 | 播放个毛片看看 | 黄色网免费观看 | 狠狠躁夜夜躁人人爽天天段 | 狠狠夜夜 | 男人天堂综合网 | bt在线www天堂资源网 | 毛片免| 51vv福利视频在线精品 | 二区久久国产乱子伦免费精品 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 亚洲jizzjizz在线播放久 | 天天干天天草 | 97视频免费上传播放 | 中文在线三级中文字幕 | 天堂激情 | 国产黄网站在线观看 | 四虎在线观看免费永久 | 欧美性黑人十极品hd |