Thời gian chờ kết nối TCP mặc định trong Windows là gì?


28

Thời gian chờ kết nối TCP mặc định trong Windows là gì? Có một khóa đăng ký để cấu hình nó hoặc nó được thiết lập động?

Câu trả lời:


23

Trong Windows, giá trị là động đối với các kết hợp đã thiết lập , mặc dù mặc định cho các kết nối ban đầu là 72 giây. Các cài đặt Registry được định nghĩa trong bài viết này:

http://technet.microsoft.com/en-us/l Library / cc739819 (WS.10) .aspx

HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services: \ Tcpip \ Tham số

TcpInitialRTT : Xác định cài đặt hết thời gian ban đầu là gì cho các kết nối mới. Con số này tính bằng giây được nhân đôi mỗi lần nó truyền lại trước khi hết thời gian kết nối. Mặc định là 3.

TcpMaxConnectRetransmissions : Xác định số lượng truyền lại trước khi hết thời gian kết nối. Mặc định là 5.


Người ta chỉ cần thiết lập lại một kết nối nhất định sau khi thay đổi những kết nối này, không cần phải khởi động lại, phải không? Bạn có thể biết nên thay đổi cái nào để ngăn Windows 7 chủ động bỏ các kết nối hiện có khi bị mất điện không? Tôi đã thử thay đổi TcpMaxDataRetransmissionsthành 16 (mặc định là 5), nhưng PuTTY của tôi vẫn giảm các kết nối rất nhanh trong thời gian ngắn, trong khi ssh trên OS X và cùng một mạng giúp chúng hoạt động tốt. superuser.com/questions/529511/
cnst

3
Trên thực tế, nó hoạt động sau khi tôi khởi động lại! Không có gì thay đổi trong Windows! Có vẻ như bạn phải khởi động lại và cài đặt không có tác dụng đối với các kết nối cũ hoặc mới nếu bạn chỉ cần chỉnh sửa sổ đăng ký mà không cần khởi động lại!
cnst

9

Thông thường "thời gian chờ kết nối" đề cập đến thời gian chờ để tạo kết nối ban đầu đến máy chủ. Trong nhiều hệ thống (bao gồm Windows 7), giá trị này được định cấu hình bằng các cài đặt riêng biệt từ thời gian chờ để liên lạc liên tục sau khi kết nối được thiết lập. Câu trả lời này giải quyết kịch bản "kết nối ban đầu" cho Windows 7, khác với XP.

Đối với Windows 7, cần có hai hotfix để hỗ trợ điều chỉnh cài đặt thời gian chờ kết nối. Các cài đặt mới có thể được cấu hình bằng lệnh 'Netsh'.

Từ bài viết hotfix 2786464:

Lưu ý Trong Windows 7 và Windows Server 2008 R2, giá trị truyền lại tối đa TCP (JH: MaxSynRetransmissions) được đặt thành 2 và không thể định cấu hình. Do giới hạn 3 giây của giá trị hết thời gian ban đầu (JH: InitialRTO), bắt tay ba bước TCP bị giới hạn trong khung thời gian 21 giây (3 giây + 2 * 3 giây + 4 * 3 giây = 21 giây ).

Hotfix đầu tiên thêm cài đặt 'MaxSynRetransmmission', cho phép thay đổi cài đặt thử lại từ giá trị mặc định là 2. Cài đặt thứ hai thêm cài đặt 'InitialRto' cho phép thay đổi giá trị RTO ban đầu từ mặc định 3000ms (có, mili giây), nhưng chỉ để một cái gì đó ngắn hơn 3000ms; nó không thể được tăng lên. Tùy thuộc vào tình huống của bạn, bạn chỉ có thể cần hotfix 'MaxSynRetransmissions'.

Cài đặt cả hai hotfix, khởi động lại, sau đó mở một cửa sổ lệnh với tư cách Quản trị viên. Khởi động lại tiếp theo là không cần thiết cho các lệnh lệnh Netsh tiếp theo.

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

Lưu ý: Windows telnet được sử dụng để tham khảo cho thời gian chờ kết nối thực tế. Nó cần phải được cài đặt riêng, nhưng rất dễ làm.

Liên kết bổ sung / danh tiếng:


2

TcpInitialRTT và TcpMaxConnectRetransmissions có thể không có trong Vista và Windows 2008. Tài liệu này của Microsoft không bao gồm chúng. http://doad.microsoft.com/doad/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc

Và điều này nói rằng ít nhất TcpInitialRTT đã biến mất, mặc dù tôi không biết nó đáng tin cậy như thế nào. http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE


1

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn đang đề cập đến:

TcpTimedWaitDelay

Khóa này xác định thời gian phải trôi qua trước khi TCP / IP có thể giải phóng một kết nối kín và sử dụng lại tài nguyên của nó. Khoảng thời gian giữa đóng và phát hành này được gọi là trạng thái TIME_WAIT hoặc gấp đôi trạng thái vòng đời tối đa (2MSL). Trong thời gian này, việc mở lại kết nối đến máy khách và máy chủ sẽ tốn ít chi phí hơn so với việc thiết lập kết nối mới. Bằng cách giảm giá trị của mục nhập này, TCP / IP có thể giải phóng các kết nối đóng nhanh hơn và cung cấp nhiều tài nguyên hơn cho các kết nối mới. Điều chỉnh tham số này nếu ứng dụng đang chạy yêu cầu giải phóng nhanh, tạo kết nối mới hoặc điều chỉnh do thông lượng thấp gây ra bởi nhiều kết nối ở trạng thái TIME_WAIT.

Khóa chính xác là: HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Tcpip \ Paramameter \ TcpTimedWaitDelay

Bạn có thể không đặt nó nếu bạn đang sử dụng Win2008 trở lên, nhưng mặc định là 240 thập phân (nghĩa là 240 giây hoặc 4 phút). Bạn có thể thêm khóa vào sổ đăng ký với một giá trị khác và nó sẽ có hiệu lực sau khi khởi động lại (được thử nghiệm trên Windows Server 2008R2 trong môi trường sản xuất). Đây là một giá trị cao vô lý với chất lượng của các mạng hiện đại.

Tôi đã có một ứng dụng theo nghĩa đen chưa đầy một tháng trước đang chạy trên một máy chủ đã cạn kiệt số lượng kết nối tối đa mà Windows có thể hỗ trợ và giết mọi dịch vụ mạng trên máy chủ đó thường xuyên. Hơn 16.000 kết nối trong netstat -a khi bạn thậm chí quản lý RDP đến máy chủ. Chúng tôi đặt giá trị thành 30 thập phân (30 giây) và voila, vấn đề đã được giải quyết - chưa đến 10.000 kết nối đồng thời (vì ứng dụng đã nhanh chóng mở và đóng chúng) và không có vấn đề thông lượng.


Trong Windows Server 2012 và 2016, khóa chính xác dường như là HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlSet \ Services \ Tcpip \ Paramameter \ TcpTimedWaitDelay
Vincent

Có an toàn không khi cho rằng chỉnh sửa đăng ký này yêu cầu khởi động lại?
Vincent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.