Tại sao chỉ có 65.535 cổng và chúng ta sẽ có nhiều hơn? [đóng cửa]


20

Tôi hiểu lý do ban đầu đằng sau việc có 65.535 cổng cho mỗi địa chỉ IP: đây là số cao nhất có thể được biểu thị bằng số 16 bit hoặc 2 byte và không thể hiểu được rằng máy tính sẽ có thể dự phòng nhiều hơn hơn thế đối với một cái gì đó tầm thường như cổng, hoặc một cái gì đó tương tự. Trên thực tế, các cổng có thể cần nhiều hơn 1 bit, vì mỗi cổng có thể được mở, bị chặn, "tàng hình" hoặc các cổng khác, nhưng vì một số lý do, mọi người luôn nói rằng các cổng hoạt động với số 16 bit. Nếu tôi có bất kỳ phần nào của sai này, bằng mọi cách hãy nói cho tôi biết.

Tuy nhiên, trong một thế giới nơi hầu hết các máy tính là 32 bit và có đủ bộ nhớ / dung lượng trống để dự phòng cho một vài cổng, tại sao chúng ta vẫn có nhiều cổng này? Chúng tôi đang trong quá trình chuyển sang HTML5, HTTP2.0, IPv6 và các phiên bản hoàn toàn khác nhau, vậy tại sao không giống với các cổng? Nhiều trong số này cho phép nhiều hơn 16 bit; Thực tế, IPv6 cho phép 16 byte ! Tôi hiểu rằng nhiều trong số đó là những năm hoặc thậm chí hàng thập kỷ, nhưng tại sao tất cả các cuộc trò chuyện về những nâng cấp này, và thậm chí không phải là một cái nhìn về nhiều cổng (mà tôi, một người nghiệp dư, đã nghe nói)?

Hai lý do duy nhất tôi có thể thấy để giữ 65.535 cổng là cho phép các doanh nghiệp lớn giữ các hệ thống cũ của họ, đó không phải là lý do chính đáng, và sự gia tăng của các hệ thống nhúng, trong đó có rất ít, với dung lượng rất nhỏ, bộ nhớ, v.v. , sẽ sớm xuất hiện trên Internet, nhiều người là một phần của Internet vạn vật. Với các hệ thống nhúng này, có lẽ chúng ta có thể cho phép chúng có ít cổng hơn và khi một máy tính để bàn lớn cố gắng kết nối với một hệ thống, nó có thể được bảo đảm là nhẹ nhàng, vì hệ thống nhúng trẻ em chỉ có thể sử dụng ~ 65.000 cổng.

Mặt khác, tôi có thể nghĩ ra một vài lý do tốt để có nhiều cổng hơn, hầu hết phải làm với NAT và các hệ thống khác, nơi có hơn 1 địa chỉ IP riêng phải liên lạc với phần còn lại của Internet bằng cùng một địa chỉ IP công cộng, giống như sự gia tăng của VM trên cùng một máy tính, tất cả đều sử dụng cùng một địa chỉ IP. Về mặt kỹ thuật, mỗi địa chỉ IP VM có 65.535 cổng, nhưng thực tế tất cả đều sử dụng cổng của máy chủ. Trong trường hợp như thế này, các hệ thống này có thể hết cổng khá nhanh. Một trường hợp cụ thể khác là NAT cấp nhà mạng, trong đó một địa chỉ IP công cộng được dịch sang một số địa chỉ IP riêng và ít nhất một trong số các địa chỉ riêng này được dịch sang một bộ địa chỉ riêng khác thậm chí nhiều hơn. Một lần nữa, mỗi địa chỉ IP riêng về mặt kỹ thuật có bộ 65.535 cổng riêng, nhưng đây chỉ là ảo ảnh, như khi dữ liệu ra Internet công cộng, họ đang sử dụng các cổng của IP công cộng. Tôi không chắc chắn chúng ta nhất thiết cần NAT, nhưng chúng ta sẽ cần một cái gì đó giống như nó để bảo tồn địa chỉ ngay cả với số lượng lớn IPv6 sẽ cung cấp cho chúng ta. Khi chúng ta gặp những trường hợp như vậy, chúng ta thậm chí có thể không có nhiều hơn 65.535 cổng không?

Vậy, tại sao chúng ta vẫn chỉ có 65.535 cổng, và có kế hoạch nào cho phép nhiều hơn không?

PS Tôi biết về mặt kỹ thuật có 65.536 cổng cho mỗi địa chỉ IP, nhưng cổng 0 thường không được sử dụng cho bất cứ điều gì.


