Hiểu về Địa Chỉ IP, Subnets, Ký Hiệu CIDR cho Mạng Máy Tính | IP Addresses, Subnets, and CIDR

IP Addresses, Subnets, and CIDR

Hiểu về mạng máy tính là một phần nền tảng khi cấu hình các môi trường phức tạp trên internet. Điều này có ý nghĩa quan trọng khi bạn muốn thiết lập giao tiếp hiệu quả giữa các máy chủ, xây dựng các chính sách bảo mật mạng và giữ cho các nút (nodes) của bạn được sắp xếp một cách khoa học.

Trong hướng dẫn trước, chúng ta đã đi qua một số thuật ngữ cơ bản về mạng. Bạn nên xem lại hướng dẫn đó để đảm bảo rằng bạn đã quen thuộc với các khái niệm được trình bày.

Trong bài viết này, chúng ta sẽ bàn sâu hơn về các khái niệm liên quan đến thiết kế hoặc tương tác với các máy tính kết nối mạng. Cụ thể, chúng ta sẽ tìm hiểu về các lớp mạng, mạng con và ký hiệu CIDR dùng để nhóm các địa chỉ IP.

Hiểu về địa chỉ IP

Mỗi vị trí hay thiết bị trong một mạng đều cần có địa chỉ để có thể truy cập. Điều này có nghĩa là thiết bị đó có thể được gọi đến thông qua một danh xưng theo một hệ thống địa chỉ định sẵn. Trong mô hình TCP/IP truyền thống, việc này được xử lý ở một vài tầng khác nhau, nhưng thường thì khi chúng ta nói về một địa chỉ trong mạng, ý ta chính là địa chỉ IP.

Địa chỉ IP cho phép truy cập vào tài nguyên của mạng thông qua giao diện mạng. Nếu một máy tính muốn giao tiếp với máy tính khác, nó có thể gửi thông tin đến địa chỉ IP của máy tính đó. Giả sử rằng hai máy tính đang ở cùng một mạng, hoặc rằng các thiết bị trung gian có thể chuyển tiếp các yêu cầu qua các mạng, thì các máy tính sẽ có thể kết nối và trao đổi thông tin với nhau.

Mỗi địa chỉ IP phải là duy nhất trong cùng một mạng. Các mạng có thể được cô lập riêng biệt, hoặc được kết nối và chuyển đổi để tạo ra sự truy cập giữa các mạng khác nhau. Một hệ thống gọi là Network Address Translation (NAT) cho phép địa chỉ được thay đổi khi các gói dữ liệu (packets) đi qua ranh giới của các mạng, giúp chúng có thể đến đúng đích. Điều này cho phép cùng một địa chỉ IP có thể được sử dụng trên nhiều mạng riêng biệt mà vẫn có thể giao tiếp với nhau nếu được cấu hình đúng.

Sự khác biệt giữa IPv4 và IPv6

Hiện nay có hai phiên bản của giao thức IP được triển khai rộng rãi trên các hệ thống: IPv4IPv6. IPv6 đang dần thay thế IPv4 nhờ những cải tiến trong giao thức và giới hạn về không gian địa chỉ của IPv4. Nói một cách đơn giản, thế giới hiện nay có quá nhiều thiết bị kết nối internet so với số lượng địa chỉ có sẵn thông qua IPv4.

IPv4 là địa chỉ 32-bit. Mỗi byte, hay cụ thể là mỗi đoạn 8-bit của địa chỉ, được phân cách bởi dấu chấm và thường được biểu diễn dưới dạng số từ 0 đến 255. Mặc dù các số này thường được viết theo hệ thập phân để dễ hiểu, nhưng mỗi đoạn thường được gọi là octet nhằm nhấn mạnh rằng đó là biểu diễn của 8 bit.

Một địa chỉ IPv4 điển hình trông như sau:

192.168.0.5

Giá trị nhỏ nhất trong mỗi octet là 0, và giá trị lớn nhất là 255.

