Mặc dù câu hỏi đã được bảo hiểm đầy đủ. Tôi cảm thấy như quá trình này tốt nhất nên được mô tả từng bước.
Trong ví dụ này, tôi ngồi trong một mạng LAN riêng được kết nối với Internet thông qua bộ định tuyến. Vì mạng của chúng tôi chia sẻ một địa chỉ IP công cộng duy nhất, chúng tôi sử dụng NAT.
Vì vậy, khi tôi yêu cầu trang superuser.com
sẽ tạo ra nhiều gói IP. Hãy nhìn vào một cái duy nhất.
Nguồn gói IP : 192.168.1.12
(IP của tôi)
Đích: 64.34.119.12
(superuser.com)
Bây giờ, hệ thống của tôi rất có thể được thiết lập tương tự như trong câu hỏi. Tôi có địa chỉ IP của riêng tôi ( 192.168.1.12
), mặt nạ mạng con ( 255.255.255.0
) và cổng mặc định ( 192.168.1.1
). Bây giờ, vì trường Đích trong gói IP của tôi trỏ đến một mạng khác với mạng của tôi, nên nó được gửi đến cổng mặc định của tôi (chứ không phải trực tiếp đến máy tính).
Nhưng làm thế nào gói có thể đến cổng mặc định, nếu Điểm đến ở một nơi hoàn toàn khác?
Ethernet
Điều đó thật dễ dàng, bởi vì chúng tôi sử dụng địa chỉ của giao thức Ethernet cho điều đó. Chúng tôi chỉ đặt địa chỉ IP đích của chúng tôi trong gói IP và địa chỉ MAC của cổng mặc định của chúng tôi làm đích trong Khung Ethernet .
Bây giờ sẽ đảm bảo rằng cổng mặc định của chúng tôi có được gói cho superuser.com
. Yay!
Bây giờ cổng có gói của chúng tôi và có thể gửi nó ngay trên đường dẫn của nó. Nhưng để chắc chắn rằng nó sẽ nhận được câu trả lời, trước tiên, nó cần thay thế địa chỉ Nguồn gói (nếu không superuser.com
sẽ cố gửi câu trả lời đến một số thiết bị không tồn tại (có thể) bằng địa chỉ IP của tôi trên mạng của họ. rất hay.)
Vì vậy, bộ định tuyến của tôi sẽ đặt địa chỉ IP công cộng của nó vào trường Nguồn :
Nguồn gói IP : 92.69.127.243
(IP công cộng của tôi)
Điểm đến: 64.34.119.12
(superuser.com)
Bây giờ trò chơi tương tự cứ lặp đi lặp lại với tất cả các bộ định tuyến trên thế giới cho đến khi gói cuối cùng xuất hiện superuser.com
và một câu trả lời được tạo ra.
Câu trả lời
Trả lời Gói IP
Nguồn: 64.34.119.12
(superuser.com)
Đích: 92.69.127.243
(IP công cộng của tôi)
Ok, câu trả lời đã đến bộ định tuyến của tôi, bây giờ thì sao? Làm thế nào để bộ định tuyến của tôi biết để gửi câu trả lời 192.168.1.12
?
TCP
Vâng, điều đó thực sự hoạt động bởi vì chúng tôi chỉ xem xét các phần IP và Ethernet của giao tiếp. Điều làm cho công việc này là phần TCP.
Bạn rất có thể biết rằng các máy chủ web thường chạy trên cổng 80
. IP không có khái niệm về cổng . Điều đó đến từ TCP . Trong TCP, chúng ta có (như trong IP) một cổng nguồn và đích .
Gói TCP của tôi tới superuser.com
Nguồn: 192.168.1.12
(IP của tôi)
Cổng nguồn: 11111
(cổng mà máy tính của tôi tạo thành)
Đích: 64.34.119.12
(superuser.com)
Cổng đích:80
Khi bộ định tuyến của bạn gửi gói ban đầu đó (được gửi đến superuser.com
cổng 80
), anh ta sẽ đặt một cổng nguồn mới vào đó (như 12345
).
Và đây là phần quan trọng! Anh sẽ nhớ sự thay thế đó!
Gói TCP của bộ định tuyến của tôi tới superuser.com
Nguồn: 92.69.127.243
(IP công cộng của tôi)
Cổng nguồn: 12345
(cổng mà bộ định tuyến của tôi tạo thành)
Điểm đến: 64.34.119.12
(superuser.com)
Cổng đích:80
Vì vậy, gói câu trả lời mà bộ định tuyến nhận được thực sự trông như thế này:
Trả lời Gói TCP từ superuser.com
Nguồn: 64.34.119.12
(superuser.com)
Cổng nguồn: 80
Destination: 92.69.127.243
(IP công cộng của tôi)
Cổng đích: 12345
(cổng mà bộ định tuyến của tôi tạo thành)
Vì vậy, bây giờ anh ta nhận được gói đó và thấy rằng nó là một cổng mà nó đã nhớ trước đó được gán cho các hoạt động NAT cho địa chỉ IP 192.168.1.12
(địa chỉ IP của tôi).
Trả lời Gói TCP từ bộ định tuyến của tôi
Nguồn: 64.34.119.12
(superuser.com)
Cổng nguồn: 80
Đích: 192.168.1.12
(IP của tôi)
Cổng đích: 11111
(cổng mà máy tính của tôi tạo thành)