Tôi nghĩ bạn cần hỏi IANA những câu hỏi mà họ kiểm soát tài nguyên. Tôi nghĩ bạn cũng cần đọc hướng dẫn TCP / IP vì một số hiểu biết của bạn có vẻ thiếu sót.
user9517 hỗ trợ GoFundMonica

1
Vâng, tôi đã tìm ra. Tôi đã cố gắng nói nhiều như tôi đã hiểu, nhưng như bạn thấy, tôi không hiểu mọi thứ.
phân tích

7
Off-topic về câu hỏi này là gì? Chỉ cần tự hỏi.
phân ly

1
Tôi cũng đã từ bỏ việc đặt câu hỏi trong các trang web này. Mọi thứ dường như lạc đề trong những ngày này ...
Nuno

IPv6 làm cho giới hạn của các cổng di chuyển bằng cách cung cấp cho máy tính một / 64 địa chỉ để sử dụng.
J.Money

Câu trả lời:


28

Cổng là một phần của giao thức lớp 4 đang sử dụng - TCP hoặc UDP , đối với hầu hết các phần; nó không liên quan đến địa chỉ bộ nhớ của các máy tính thực tế, vì vậy đừng nhầm lẫn với địa chỉ bộ nhớ 32 hoặc 64 bit của các hệ điều hành hiện đại.

Các tiêu đề của các giao thức lớp 4 này có các cấu trúc được xác định cụ thể , trong đó chính xác là 16 bit được sử dụng cho các cổng nguồn và đích. Nếu không có các thay đổi phá vỡ tính tương thích đối với các giao thức lớp 4 mà toàn bộ internet phụ thuộc vào, số lượng cổng không thể thay đổi. Ngay cả SCTP mới hơn cũng có ràng buộc 16 bit trên các cổng.

Hãy nhớ rằng các giao thức này xác định lưu lượng truy cập không chỉ dựa trên cổng nhận mà còn cả IP nhận và cổng gửi và IP; bạn bị giới hạn ở 65535 cổng nghe TCP (nhưng bạn không có nhiều cổng đó) và bạn bị giới hạn ở 65535 kết nối với một dịch vụ cụ thể trên một hệ thống từ xa cụ thể (thực tế thấp hơn, xem các cổng phù du ), vì vậy nó không phổ biến để chạy vào giới hạn trên các giao thức này trừ khi bạn có một hệ thống tạo ra rất nhiều kết nối đến một hệ thống từ xa cụ thể.


3
Nó luôn đi xuống khả năng tương thích ngược, phải không? Tại sao chúng ta có thể thay đổi thành IPv6, điều này cho phép rất nhiều địa chỉ IP khác thật vô lý, nhưng chúng ta không thể có thêm một vài cổng? Đó là phiền toái chính của tôi.
phân ly

2
@trysis Phải - chuyển từ IPv4 sang IPv6 là một so sánh tốt với những gì nó cần để chuyển sang phiên bản TCP và phiên bản UDP có nhiều bit hơn trong tiêu đề cho cổng. Và nếu bạn không nhận thấy, đó là một quá trình chậm chạp và đau đớn để thậm chí triển khai IPv6 trên toàn thế giới đến hiện tại (với 1-2% lưu lượng truy cập trên toàn thế giới sử dụng nó). Đối với IPv4, có một nhu cầu hấp dẫn để di chuyển - cạn kiệt địa chỉ. Mặt khác, việc hết dung lượng cổng trên các giao thức này không phải là vấn đề phổ biến, do đó không cần phải thực hiện những thay đổi lớn cần thiết để thực hiện.
Shane Madden

Ồ, điều đó có ý nghĩa hơn. Cảm ơn. Có thể một ngày nào đó chúng ta sẽ cảm thấy cần thiết, nhưng tôi cho rằng bạn đúng trong nhu cầu đó không phải là bây giờ.
phân ly

Tôi hy vọng rằng nếu chúng ta trải qua tất cả những rắc rối đó, chúng ta có thể tìm ra thứ gì đó tốt hơn so với việc đánh địa chỉ cổng dựa trên số nguyên. Một cái gì đó giống như các cổng dựa trên UUID sẽ là tuyệt vời. Hoặc không gian tên thực tế thậm chí sẽ được mô tả nhiều hơn và loại bỏ khả năng xung đột giữa các ứng dụng. Hãy tưởng tượng thiết lập một cổng chuyển tiếp cho không gian tên "com.windows.local.yourdomain.server001" hoặc một cái gì đó tương tự.
njbair

do đó, nếu hai PC cùng tạo ra 65.535 kết nối hoặc tương tự như một cuộc đảo chính của PC bên ngoài NAT, thì không ai trong số các PC khác có thể truy cập itnernet. Tôi có đúng không?
Denis
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.