Chúng ta cũng có thể biểu diễn địa chỉ này ở dạng nhị phân để có cái nhìn rõ hơn về cách bốn octet hiển thị. Chúng ta sẽ tách mỗi nhóm 4 bit bởi một dấu cách để tăng tính dễ đọc và thay dấu chấm bằng dấu gạch nối:

1100 0000 - 1010 1000 - 0000 0000 - 0000 0101

Việc nhận diện rằng hai định dạng trên biểu diễn cùng một giá trị là rất quan trọng cho việc hiểu các khái niệm sau này.

Mặc dù có một số khác biệt về giao thức và chức năng nền của IPv4 và IPv6, điểm khác biệt đáng chú ý nhất là không gian địa chỉ. IPv6 biểu diễn địa chỉ dưới dạng số 128-bit. Điều này có nghĩa là IPv6 có khả năng cung cấp hơn 7.9×10^28 địa chỉ so với IPv4.

Để biểu diễn phạm vi địa chỉ mở rộng này, IPv6 thường được viết thành tám nhóm, mỗi nhóm gồm bốn ký tự số hệ thập lục phân. Các số thập lục phân biểu diễn các số từ 0 đến 15 bằng cách sử dụng các chữ số 0–9 và các chữ cái a–f để biểu diễn các giá trị cao hơn. Một địa chỉ IPv6 điển hình có thể trông như sau:

1203:8fe0:fe80:b897:8990:8a7c:99bf:323d

Bạn cũng có thể thấy các địa chỉ này được viết theo dạng rút gọn. Quy tắc của IPv6 cho phép bạn loại bỏ các số 0 ở đầu của mỗi nhóm và thay thế một dãy nhóm số 0 liên tiếp bằng dấu hai chấm đôi (::).

Ví dụ, nếu bạn có một nhóm trong địa chỉ IPv6 như sau:

...:00bc:...

Bạn có thể viết ngắn gọn thành:

...:bc:...

Để minh họa cho trường hợp thứ hai, nếu bạn có một dãy trong địa chỉ IPv6 với nhiều nhóm số 0, như:

...:18bc:0000:0000:0000:00ff:...

Bạn có thể rút gọn thành (và cũng loại bỏ số 0 đầu của nhóm như ví dụ trên):

...:18bc::ff...

Lưu ý rằng bạn chỉ có thể làm điều này một lần cho mỗi địa chỉ, nếu không thì địa chỉ đầy đủ sẽ không thể được tái tạo lại.

Mặc dù IPv6 đang trở nên phổ biến hơn theo thời gian, trong hướng dẫn này, chúng ta sẽ khám phá các khái niệm còn lại sử dụng địa chỉ IPv4 vì không gian địa chỉ nhỏ gọn hơn giúp dễ dàng giải thích.

Các Lớp Địa Chỉ IPv4 và Phạm Vi Dành Riêng

Địa chỉ IP thường được chia thành hai phần riêng biệt. Phần đầu tiên của địa chỉ dùng để xác định mạng mà địa chỉ thuộc về, phần còn lại dùng để chỉ định một máy chủ cụ thể trong mạng đó.

Phần dành cho mạng và phần dành cho máy chủ được phân chia dựa trên cách cấu hình của mạng. Chúng ta sẽ bàn chi tiết về điều này ngay sau đây.

Truyền thống, các địa chỉ IPv4 được chia thành năm “lớp” khác nhau, được đặt tên là A đến E, nhằm phân biệt các đoạn không gian địa chỉ IPv4 có thể sử dụng. Việc xác định lớp của một địa chỉ IP dựa vào bốn bit đầu tiên của nó. Bạn có thể nhận biết lớp của địa chỉ IP bằng cách nhìn vào các bit này.

