NAT chia sẻ một địa chỉ IPv4 công khai trên nhiều địa chỉ IPv4 riêng tư [đã đóng]


10

Tôi nghĩ đó là một câu hỏi rất cổ điển, nhưng, nghĩ rằng tôi đã có một số nền tảng, tôi không còn đủ từ vựng nữa để tìm kiếm và hiểu chính xác trên Web.

Giả sử tôi có một mạng gia đình với 192.168.0.1 (IP.1) và 192.168.0.2 (IP.2) và cả hai chúng tôi đang chơi để Counter Strike đánh chính xác cùng một máy chủ bên ngoài.

Làm thế nào bộ định tuyến nhà của tôi biết gói wich sẽ đi đến IP.1? Tôi thường đọc những thứ có địa chỉ NAT và xxx.xxx/y. ** Trường hợp được ghi phần / y trong ngăn xếp TCP / IP?

Chúng ta có cần NAT hoàn toàn cho điều đó không? Những gì tôi đã hiểu từ bài viết Wikipedia là NAT được tạo ra để tối ưu hóa địa chỉ IP, khi một số máy tính bị tắt. Nó cũng cho phép kết nối 5 thiết bị chỉ với 1 IP công cộng?


Một-nhiều người nên trả lời câu hỏi của bạn. Ngoài ra, mạng gia đình và các câu hỏi giáo dục cấp độ đầu vào, không phù hợp nhất cho trang web này.
Craig Constantine

Câu trả lời:


14

(Đối với phần sau tôi sẽ bỏ qua mọi hành động tra cứu DNS hoặc hành động lớp hai, vì đó không phải là phần có liên quan cho câu chuyện NAT.)

Bất kỳ kết nối TCP nào là một bộ gồm bốn phần:

<source IP> <source port> <destination IP> <destination port>

Tóm lại: IP đích được sử dụng để đưa gói đến đúng máy, cổng đích được sử dụng để đưa gói trên máy đó đến đúng chương trình / phiên IP được sử dụng để biết nơi gửi bất kỳ trả lời nào. Tương tự với cổng nguồn. Khi một câu trả lời được gửi, nguồn và đích chỉ được hoán đổi.

Hãy bắt đầu với hai máy tính không có NAT:

  • Máy tính có IP 1.1.1.1
  • Máy chủ web có IP 3.3.3.3
  • Cổng tiêu chuẩn cho HTTP là 80

Khi một máy tính yêu cầu một trang web, trước tiên, nó sẽ chọn một số cổng không sử dụng ngẫu nhiên từ phạm vi ngẫu nhiên (1024-65535). Hãy chọn 2345. Sau đó, chuỗi sau sẽ xảy ra: Máy tính gửi gói của nó với: IP 1.1.1.1nguồn 2345, cổng nguồn , IP 3.3.3.3đích, cổng đích 80. Các gói đến máy chủ web, nó thấy IP và cổng riêng của nó 80, vì vậy nó biết đây là một yêu cầu cho một trang web. Sau đó, máy chủ web sẽ gửi lại trang web trong các gói với IP 3.3.3.3nguồn, cổng nguồn 80, IP 1.1.1.1đích, cổng đích 2345. Máy tính nhận các gói này và biết đó là trang web được yêu cầu, vì số cổng 2345.

Các kết hợp cổng này thường được viết như vậy: 1.1.1.1:23453.3.3.3:80.

Giờ đây, số lượng máy tính trên internet vượt xa số lượng địa chỉ IPv4 hiện có. Để duy trì không gian địa chỉ, một bộ phạm vi địa chỉ riêng đã được giới thiệu, có thể được sử dụng miễn phí để chia sẻ địa chỉ. Những rangese này được gọi là RFC1918 và như sau:

  • 192.168.0.0 - 192.168.255.255
  • 172.16.0.0 - 172.31.255.255
  • 10.0.0.0 - 10.255.255.255

Các địa chỉ này không có trong các bảng định tuyến internet, vì vậy nếu bạn gửi một gói có đích đến trong các phạm vi này trên đường trục của internet, chúng sẽ chỉ bị hủy. Điều này là do hàng triệu người sử dụng cùng một địa chỉ. Những địa chỉ này cần được dịch sang một cái gì đó hữu ích cho internet. Đây là nơi Dịch địa chỉ mạng đến:

Chúng tôi có hai máy tính:

  • A: 192.168.0.1và B:192.168.0.2
  • Cổng của họ có một IP công cộng 1.1.1.1.
  • Chúng tôi giữ cùng một máy chủ web.
  • Cả hai máy tính đều muốn cùng một trang web từ cùng một máy chủ.

Đầu tiên cả hai máy tính chọn một cổng ngẫu nhiên: giả sử: 192.168.0.1:2345192.168.0.2:5432.

Máy tính A gửi gói của nó với nguồn 192.168.0.1:2345và đích 3.3.3.3:80. Cổng sẽ dịch gói tin này 1.1.1.1:2345đến đích nguồn 3.3.3.3:80và ghi nhớ rằng bất kỳ câu trả lời nào cho sự kết hợp này đều được chuyển đến 192.168.0.1. Vì vậy, khi nó nhận được trả lời với nguồn 3.3.3.3:80và đích 1.1.1.1:2345, nó sẽ dịch nó sang nguồn 3.3.3.3:80và đích 192.168.0.1:2345và gửi gói tin vào.

Máy tính B gửi gói của nó với nguồn 192.168.0.2:5432và đích 3.3.3.3:80. Cổng sẽ dịch gói tin này 1.1.1.1:5432đến đích nguồn 3.3.3.3:80và ghi nhớ rằng bất kỳ câu trả lời nào cho sự kết hợp này đều được chuyển đến 192.168.0.2. Vì vậy, khi nó nhận được trả lời với nguồn 3.3.3.3:80và đích 1.1.1.1:5432, nó sẽ dịch nó sang nguồn 3.3.3.3:80và đích 192.168.0.2:5432và gửi gói tin vào.

Nếu cả hai máy tính tình cờ chọn cùng một số cổng nguồn, cổng sẽ chỉ chọn một số cổng nguồn ngẫu nhiên miễn phí khác và nhớ dịch cả số cổng. Điều này đôi khi được gọi là PAT (Dịch địa chỉ cổng). Đây về cơ bản là một tập hợp con của NAT.

Có một số triển khai cho tất cả điều này. Cổng chỉ có thể chỉ nhớ "Máy tính X đã sử dụng cổng nguồn Y" và chuyển tiếp mọi thứ có cổng Y sang máy tính X. Nó có thể nhớ rằng Máy tính X đã sử dụng cổng nguồn Y và đích Z "và chỉ chuyển tiếp mọi thứ từ cổng Z sang cổng Y trở lại máy tính X. Hoặc có tùy chọn ghi nhớ toàn bộ bộ dữ liệu và chỉ gửi lưu lượng truy cập đến máy tính X khớp với toàn bộ ip và cổng nguồn / đích.


Cảm ơn. Tôi nghĩ rằng bất kỳ khách hàng nào cũng sẽ gửi với cổng 80 của mình đến cổng 80 khác. Tôi nghĩ rằng rất nhiều người không chuyên cũng tin như vậy.
Nicolas Zozol
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.