09/34 Router và cửa ra Các chương

Router làm gì?

Ai đưa gói tin ra khỏi mạng nhà?

Bài trước, DHCP đưa cho laptop một địa chỉ IP, subnet mask và một dòng như:

Default gateway: 192.168.1.1

Địa chỉ IP cho máy biết nó đang ở mạng nào. Nhưng nếu bạn mở một website ở nước ngoài, laptop không hề biết đường từ nhà mình tới server đó.

Nó cũng không cần biết.

Nó chỉ cần biết một việc:

Gói này có nằm trong mạng của mình không? Nếu không, hãy đưa nó cho router.

Từ IMP tới router

Ý tưởng dùng một máy riêng chỉ để chuyển dữ liệu đã xuất hiện từ ARPANET.

Thay vì bắt mỗi máy tính lớn phải tự lo chuyện mạng, Wesley Clark đề xuất đặt trước chúng một máy nhỏ chuyên nhận và chuyển gói. Máy đó được gọi là IMP (Interface Message Processor).

IMP đầu tiên được lắp tại UCLA vào năm 1969.

Tủ IMP màu xám nhạt đứng thẳng với bảng đèn và biển tên Interface Message Processor
Một IMP của ARPANET Ảnh: Steve Jurvetson / Wikimedia Commons · CC BY 2.0

IMP giúp chuyển gói bên trong ARPANET. Nhưng khi người ta muốn nối nhiều mạng khác nhau với nhau, lại xuất hiện một vấn đề mới.

Cần một thiết bị đứng giữa các mạng.

Trong bài báo năm 1974 về internetworking, Vint Cerf và Bob Kahn gọi thiết bị này là gateway.

Ngày nay, công việc chuyển gói giữa các mạng chủ yếu được thực hiện bởi router.

Router đứng giữa các mạng

Router có các giao diện nối vào những mạng khác nhau.

Với router Wi-Fi trong nhà, có thể hình dung đơn giản:

        Mạng trong nhà                  Mạng phía ngoài

       192.168.1.x
             │
             │
        192.168.1.1
             │
          ROUTER
             │
             │
        mạng nhà cung cấp

Phía trong, router có địa chỉ 192.168.1.1.

Phía ngoài, nó nối sang mạng của nhà cung cấp Internet.

Mặt sau một router Wi-Fi: bốn cổng mạng màu cam ghi LAN1 đến LAN4 và một cổng màu xanh ghi WAN
Mặt sau router Wi-Fi: bốn cổng LAN (cam) cho mạng trong nhà, cổng WAN (xanh) nối ra nhà mạng Ảnh: Abhi25t / Wikimedia Commons · CC BY-SA 4.0

Cái hộp Wi-Fi ở nhà thường làm nhiều việc cùng lúc: phát Wi-Fi, nối các thiết bị bằng switch và định tuyến giữa mạng trong nhà với mạng bên ngoài.

Phần router chỉ lo một việc chính:

nhận gói từ một mạng, chọn nơi nó phải đi tiếp, rồi chuyển nó sang mạng khác.

Nhưng trước khi router làm được việc đó, laptop phải quyết định có cần gửi gói cho router hay không.

Gửi thẳng hay gửi cho router?

Giả sử laptop có:

Địa chỉ IP        192.168.1.23
Mạng              192.168.1.x
Default gateway   192.168.1.1

Bây giờ nó muốn gửi dữ liệu tới hai địa chỉ:

192.168.1.50
8.8.8.8

Máy dùng subnet mask để kiểm tra địa chỉ đích có nằm trong cùng mạng hay không.

Nếu đích là:

192.168.1.50

thì đó là một máy trong cùng mạng.

Laptop gửi trực tiếp cho máy đó. Router không cần tham gia.

Nhưng:

8.8.8.8

không nằm trong mạng 192.168.1.x.

Laptop không biết 8.8.8.8 ở đâu. Thay vì cố tìm cả con đường tới đó, nó giao gói cho default gateway:

192.168.1.23
      │
      │ đích: 8.8.8.8
      ▼
192.168.1.1
    ROUTER

Địa chỉ IP đích vẫn là 8.8.8.8.

192.168.1.1 chỉ là nơi nhận gói ở chặng đầu tiên.

Router làm gì khi nhận gói?

Khi router nhận được gói, nó nhìn vào địa chỉ IP đích:

8.8.8.8

Sau đó router tra thông tin định tuyến của mình để quyết định:

Gói này phải đi ra giao diện nào?

Router nhà bạn thường không biết toàn bộ con đường tới 8.8.8.8.

Nó chỉ cần biết bước tiếp theo: đưa gói về phía nhà cung cấp Internet.

Gói tin có đích 8.8.8.8 tới router nhà; bảng định tuyến có hai dòng, 192.168.1.0/24 ra cổng LAN và 0.0.0.0/0 ra ISP, dòng thứ hai được chọn; gói đi tiếp qua router của ISP và các router tiếp theo tới máy chủ đích 8.8.8.8

Router tiếp theo lại làm điều tương tự.

Laptop
   │
   ▼
Router nhà
   │
   ▼
Router của ISP
   │
   ▼
Router tiếp theo
   │
   ▼
...

Mỗi router chỉ cần quyết định chặng tiếp theo.

Đó là cách một laptop không biết gì về cấu trúc của Internet vẫn có thể gửi dữ liệu tới một máy ở bên kia thế giới.

Thử gửi hai gói tin: một tới máy trong nhà, một tới địa chỉ bên ngoài. Xem lúc nào router xuất hiện.

Gói tin đi đâu?
Laptop 192.168.1.23 Router 192.168.1.1 Máy in 192.168.1.50 Internet 8.8.8.8 GÓI

Chọn nơi gửi gói tin.

✓ Cùng mạng → gửi thẳng

✓ Khác mạng → gửi cho gateway 192.168.1.1

Một bước nhỏ bị giấu đi

Laptop biết gateway là 192.168.1.1, nhưng Ethernet hay Wi-Fi bên dưới không gửi dữ liệu bằng địa chỉ IP. Nó cần địa chỉ MAC của thiết bị nhận trong mạng cục bộ.

Vì vậy máy dùng ARP để hỏi: “Ai đang giữ 192.168.1.1?”

Nếu đích nằm cùng mạng, máy hỏi MAC của chính máy đích. Nếu đích nằm ngoài mạng, máy hỏi MAC của gateway.

Địa chỉ MAC thay đổi theo từng chặng. Địa chỉ IP đích vẫn tiếp tục là địa chỉ của máy ở cuối hành trình.

Router nhà bạn đã đẩy gói tin ra phía ngoài.

Nhưng phía bên kia không còn là mạng của bạn nữa.

Router nhà bạn nối vào đâu?

Nguồn bài viết (7)

  1. Internet History of 1960s · Computer History Museum
  2. Brief History of the Internet · Internet Society
  3. Interface Message Processor (IMP) Honeywell 516 — X105.82 · Computer History Museum
  4. Internet architect Leonard Kleinrock receives UCLA Medal · UCLA Newsroom
  5. A Protocol for Packet Network Intercommunication (Cerf & Kahn, IEEE Trans. Comm., 5/1974) · IEEE (bản in lại tại Princeton University)
  6. RFC 1122 — Requirements for Internet Hosts: Communication Layers · IETF
  7. RFC 826 — An Ethernet Address Resolution Protocol · IETF