Làm thế nào để Router biết nơi chuyển tiếp gói


68

Nếu một số máy tính có địa chỉ cục bộ (192.168.0. #) Được kết nối với bộ định tuyến và mỗi máy tính sẽ mở trình duyệt web và yêu cầu một trang qua HTTP, khi các gói TCP: 80 này được gửi đi, bộ định tuyến sẽ chuyển địa chỉ cục bộ bằng IP tĩnh của bộ định tuyến (tức là Nhà cung cấp IP đã cung cấp) để máy chủ có thể trả lời địa chỉ thích hợp.

Nhưng làm thế nào để bộ định tuyến biết máy tính nào chuyển tiếp trả lời HTTP, vì tiêu đề TCP không chứa địa chỉ IP cục bộ (phải không?) Và tất cả các máy tính đang sử dụng cổng 80?

Điều này có liên quan gì đến các địa chỉ MAC không?

Làm thế nào chính xác để làm việc này?

Câu trả lời:


78

Hầu hết các bộ định tuyến gia đình sử dụng một trường hợp đặc biệt của NAT được gọi là PAT.

Bạn cũng sẽ thấy nó được gọi là NAPT hoặc IP Masquerading. Tất cả ba thuật ngữ sau có nghĩa là cùng một điều trong sử dụng chung. (Các từ viết tắt - Dịch địa chỉ mạng / Dịch địa chỉ cổng / Dịch cổng địa chỉ mạng)

Khi gói đi ra khỏi máy bên trong của bạn, địa chỉ nguồn được viết lại khi bạn biết. Nguồn cảng cũng được thay đổi, thường là với một số lượng lớn, và router giữ một bảng địa chỉ dịch.

Ví dụ: giả sử bạn có một máy khách truy cập www.google.com. Máy tính của bạn (ví dụ: 192.168.1.100) tìm địa chỉ đó và tạo kết nối TCP tới 72,14.204.147 trên cổng 80 từ địa chỉ IP nội bộ của bạn, sử dụng cổng nguồn ngẫu nhiên.

Đối với máy tính của bạn, kết nối trông như thế này:

192.168.1.100:37641   <-->  72.14.204.147:80

Máy tính của bạn gửi gói đến bộ định tuyến, chọn một cổng cao ngẫu nhiên mới và viết lại gói. Mỗi kết nối ra được cổng riêng trên bộ định tuyến. Sau đó, bộ định tuyến sẽ chuyển tiếp gói đến ISP của bạn sau khi thêm nó vào bảng kết nối của nó:

PrivateIP        PrivatePort   PublicIP      PublicPort    Remote          RemotePort
-------------    ----------    -----------   -----------   ----------      -----------
192.168.1.100    37641         *10.6.23.5    59273         72.14.204.147   80

* Ví dụ: mục đích, tôi đã sử dụng một địa chỉ bắt đầu bằng 10, nhưng những địa chỉ này không thể định tuyến công khai. Bảng cũng hơi đơn giản.

Đối với google, kết nối trông như thế này:

10.6.23.5:59273   <-->  72.14.204.147:80

Google sẽ gửi phản hồi tới 10.6.23.5 trên cổng 59273. Sau đó, bộ định tuyến của bạn sẽ tra cứu thông tin đó trong bảng và chuyển tiếp gói đến 192.168.1.100:37641.


3
Vì vậy, để tóm tắt, Bộ định tuyến sử dụng số cổng để ghi nhớ những gì từ bên ngoài mạng cục bộ đi đến những gì bên trong mạng. Tuy nhiên, điều này không giải thích làm thế nào nó www.google.comtìm thấy tôi nếu tôi không gửi yêu cầu ban đầu. Nói cách khác, tin nhắn chỉ có thể liên lạc với tôi qua bộ định tuyến nếu ban đầu tôi gửi yêu cầu qua bộ định tuyến
CodyBugstein

2
@Imray google.com (hoặc bất cứ thứ gì khác trên Internet) không thể tìm thấy máy tính của bạn nếu máy tính của bạn không bắt đầu yêu cầu. Đây là lý do tại sao có một bộ định tuyến thêm rất nhiều bảo mật.
Jason

6
@Jason Đó là một huyền thoại nguy hiểm. Có một tường lửa thêm bảo mật. Công việc của một bộ định tuyến SoHo điển hình chỉ là làm cho mọi thứ hoạt động, không ngăn chặn mọi thứ hoạt động. Se ở đây để biết thêm thông tin.
David Schwartz

1
@Jason Tốt hơn là không xóa bình luận của bạn, nó làm cho những gì sẽ là một cuộc thảo luận đáng để đọc, không thể đọc được.
barlop

2
Ví dụ hay, nhưng điều này có nghĩa là tất cả các cổng số cao luôn mở trên các bộ định tuyến của chúng tôi?
jiggunjer

1

Các bộ định tuyến giữa mạng cục bộ và phần còn lại của internet sử dụng một kỹ thuật gọi là NAT.

Chỉ là một đoạn trích từ TCP / IP Minh họa Tập 1 về NAPT, với một từ về những thiếu sót của người anh em họ đơn giản của nó, NAT cơ bản:

NAT cơ bản chỉ thực hiện viết lại địa chỉ IP. Về bản chất, một địa chỉ riêng được viết lại thành một địa chỉ công cộng, thường là từ một nhóm hoặc một loạt các địa chỉ công cộng được cung cấp bởi một ISP. Loại NAT này không phải là phổ biến nhất vì nó không giúp giảm đáng kể nhu cầu về địa chỉ IP. Số lượng địa chỉ có thể định tuyến toàn cầu phải bằng hoặc vượt quá số lượng máy chủ nội bộ muốn truy cập Internet đồng thời. Một cách tiếp cận phổ biến hơn nhiều, NAPT liên quan đến việc sử dụng các định danh lớp vận chuyển (nghĩa là các cổng cho TCP và UDP, các định danh truy vấn cho ICMP) để phân biệt máy chủ nào ở phía riêng của NAT được liên kết với một gói cụ thể (xem Hình 7- 4). Điều này cho phép một số lượng lớn máy chủ nội bộ (nghĩa là nhiều nghìn) để truy cập Internet đồng thời bằng cách sử dụng một số lượng địa chỉ công cộng hạn chế, thường chỉ có một địa chỉ duy nhất. Chúng ta thường sử dụng thuật ngữ NAT để bao gồm cả NAT và NAPT truyền thống trừ khi sự khác biệt là quan trọng trong một bối cảnh cụ thể.

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.