2010-05-30 15 views
7

Câu hỏi của tôi là, nếu máy A có hai địa chỉ IP X, Y.Quan hệ giữa cổng và địa chỉ IP

Nó có thể mở cổng 80 hai lần, như X:80Y:80 không?

Say, là cổng duy nhất bằng máy hoặc bằng IP?

+1

Có lẽ nên ở trên serverfault.com, nhưng là một câu hỏi thú vị dành cho những người lập trình xử lý vấn đề này. :) – JYelton

Trả lời

6

địa chỉ IP Một chỉ định một giao diện mạng (nghĩ một cổng ethernet trên máy tính của bạn hoặc kết nối WiFi của bạn). Một số cổng chỉ định quy trình định tuyến thư đến trên một giao diện mạng nhất định. Do đó bạn có thể sử dụng cùng một số cổng với các địa chỉ IP khác nhau, vì chúng chỉ định cổng để nghe trên giao diện đã cho đó. Tuy nhiên, lưu ý rằng bạn thậm chí có thể tái sử dụng một số cổng có cùng địa chỉ IP nếu bạn sử dụng tùy chọn SO_REUSEADDR khi gọi hàm bind.

+0

Thú vị ... –

3

Nó độc đáo bằng IP. Khi bạn bind, (đó là phần quan trọng), bạn liên kết với IP và số cổng, không phải máy và số cổng. Để liên kết với tất cả các addreses bạn có thể sử dụng một cái gì đó như INADDR_ANY.

Nếu bạn muốn liên kết chỉ đến một vài địa chỉ, bạn phải làm như vậy "bằng tay". Khi hệ điều hành nhận được một gói, trước tiên nó sẽ kiểm tra xem anh ta có phải là đích đến hay không. Sau đó, nó chuyển tiếp nó đến chương trình có requested (thông qua liên kết, thông qua kết nối, vv) rằng anh ta là đích của các gói với IP cụ thể và số cổng.

1

cổng và IP có bản đồ 1 đến 1.

Vì vậy, có bạn có thể có cổng 80 mở trên hai của IP khác nhau trên cùng một máy.