TCP เริ่มต้นหมดเวลาเชื่อมต่อใดใน Windows มีคีย์รีจิสทรีเพื่อกำหนดค่าหรือตั้งค่าแบบไดนามิกหรือไม่
TCP เริ่มต้นหมดเวลาเชื่อมต่อใดใน Windows มีคีย์รีจิสทรีเพื่อกำหนดค่าหรือตั้งค่าแบบไดนามิกหรือไม่
คำตอบ:
ใน Windows ค่าจะเป็นแบบไดนามิกสำหรับส่วนที่กำหนดไว้แม้ว่าค่าเริ่มต้นสำหรับการเชื่อมต่อเริ่มต้นคือ 72 วินาที การตั้งค่ารีจิสทรีถูกกำหนดไว้ในบทความนี้:
http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services: \ Tcpip \ Parameters
TcpInitialRTT : กำหนดการตั้งค่าการหมดเวลาเริ่มต้นสำหรับการเชื่อมต่อใหม่ จำนวนในหน่วยวินาทีนี้จะเพิ่มเป็นสองเท่าในแต่ละครั้งที่ส่งสัญญาณใหม่ก่อนที่จะหมดเวลาเชื่อมต่อ ค่าเริ่มต้นเป็น 3
TcpMaxConnectRetransmissions : กำหนดจำนวนการส่งสัญญาณใหม่ก่อนที่จะหมดเวลาการเชื่อมต่อ ค่าเริ่มต้นถึง 5
โดยปกติ "การเชื่อมต่อหมดเวลา" หมายถึงการหมดเวลาสำหรับการสร้างการเชื่อมต่อเริ่มต้นไปยังโฮสต์ ในหลาย ๆ ระบบ (รวมอยู่ใน Windows 7) ค่านี้ได้รับการกำหนดค่าโดยใช้การตั้งค่าแยกต่างหากจากหมดเวลาสำหรับการสื่อสารต่อเนื่องหลังจากสร้างการเชื่อมต่อแล้ว คำตอบนี้กล่าวถึงสถานการณ์ "การเชื่อมต่อเริ่มต้น" สำหรับ Windows 7 ซึ่งแตกต่างจาก XP
สำหรับ Windows 7 ต้องใช้โปรแกรมแก้ไขด่วนสองตัวเพื่อสนับสนุนการปรับการตั้งค่าการหมดเวลาเชื่อมต่อ การตั้งค่าใหม่สามารถกำหนดค่าได้ด้วยคำสั่ง 'netsh'
จากบทความโปรแกรมแก้ไขด่วน 2786464:
หมายเหตุใน Windows 7 และ Windows Server 2008 R2 ค่าการส่งสัญญาณ SYN สูงสุด TCP (JH: MaxSynRetransmissions) ถูกตั้งค่าเป็น 2 และไม่สามารถกำหนดค่าได้ เนื่องจากขีด จำกัด 3 วินาทีของค่าการหมดเวลาเริ่มต้น (JH: InitialRTO) การจับมือสามทาง TCP จะถูก จำกัด ไว้ที่กรอบเวลา 21 วินาที (3 วินาที + 2 * 3 วินาที + 4 * 3 วินาที = 21 วินาที) )
โปรแกรมแก้ไขด่วนแรกเพิ่มการตั้งค่า 'MaxSynRetransmissions' ซึ่งอนุญาตให้เปลี่ยนการตั้งค่าลองใหม่จากค่าเริ่มต้นที่ 2 การตั้งค่าที่สองเพิ่ม 'InitialRto' ซึ่งช่วยให้การเปลี่ยนค่า RTO เริ่มต้นจากค่าเริ่มต้นของ 3000ms (ใช่มิลลิวินาที) เท่านั้น สิ่งที่สั้นกว่า 3000ms; ไม่สามารถเพิ่มได้ ขึ้นอยู่กับสถานการณ์ของคุณคุณอาจต้องการโปรแกรมแก้ไขด่วน 'MaxSynRetransmissions' เท่านั้น
ติดตั้งโปรแกรมแก้ไขด่วนทั้งสองรีบูตจากนั้นเปิดหน้าต่างคำสั่งในฐานะผู้ดูแลระบบ ไม่จำเป็นต้องบูตเครื่องใหม่สำหรับการเรียกใช้คำสั่ง netsh ที่ตามมา
C:\Windows\system32>NET SESSION >nul 2>&1
C:\Windows\system32>IF %ERRORLEVEL% EQU 0 (ECHO Administrator PRIVILEGES Detected!) ELSE ( ECHO NOT AN ADMIN! )
Administrator PRIVILEGES Detected!
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:10:30.53
Connecting To 192.168.1.254...Could not open connection to the host, on port 23: Connect failed
14:10:51.60
C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=3
Ok.
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 3
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:27:02.33
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
Connect failed
14:27:47.41
C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=2
Ok.
C:\Windows\system32>netsh interface tcp set global InitialRto=1000
Ok.
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 1000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:29:06.13
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
Connect failed
14:29:13.20
หมายเหตุ: Windows telnet ใช้สำหรับการอ้างอิงสำหรับการหมดเวลาการเชื่อมต่อจริง จำเป็นต้องติดตั้งแยกต่างหาก แต่ทำได้ง่าย
ลิงค์เพิ่มเติม / รุ่งโรจน์:
TcpInitialRTT และ TcpMaxConnectRetransmissions อาจไม่มีอยู่ใน Vista และ Windows 2008 เอกสาร Microsoft นี้ไม่รวม http://download.microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc
และนี่บอกว่าอย่างน้อย TcpInitialRTT หายไปแม้ว่าฉันจะไม่รู้ว่ามันเชื่อถือได้แค่ไหน http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE
หากฉันเข้าใจคำถามของคุณถูกต้องคุณหมายถึง:
TcpTimedWaitDelay
คีย์นี้กำหนดเวลาที่ต้องผ่านไปก่อนที่ TCP / IP จะปล่อยการเชื่อมต่อที่ปิดและนำทรัพยากรกลับมาใช้ใหม่ ช่วงเวลาระหว่างการปิดและการเปิดตัวนี้เรียกว่าสถานะ TIME_WAIT หรือสองเท่าของอายุการใช้งานเซ็กเมนต์ (2MSL) สูงสุด ในช่วงเวลานี้ให้เปิดการเชื่อมต่อกับไคลเอ็นต์และเซิร์ฟเวอร์ใหม่โดยเสียค่าใช้จ่ายน้อยกว่าการสร้างการเชื่อมต่อใหม่ โดยการลดค่าของรายการนี้ TCP / IP สามารถปล่อยการเชื่อมต่อที่ปิดได้เร็วขึ้นและให้ทรัพยากรเพิ่มเติมสำหรับการเชื่อมต่อใหม่ ปรับพารามิเตอร์นี้หากแอปพลิเคชันที่รันอยู่ต้องการการปล่อยอย่างรวดเร็วการสร้างการเชื่อมต่อใหม่หรือการปรับเนื่องจากปริมาณงานต่ำที่เกิดจากการเชื่อมต่อหลายรายการในสถานะ TIME_WAIT
คีย์ที่แน่นอนคือ: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Parameters \ TcpTimedWaitDelay
คุณอาจไม่ได้ตั้งค่าหากคุณใช้ Win2008 หรือใหม่กว่า แต่ค่าเริ่มต้นคือ 240 ทศนิยม (240 วินาทีหรือ 4 นาทีนั่นคือ) คุณสามารถเพิ่มคีย์ให้กับรีจิสตรีด้วยค่าอื่นและจะมีผลหลังจากรีบูต (ทดสอบบน Windows Server 2008R2 ในสภาพแวดล้อมการใช้งานจริง) นี่คือค่าที่สูงอย่างไร้เหตุผลเนื่องจากคุณภาพของเครือข่ายที่ทันสมัย
ฉันมีแอปพลิเคชันน้อยกว่าหนึ่งเดือนที่ผ่านมาทำงานบนเซิร์ฟเวอร์ที่ใช้หมดจำนวนการเชื่อมต่อสูงสุดที่ Windows สามารถรองรับและทำลายบริการเครือข่ายทั้งหมดในเซิร์ฟเวอร์นั้นเป็นประจำ มากกว่า 16,000+ การเชื่อมต่อใน netstat -a เมื่อคุณจัดการ RDP ไปยังเซิร์ฟเวอร์ เราตั้งค่าเป็น 30 ทศนิยม (30 วินาที) และ voila ปัญหาได้รับการแก้ไข - น้อยกว่า 10,000 การเชื่อมต่อพร้อมกัน (เนื่องจากแอปเปิดอย่างรวดเร็วและปิดพวกเขา) และไม่มีปัญหาปริมาณงาน
TcpMaxDataRetransmissions
เป็น 16 (ค่าเริ่มต้นควรเป็น 5) แต่ PuTTY ของฉันยังคงลดการเชื่อมต่ออย่างรวดเร็วในช่วงเวลาสั้น ๆ ในขณะที่ ssh บน OS X และเครือข่ายเดียวกันทำให้พวกเขาสบายดี superuser.com/questions/529511/…