Có giới hạn cứng 65536 kết nối TCP mở cho mỗi địa chỉ IP trên linux không?


23

Có giới hạn cứng 65536 kết nối TCP mở cho mỗi địa chỉ IP trên linux không? Tôi đã đọc ở đâu đó rằng có, nhưng ai đó đang yêu cầu xác nhận và tôi không thể tìm thấy nó.

Tôi dường như nhớ nó là một cái gì đó về các mô tả tập tin là một số nguyên 16 bit giới hạn nó bằng cách nào đó?

Hoặc đây là hokum, và đơn giản là không có giới hạn nào khác ngoài việc máy chủ hoạt động thế nào?

Câu trả lời:


35

Bạn có thể nghĩ về số lượng cổng. Có 65536 cổng có sẵn trong TCP trong các phiên bản hiện tại của IPv4. Đây không chỉ là giới hạn của Linux, là một phần của giao thức. Địa chỉ IP của bạn xác định máy của bạn và cổng xác định chương trình trên máy của bạn.

Nhưng, số lượng kết nối không bị giới hạn bởi điều đó. Một kết nối bao gồm 5 mẩu thông tin, trong geek nói 5-tuple. Nó được xác định bởi giao thức (TCP, UDP), địa chỉ IP và cổng cục bộ, và địa chỉ IP và cổng từ xa. Vì vậy, hãy có một máy chủ web. Nó có thể phục vụ nhiều kết nối trên cùng một cổng (rất có thể là 80). Máy chủ web của bạn thậm chí có thể hỗ trợ nhiều kết nối đến cùng một máy khách. Giả sử, bạn đang kết nối với google.com từ hai cửa sổ. Máy của bạn sẽ chọn một cổng không sử dụng cho mỗi kết nối. Vì vậy, máy chủ của google sẽ phải theo dõi (TCP, google.com, 80, yourmachine, someport1) và (TCP, google.com, 80, yourmachine, someport2). Tại một số điểm, bạn sẽ gặp phải giới hạn, nhưng đó không phải là giới hạn cứng và phụ thuộc rất nhiều vào hệ thống.

Và vâng, mỗi ổ cắm là một bộ mô tả tệp, nhưng không phải tất cả các máy đều sử dụng quần short cho bảng fd. Trên hệ thống của tôi, một hệ thống không được điều chỉnh ở tất cả các hệ thống, cat /proc/sys/fs/file-maxmang lại cho 323997. Tôi chắc chắn rằng tôi có thể tăng cường nó nếu tôi cần.

Vì vậy, có giới hạn 65336, nhưng nó phải được thực hiện với địa chỉ, không phải số lượng kết nối. Số lượng kết nối bị giới hạn, nhưng nhiều hơn bởi cấu hình hệ thống và dung lượng bộ nhớ.


2
Vì vậy, là 5-tuple: mặc dù tôi bị giới hạn ở 65536 cổng, nhưng điều đó chỉ giới hạn tôi ở 64k kết nối cho mỗi địa chỉ IP đến , điều đó có đúng không? Vì vậy, giới hạn duy nhất là các mô tả tập tin, nhưng chúng không nhất thiết phải là 16 bit? Vì vậy, về cơ bản những gì bạn đang nói là không có giới hạn?
Chris

1
Vâng. Xem thêm: vi.wikipedia.org/wiki/Transmission_Control_Protocol phần "Sử dụng tài nguyên"
user12889

3
@Chris: 64k kết nối cho mỗi địa chỉ IP đến trên một cổng cục bộ , vâng.
grawity

@Chris những gì grawity nói. 5-tuple sẽ có tối đa (nhưng không bao giờ đạt tới) 65536 kết hợp với máy khác. Trên thực tế, bạn sẽ không bao giờ đến đó vì máy không thể sử dụng bất kỳ cổng cũ nào để kết nối - một số được dành riêng cho các lý do cụ thể.
Rich Homolka
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.