Bảng phân loại dưới đây định nghĩa các địa chỉ dựa trên các bit đầu tiên:

  • Lớp A
    • 0—: Nếu bit đầu tiên của một địa chỉ IPv4 là 0, điều đó có nghĩa là địa chỉ đó thuộc Lớp A. Nghĩa là bất kỳ địa chỉ nào từ 0.0.0.0 đến 127.255.255.255 đều thuộc Lớp A.
  • Lớp B
    • 10–: Lớp B bao gồm các địa chỉ từ 128.0.0.0 đến 191.255.255.255. Đây là các địa chỉ có bit đầu tiên là 1, nhưng bit thứ hai lại là 0.
  • Lớp C
    • 110-: Lớp C được định nghĩa là các địa chỉ từ 192.0.0.0 đến 223.255.255.255. Đây là những địa chỉ có hai bit đầu tiên là 1, nhưng bit thứ ba lại là 0.
  • Lớp D
    • 1110: Lớp này bao gồm các địa chỉ có ba bit đầu tiên là 111, nhưng bit thứ tư là 0. Phạm vi địa chỉ của lớp này từ 224.0.0.0 đến 239.255.255.255.
  • Lớp E
    • 1111: Lớp này định nghĩa các địa chỉ từ 240.0.0.0 đến 255.255.255.255. Bất kỳ địa chỉ nào bắt đầu bằng bốn bit 1 đều thuộc lớp này.

Địa chỉ lớp D được dành cho các giao thức multicasting, cho phép một gói tin được gửi đến một nhóm các máy chủ cùng lúc. Địa chỉ lớp E được dành cho mục đích nghiên cứu và tương lai, hầu như không được sử dụng trong thực tế.

Trước đây, mỗi lớp thông thường (A–C) chia phần dành cho mạng và phần dành cho máy chủ khác nhau để phù hợp với kích thước mạng khác nhau. Địa chỉ lớp A sử dụng phần còn lại của octet đầu tiên để biểu thị mạng và phần còn lại của địa chỉ cho máy chủ. Điều này phù hợp với việc định nghĩa một vài mạng có rất nhiều máy chủ.

Địa chỉ lớp B sử dụng hai octet đầu tiên (phần còn lại của octet đầu tiên và toàn bộ octet thứ hai) để xác định mạng, phần còn lại dùng cho máy chủ trong mỗi mạng.
Địa chỉ lớp C sử dụng ba octet đầu tiên để định nghĩa mạng và octet cuối cùng để xác định máy chủ trong mạng đó.

Việc chia không gian IP lớn thành các lớp giờ đây phần lớn chỉ mang tính lịch sử. Ban đầu, cách này được áp dụng như một giải pháp tạm thời để khắc phục tình trạng cạn kiệt nhanh chóng của địa chỉ IPv4 (bạn có thể có nhiều máy tính với cùng một địa chỉ máy chủ nếu chúng nằm trong các mạng riêng biệt). Sau này, phương pháp này đã được thay thế bởi các giải pháp khác mà chúng ta sẽ bàn đến dưới đây.

Phạm Vi Dành Riêng cho Mạng Nội Bộ

Cũng có một số đoạn không gian IPv4 được dành riêng cho các mục đích cụ thể.

Một trong những phạm vi hữu ích nhất là phạm vi loopback được chỉ định bởi các địa chỉ từ 127.0.0.0 đến 127.255.255.255. Phạm vi này được mỗi máy tính sử dụng để kiểm tra kết nối mạng đến chính nó. Thông thường, phạm vi này được biểu diễn bằng địa chỉ đầu tiên: 127.0.0.1.

Mỗi lớp thông thường cũng có một phạm vi dành riêng để chỉ định các địa chỉ mạng nội bộ. Ví dụ, đối với địa chỉ lớp A, các địa chỉ từ 10.0.0.0 đến 10.255.255.255 được dành cho mạng riêng. Đối với lớp B, phạm vi này là từ 172.16.0.0 đến 172.31.255.255. Còn đối với lớp C, phạm vi từ 192.168.0.0 đến 192.168.255.255 được dành cho mục đích sử dụng riêng tư.

Bất kỳ máy tính nào không được kết nối trực tiếp với internet (ví dụ, máy tính thông qua router hoặc hệ thống NAT khác) đều có thể sử dụng các địa chỉ này một cách tự do.

Ngoài ra còn có các phạm vi địa chỉ khác được dành riêng cho các mục đích sử dụng cụ thể. Bạn có thể tìm thấy bảng tóm tắt các địa chỉ được dành riêng tại Reserved IP Addresses trên Wikipedia.

Netmask và Mạng Con (Subnets)

Quá trình chia một mạng lớn thành các phần nhỏ hơn gọi là subnetting (mạng con). Điều này rất hữu ích cho nhiều mục đích khác nhau, giúp cô lập các nhóm máy chủ để quản lý dễ dàng hơn.

Như đã thảo luận ở trên, không gian địa chỉ được chia thành phần dành cho mạng và phần dành cho máy chủ. Kích thước của mỗi phần phụ thuộc vào lớp mà địa chỉ thuộc về. Ví dụ, với địa chỉ lớp C, ba octet đầu tiên dùng để mô tả mạng. Đối với địa chỉ 192.168.0.15, phần 192.168.0 mô tả mạng và 15 mô tả máy chủ.

Theo mặc định, mỗi mạng chỉ có một mạng con duy nhất chứa tất cả các địa chỉ máy chủ được xác định. Netmask là một cách để chỉ định số bit của địa chỉ dùng cho phần mạng. Một subnet mask là một netmask dùng để chia nhỏ thêm mạng đó.

Mỗi bit của địa chỉ được xem là có ý nghĩa trong việc mô tả mạng sẽ được biểu diễn bằng số 1 trong netmask.

Ví dụ, địa chỉ 192.168.0.15 có thể được biểu diễn ở dạng nhị phân như sau:

1100 0000 - 1010 1000 - 0000 0000 - 0000 1111

Như đã mô tả, phần dành cho mạng của địa chỉ lớp C là ba octet đầu tiên (tức là 24 bit đầu tiên). Vì vậy, netmask sẽ có dạng:

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

Có thể viết theo định dạng IPv4 thông thường là 255.255.255.0. Bất kỳ bit nào là 0 trong biểu diễn nhị phân của netmask được coi là thuộc phần máy chủ và có thể thay đổi. Các bit là 1 thì cố định, nhằm xác định mạng hoặc mạng con đang được bàn đến.

Chúng ta xác định phần mạng của địa chỉ bằng cách thực hiện phép toán AND bitwise giữa địa chỉ và netmask. Phép toán AND bitwise sẽ giữ lại phần mạng của địa chỉ và loại bỏ phần máy chủ. Kết quả của phép toán với ví dụ trên sẽ là:

1100 0000 - 1010 1000 - 0000 0000 - 0000 0000

Địa chỉ trên có thể được biểu diễn dưới dạng 192.168.0.0. Phần máy chủ sau đó được tính bằng hiệu giữa giá trị ban đầu và phần mạng. Trong ví dụ này, máy chủ là 0000 1111 hay 15.

Ý tưởng của việc chia mạng con là sử dụng một phần không gian máy chủ của một địa chỉ làm thêm một thông số mạng để chia nhỏ không gian địa chỉ.

Ví dụ, netmask 255.255.255.0 như đã thấy trên cho phép có 254 máy chủ trong mạng (bạn không thể dùng địa chỉ kết thúc bằng 0 hoặc 255 vì chúng được dành riêng). Nếu muốn chia nhỏ thành hai mạng con, ta có thể dùng thêm 1 bit từ phần máy chủ truyền thống làm subnet mask.

Tiếp tục với ví dụ trên, phần dành cho mạng là:

1100 0000 - 1010 1000 - 0000 0000

Phần dành cho máy chủ là:

0000 1111

Chúng ta có thể sử dụng bit đầu tiên của phần máy chủ làm chỉ số của mạng con. Điều này được thực hiện bằng cách điều chỉnh subnet mask từ:

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

thành:

1111 1111 - 1111 1111 - 1111 1111 - 1000 0000

Theo định dạng IPv4, ta có thể biểu diễn như sau: 192.168.0.128. Ở đây, chúng ta đã chỉ định bit đầu tiên của octet cuối là có ý nghĩa trong việc xác định mạng. Điều này tạo ra hai mạng con. Mạng con đầu tiên sẽ có địa chỉ từ 192.168.0.1 đến 192.168.0.127, và mạng con thứ hai sẽ chứa các máy chủ từ 192.168.0.129 đến 192.168.0.255. Lưu ý rằng, theo truyền thống, địa chỉ mạng con (subnet) không được sử dụng làm địa chỉ của máy chủ.

Nếu chúng ta dùng nhiều bit từ phần máy chủ cho việc xác định mạng, thì số mạng con sẽ tăng lên theo.

Ký Hiệu CIDR

Một hệ thống gọi là Classless Inter-Domain Routing (CIDR) đã được phát triển như một lựa chọn thay thế cho việc chia mạng con truyền thống. Ý tưởng ở đây là bạn có thể thêm một chỉ định ngay trong địa chỉ IP để biểu thị số bit có ý nghĩa dùng cho việc định tuyến hoặc nhận diện mạng.

Ví dụ, ta có thể biểu thị rằng địa chỉ IP 192.168.0.15 có netmask 255.255.255.0 bằng ký hiệu CIDR là:

192.168.0.15/24

Điều này có nghĩa là 24 bit đầu tiên của địa chỉ IP được xem là có ý nghĩa cho việc định tuyến mạng.

CIDR mở ra cho chúng ta nhiều khả năng thú vị. Ví dụ, bạn có thể tham chiếu đến các supernets – tức là phạm vi địa chỉ bao quát hơn mà không thể thực hiện với subnet mask truyền thống. Trong một mạng lớp C như ví dụ trên, bạn không thể kết hợp các địa chỉ từ hai mạng riêng biệt 192.168.0.0192.168.1.0 vì netmask của lớp C là 255.255.255.0.

Tuy nhiên, sử dụng ký hiệu CIDR, ta có thể kết hợp các khối địa chỉ này lại với nhau bằng cách tham chiếu đến khối đó dưới dạng 192.168.0.0/23. Chỉ định rằng có 23 bit dùng cho phần mạng của khối địa chỉ đó.

Vậy, mạng đầu tiên (192.168.0.0) có thể được biểu diễn bằng nhị phân như sau:

1100 0000 - 1010 1000 - 0000 0000 - 0000 0000

Trong khi mạng thứ hai (192.168.1.0) sẽ có dạng:

1100 0000 - 1010 1000 - 0000 0001 - 0000 0000

Địa chỉ CIDR mà ta chỉ định nói rằng 23 bit đầu tiên được dùng để chỉ định khối mạng. Điều này tương đương với netmask:

1111 1111 - 1111 1111 - 1111 1110 - 0000 0000

Như bạn thấy, với khối này, bit thứ 24 có thể là 0 hoặc 1 và vẫn khớp vì phần mạng chỉ quan tâm đến 23 bit đầu tiên.

CIDR cho phép chúng ta kiểm soát tốt hơn khi chỉ định các khối liên tục của địa chỉ IP. Điều này hữu ích hơn rất nhiều so với phương pháp chia mạng con truyền thống.

Kết luận

Hy vọng rằng đến giờ, bạn đã có được sự hiểu biết cơ bản về một số tác động của giao thức IP đối với mạng máy tính. Dù việc làm việc với các thiết lập mạng như vậy không phải lúc nào cũng trực quan và đôi khi gặp khó khăn, nhưng việc hiểu rõ những gì đang diễn ra là hết sức quan trọng để bạn có thể cấu hình phần mềm và các thành phần của mình một cách chính xác.

Có rất nhiều công cụ và máy tính trực tuyến hỗ trợ bạn hiểu rõ các khái niệm này và tính toán được các địa chỉ, phạm vi chính xác bằng cách nhập các thông số nhất định. Ví dụ, trang CIDR.xyz cung cấp một công cụ chuyển đổi từ địa chỉ IP dạng thập phân sang các octet, giúp bạn hình dung các netmask CIDR khác nhau.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *