CCNA - Mạng cơ bản
Tiếp theo, chúng ta sẽ đi xuống 1 lớp nữa trong mô hình tham chiếu
1. Lớp Network
Như đã trình bày ở bài trước, chức năng chính của các thực thể lớp Network là routing – định tuyến. Để dữ liệu có thể đi được đến đích đến của mình qua một hệ thống mạng phức tạp, chúng cần được dẫn đường bởi các thiết bị định tuyến – router. Thông qua chức năng routing, các router sẽ kiểm tra rằng địa chỉ đích của gói tin có tồn tại hay không và nếu tồn tại thì cần phải đi như thế nào cho tối ưu để đến được đích đến này. Địa chỉ được sử dụng trong lớp network để định vị mọi thực thể trên hệ thống mạng được gọi là địa chỉ logic (logical address); trong đó, địa chỉ logic phổ biến nhất được sử dụng ngày nay là địa chỉ IP.
Routing là một chủ đề lớn của chương trình CCNA và sẽ được trình bày chi tiết trong các chương khác của giáo trình. Trong mục này, chúng ta không nói về routing mà sẽ cùng điểm qua một vài đặc điểm của giao thức IP và khảo sát cách thao tác với loại địa chỉ được sử dụng bởi giao thức này – địa chỉ IP.

Hình 1. Lớp Network
2. Giao thức IP
IP – Internet Protocol, là một giao thức của chồng giao thức TCP/IP thuộc về lớp Internet, tương ứng với lớp Network của mô hình OSI. Ngày nay, IP gần như là giao thức lớp 3 thống trị, được sử dụng rộng rãi trong mọi hệ thống mạng trên phạm vi toàn thế giới.
Giao thức IP có một số đặc điểm chung đáng chú ý như sau:
- Giao thức này hoạt động ở lớp Internet của mô hình TCP/IP, hay lớp network của mô hình OSI. IP cung cấp một cơ chế truyền tải lớp 3 qua một sơ đồ mạng đã được định tuyến.
- IP là một giao thức best effort – connectionless điển hình: dữ liệu của IP sẽ được thiết bị lớp 3 truyền đi ngay lập tức nếu có thể (best effort), không có bất kỳ cơ chế thiết lập kết nối, không có cơ chế báo nhận hay điều khiển luồng nào được sử dụng với IP, các gói tin IP cũng không được đánh số thứ tự khi trao đổi trên mạng,…
- Mỗi gói tin IP khi đi đến một thiết bị lớp 3 nào đó sẽ được thiết bị này đối xử một cách hoàn toàn độc lập với các gói tin IP khác.
- Không có cơ chế khôi phục lại gói bị mất trên đường đi. Việc này được giao lại cho các giao thức lớp trên tại các host đầu cuối.
Giao thức IP cũng sử dụng gói tin được cấu trúc thành hai phần: header và payload. Trong đó, header là phần chứa thông tin quản lý của gói tin và payload chính là dữ liệu cần truyền tải được đóng gói trong gói tin IP. Nếu so sánh gói tin IP như một kiện hàng thì header chính là phần ghi lại thông tin về hàng hóa còn payload chính là hàng hóa được vận chuyển. Hình 2 trình bày kiến trúc của một IP header:

Hình 2. IP Header
Trong đó:
- Version (4 bits): trường này cho biết version của giao thức IP đang sử dụng. Hiện này chỉ có hai version của giao thức IP là 4 và 6. Header trên hình 1.31 là của giao thức IPv4 nên giá trị của trường này luôn được thiết lập là 4 (dạng nhị phân là “0100”).
- IP Header Length (4 bits): trường này cho biết kích thước tính theo đơn vị word – 32 bit của IP header.
- Service Type (8bit): trường này được sử dụng cho mục đích đánh dấu dữ liệu (marking) phục vụ cho tác vụ QoS với các gói tin IP. QoS (Quality of Service) là tập hợp các kỹ thuật cho phép cấp phát tài nguyên một cách thích hợp cho các loại dữ liệu khác nhau từ đó có thể đảm bảo chất lượng dịch vụ mạng cho các loại dữ liệu này.
- Packet Length (16 bit): cho biết chiều dài tính theo byte của toàn bộ gói tin IP.
- Các trường Identification, Flag và Fragment Offset: được sử dụng cho mục đích phân mảnh gói tin. Trong một số trường hợp, gói tin IP sẽ phải được phân thành các mảnh nhỏ hơn để có thể truyền đi trên mạng. Thiết bị nhận sẽ căn cứ vào các trường vừa nêu để ghép các mảnh nhỏ này đúng thứ tự, từ đó khôi phục gói tin IP trở lại như ban đầu.
- Time to Live (TTL)(8 bit): được sử dụng để chống loop gói tin IP khi xảy ra lỗi định tuyến trên sơ đồ mạng. Cứ mỗi khi gói tin IP đi qua một node lớp 3 (ví dụ: router), giá trị TTL này lại được giảm đi 1 đơn vị. Khi TTL = 0, gói IP sẽ bị loại bỏ.
- Protocol (8 bit): trường này được sử dụng để nhận dạng giao thức nào đang được truyền tải trong phần payload của gói tin IP. Các giao thức được truyền tải bởi giao thức IP đều được gán cho một giá trị Protocol – ID được quy định bởi IANA (đã đề cập trong mục 1.4.4 ở trên).
- Ví dụ: nếu protocol – id = 6, phần payload của gói tin IP đang đóng gói một TCP segment; nếu protocol – id = 17, phần payload của gói tin IP đang đóng gói một UDP datagram; nếu protocol – id = 89, phần payload của gói tin IP đang đóng gói một gói tin của giao thức định tuyến OSPF,.v.v…
- Tương tự như trường port của các giao thức TCP và UDP, trường protocol cho phép một thiết bị lớp 3 nhận diện được giao thức được truyền tải bởi giao thức IP mà không cần phải mở gói IP ra để kiểm tra. Chúng ta có thể xem danh sách các protocol – id và giao thức tương ứng được phê chuẩn bởi IANA tại đường link: https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
- Header checksum (8bit): trường này được sử dụng cho việc kiểm tra lỗi của IP header.
- Các trường Source Address (32 bit) và Destination Address (32 bit): cho biết địa chỉ IP của thiết bị gửi và thiết bị nhận của gói IP đang xét.
- Options và Padding: trường option cho phép thêm vào tính năng mới cho giao thức IP. Cấu trúc của gói IP quy định option phải là bội số của 32 bit nên nếu option không đủ số bit, các bit padding sẽ được thêm vào để đạt được yêu cầu này.
3. Tổng quan về địa chỉ IP
Một trong những kỹ năng cơ bản quan trọng về IP là phải tính toán được trên các địa chỉ IP. Phần này sẽ cung cấp một cái nhìn tổng quan về địa chỉ IP, những điểm cần nắm về loại địa chỉ này.
3.1. Cấu trúc địa chỉ IP

Hình 3. Cấu trúc địa chỉ IP
Địa chỉ IP là một dãy nhị phân dài 32 bit. Các bit nhị phân trong một địa chỉ IP được tổ chức thành từng byte (8bit). Đến lượt chúng, các byte này lại được đổi sang giá trị thập phân để hiển thị đối với người quản trị. Khi hiển thị, các byte ở dạng thập phân được ngăn cách với nhau bởi các dấu chấm. Ví dụ, trên hình 3, địa chỉ IP 131.108.122.204 là dạng hiển thị thập phân đối với người dùng; đối với máy tính, địa chỉ này được lưu dưới dạng một chuỗi nhị phân 32 bit.
Một địa chỉ IP được cấu tạo bởi hai thành phần: Network và Host. Phần Network được dùng để định danh cho một network, và phần Host được dùng để định danh cho các host trong network ấy. Để làm rõ hai khái niệm này, chúng ta cùng quan sát ví dụ trên hình 4:

Hình 4. Ví dụ về “Network” và “Host”
Trong ví dụ này, các host cần giao tiếp mạng được kết nối vào mạng LAN thông qua một switch. Khi kết nối vào cùng một switch, các host được coi là cùng mạng (cùng network), và có thể gửi dữ liệu trực tiếp cho nhau mà không cần phải định tuyến. Trên hình 1.33, có hai network như vậy được kết nối lại với nhau thông qua một router. Ta có thể để ý cách mà các host trên hai mạng này được đặt địa chỉ IP:
- Ở mạng thứ nhất (“Network1”), các host được đặt địa chỉ là 192.168.1.1, 192.168.1.2,…, 192.168.1.x,…, các địa chỉ chỉ khác nhau ở byte cuối cùng và giống nhau hoàn toàn ở 3 byte đầu (“192.168.1”).
- Ở mạng thứ hai (“Network2”), các host được đặt địa chỉ là 192.168.2.1, 192.168.2.2,…, 192.168.2.x,…, các địa chỉ cũng chỉ khác nhau ở byte cuối cùng và giống nhau hoàn toàn ở 3 byte đầu (“192.168.2”).
Ba byte đầu của các địa chỉ IP trong trường hợp này chính là phần Network của địa chỉ, chúng được dùng để định danh cho cả một network; còn byte thứ 4 chính là phần Host, được sử dụng để định danh cho từng host thuộc về network được chỉ ra trước đó. Từ đó, ta có:
- Trên sơ đồ mạng này, có tổng cộng là hai network: Network1 được định danh là “192.168.1” và Network2 được định danh là “192.168.2”.
- Với Network1, host 192.168.1.1 là host thứ nhất của mạng 192.168.1, host 192.168.1.2 là host thứ hai của mạng 192.168.1,… host 192.168.1.x là host thứ x của mạng 192.168.1,…
- Tương tự, với Network2, host 192.168.2.1 là host thứ nhất của mạng 192.168.2, host 192.168.2.2 là host thứ hai của mạng 192.168.2,… host 192.168.2.x là host thứ x của mạng 192.168.2,…
Trong ví dụ này, phần Network của các địa chỉ bao gồm 3 byte đầu, còn phần Host bao gồm 1 byte sau, tuy nhiên, trong các trường hợp khác, cấu trúc hai phần này có thể thay đổi về chiều dài. Chúng ta sẽ cùng điểm qua điều này trong các ý tiếp theo.
Việc đặt địa chỉ IP phải tuân theo các quy tắc sau:
- Các bit phần network của địa chỉ không được phép đồng thời bằng 0:
Ví dụ: địa chỉ 0.0.0.1 với phần network là “0.0.0” và phần host là “1” là không hợp lệ.
- Địa chỉ với các tất cả các bit phần host đồng thời bằng 0 được gọi là địa chỉ network. Địa chỉ network dùng để định danh cho một network và không được đặt cho host.
Ví dụ: các host 192.168.1.1, 192.168.1.2, 192.168.1.3,… thuộc về network 192.168.1.0.
- Địa chỉ với tất cả các bit phần host đồng thời bằng 1 được gọi là địa chỉ broadcast. Có những trường hợp, chúng ta sẽ cần phải gửi cùng một thông tin giống nhau đến tất cả các host của một network nào đó. Ta có thể thực hiện đóng gói tin gửi cho từng host nhận của network ấy, có bao nhiêu host nhận thì đóng bấy nhiêu gói tin giống nhau – đó là kiểu gửi unicast; hoặc ta có thể chọn một kiểu gửi đại diện – chỉ gửi đi một gói tin duy nhất đến một địa chỉ đại diện, các thiết bị mạng ở giữa sẽ tự động nhân bản gói thành nhiều bản và phân phối đến từng host trong network – đó là kiểu gửi broadcast. Địa chỉ đại diện cho mọi host trong một network như vừa nêu ở trên được gọi là địa chỉ broadcast. Địa chỉ này được thiết lập bằng cách cho tất cả các bit phần host nhận giá trị là 1.
Ví dụ: địa chỉ 192.168.1.255 là chính là địa chỉ broadcast của network 192.168.1.0. Nếu một hệ thống mạng có hỗ trợ gửi broadcast, ta có thể gửi dữ liệu đến tất cả các host của mạng 192.168.1.0 chỉ bằng cách gửi đi một gói tin đến địa chỉ 192.168.1.255; các thiết bị mạng ở giữa sẽ tự động nhân bản gói tin này đến mọi host trong mạng
Địa chỉ broadcast cũng không thể đặt lên một host cụ thể được.
3.2. Các lớp địa chỉ IP
Không gian địa chỉ IP được chia thành các lớp như sau:
Lớp A:

Hình 5. Địa chỉ lớp A
- Địa chỉ lớp A sử dụng một byte đầu làm phần mạng, ba byte sau làm phần host.
- Bit đầu của một địa chỉ lớp A luôn được giữ là 0.
- Các địa chỉ mạng lớp A nằm trong dải: 1.0.0.0 →0.0.0.
- Mạng 127.0.0.0 được sử dụng làm mạng loopback, chỉ được dùng để giao tiếp trong nội bộ host, không được sử dụng để đặt trên card mạng giao tiếp bên ngoài.
- Phần host có 24 bit => mỗi mạng lớp A có (224 – 2) host.
Lớp B :

Hình 6. Địa chỉ lớp B
- Địa chỉ lớp B sử dụng hai byte đầu làm phần mạng, hai byte sau làm phần host.
- Hai bit đầu của một địa chỉ lớp B luôn được giữ là 1 0.
- Các địa chỉ mạng lớp B nằm trong dải: 128.0.0.0 → 191.255.0.0. Có tất cả 214 mạng trong lớp B.
- Phần host dài 16 bit, do đó một mạng lớp B có 216 – 2 host.
Lớp C:

Hình 7. Địa chỉ lớp C
- Địa chỉ lớp C sử dụng ba byte đầu làm phần mạng, một byte sau làm phần host.
- Ba bit đầu của một địa chỉ lớp C luôn được giữ là 1 1 0.
- Các địa chỉ mạng lớp C gồm: 192.0.0.0 → 223.255.255.0. Có tất cả 221 mạng trong lớp C.
- Phần host dài 8 bit, do đó một mạng lớp C có 28 – 2 = 254 host.
Lớp D :
- Gồm các địa chỉ thuộc dải: 224.0.0.0 → 239.255.255.255.
- Bốn bit đầu của một địa chỉ lớp D luôn được giữ là 1 1 1 0.
- Được sử dụng để làm địa chỉ multicast, không đặt cho từng host cụ thể.
- Ví dụ: 224.0.0.5 dùng cho OSPF; 224.0.0.9 dùng cho RIPv2
Lớp E:
- Từ 240.0.0.0 trở đi.
- Được sử dụng cho mục đích dự phòng.
Ghi chú:
- Các lớp địa chỉ IP có thể sử dụng để đặt cho các host là các lớp A, B, C.
- Để thuận tiện cho việc nhận diện một địa chỉ IP thuộc lớp nào, ta có thể quan sát byte đầu của địa chỉ, nếu byte này có giá trị nằm trong dải:
1 → 126: đây là một địa chỉ lớp A.
128 → 191: đây là một địa chỉ lớp B.
192 → 223: đây là một địa chỉ lớp C.
224 → 239: đây là một địa chỉ lớp D.
240 → 255: đây là một địa chỉ lớp E.
3.3. Địa chỉ IP Private và IP Public
Dải IP dùng được cho host (thuộc các lớp A, B, C) được phân thành hai loại: Private và Public.
- Địa chỉ Private: chỉ được sử dụng trong mạng nội bộ của các doanh nghiệp, không được sử dụng trên môi trường Internet. Địa chỉ Private có thể được sử dụng đi sử dụng lại từ mạng nội bộ này sang mạng nội bộ khác. Dải địa chỉ Private được quy định theo tài liệu RFC – 1918, theo đó:
- Private Lớp A: Toàn bộ các IP thuộc network 10.0.0.0.
- Private Lớp B: Các IP thuộc các network từ 172.16.0.0 đến 172.31.0.0.
- Private Lớp C: Các IP thuộc các network từ 192.168.0.0 đến 192.168.255.0.Người quản trị có thể tự do sử dụng các dải IP Private để gán cho các thiết bị trong mạng nội bộ của mình.
- Địa chỉ Public: là địa chỉ sử dụng trên môi trường Internet, định tuyến được trên môi trường Internet. Địa chỉ Public phải là duy nhất cho mỗi host tham gia Internet. Để sử dụng được địa chỉ Public, chúng ta phải mua hoặc thuê của các tổ chức sở hữu các dải IP Public.
Trong mạng doanh nghiệp cũng như mạng gia đình, các máy tính thường được sử dụng địa chỉ IP Private; địa chỉ IP Public sẽ được đặt trên mặt ngoài của các thiết bị truy nhập Internet (ví dụ: trên các Router FTTH hay ADSL). Để các máy bên trong với địa chỉ Private có thể truy nhập được các server Public trên môi trường Internet, kỹ thuật NAT (Network Address Translation) sẽ được sử dụng để chuyển đổi địa chỉ IP Private thành IP Public khi gói tin đi từ mạng nội bộ ra môi trường Internet. Kỹ thuật này sẽ được đề cập chi tiết trong một chương khác của giáo trình.
Địa chỉ IP Private được sử dụng với mục đích bảo tồn dải IP Public đã cạn kiệt, là một giải pháp để tiết kiệm địa chỉ IP Public (thật vậy, với sự có mặt của dải IP Private, ta có thể đặt cùng một dải IP cho vô số mạng doanh nghiệp mà nếu như không sử dụng dải này thì mỗi mạng trong số ấy sẽ đòi hỏi một dải IP khác nhau).
3.4. Địa chỉ IP Broadcast
Trong mục 3.1 ở trên, ta đã biết địa chỉ Broadcast là địa chỉ đại diện cho mọi host của một network. Với IP, có hai loại địa chỉ Broadcast cùng đảm nhận chức năng đại diện mà ta vừa nêu:
- Directed broadcast. Ví dụ:168.1.255.
- Local broadcast: 255.255.255.255.
Để phân biệt hai loại địa chỉ broadcast này, ta có thể xem xét ví dụ sau:
Xét host có địa chỉ IP là 192.168.2.1. Khi host này gửi broadcast đến 255.255.255.255, tất cả các host cùng mạng với nó (thuộc mạng 192.168.2.0) sẽ nhận được gói broadcast này, còn nếu nó gửi broadcast đến địa chỉ 192.168.1.255 thì tất cả các host thuộc mạng 192.168.1.0 sẽ nhận được gói broadcast (các host thuộc mạng 192.168.2.0 cùng với nó sẽ không nhận được gói broadcast này).
3.5. Subnet – mask và Prefix – length
Subnet – mask:
Subnet mask là một dải nhị phân dài 32 bit đi kèm với một địa chỉ IP để cho phép xác định được địa chỉ của network mà IP này thuộc về. Điều này được thực hiện bằng cách thực hiện phép toán AND địa chỉ IP với subnet – mask theo từng bit một.
Ví dụ: xét địa chỉ IP 192.168.1.1 với subnet – mask là 255.255.255.0. Ta xác định địa chỉ network tương ứng bằng cách AND 192.168.1.1 với 255.255.255.0.
| Dạng thập phân | Dạng nhị phân | |
| Địa chỉ IP | 192.168.1.1 | 11000000.10100000.00000001.00000001 |
| Subnet mask | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
| Địa chỉ mạng | 192.168.1.0 | 11000000.10100000.00000001.00000000 |
(phép toán AND: 0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1)
Để đơn giản, chúng ta chỉ cần nhớ rằng: phần network của địa chỉ chạy đến đâu, các bit 1 của subnet – mask chạy đến đó; ứng với các bit phần host của địa chỉ, các bit của subnet mask nhận giá trị bằng 0.
Các subnet – mask chuẩn của các địa chỉ lớp A, B và C:
- Lớp A: 255.0.0.0.
- Lớp B: 255.255.0.0.
- Lớp C: 255.255.255.0.
Prefix – length:
Một cách khác để hiển thị địa chỉ IP là sử dụng số prefix – length. Số prefix – length là số bit network (bit mạng) trong một địa chỉ IP, được viết ngay sau địa chỉ IP và ngăn cách bởi dấu “/”.
Ví dụ: 192.168.1.1/24 (có 24 bit mạng trong địa chỉ này), 172.16.2.1/16 (có 16 bit mạng trong địa chỉ này) hay 10.0.0.1/8 (có 8 bit mạng trong địa chỉ này),…
Ghi chú: Khi đặt địa chỉ IP cho một host, ta không được phép chỉ khai báo một địa chỉ IP riêng lẻ mà luôn phải khai báo đi kèm theo nó hoặc là subnet – mask hoặc là số prefix – length.
4. IP Subnetting
Ta xem xét một ví dụ (hình 8)

Hình 8. Sơ đồ ví dụ
Yêu cầu của ví dụ này là phải thực hiện quy hoạch IP cho sơ đồ trong hình 8, đàm bảo sơ đồ có đủ địa chỉ IP cho tất cả các mạng.
Quan sát sơ đồ ta thấy có tổng cộng 3 network cần đặt địa chỉ IP: network LAN 1, network LAN 2 và link đấu nối giữa R1 và R2. Ta có thể sử dụng 3 dải IP bất kỳ để đặt cho 3 network này, ví du: sử dụng network 192.168.1.0/24 cho LAN 1, network 192.168.2.0/24 cho LAN 2 và network 192.168.12.0/24 cho đường đấu nối. Ta có kết quả quy hoạch IP được thể hiện trong hình 9:

Hình 9. Quy hoạch IP cho sơ đồ ví dụ
Quy hoạch IP cho sơ đồ như trên với IP không giới hạn là khá đơn giản. Tuy nhiên, trong thực tế, người quản trị khi quy hoạch IP cho một sơ đồ mạng có thể phải tuân theo các chính sách về sử dụng địa chỉ của doanh nghiệp mình, khi đó việc quy hoạch IP sẽ trở nên khó khăn hơn. Ví dụ, cũng với sơ đồ như hình 8 và hình 9, lần này chúng ta được yêu cầu quy hoạch IP đảm bảo mọi host đều có địa chỉ IP nhưng chỉ được sử dụng các địa chỉ IP thuộc mạng 192.168.1.0/24, không được lấy thêm bất kỳ dải địa chỉ nào khác. Như vậy, ta thấy lần này chính sách công ty bắt buộc chúng ta chỉ được sử dụng một địa chỉ network cho 3 network khác nhau. Giải pháp được thực hiện lúc này là chia network 192.168.1.0/24 thành nhiều mạng nhỏ khác nhau, mỗi mạng nhỏ này được gọi là một subnet và cách mà chúng ta tiến hành chia như vậy được gọi là kỹ thuật chia subnet (IP subnetting).
4.1. Nguyên lý cơ bản của kỹ thuật chia subnet
Để có thể chia nhỏ một mạng lớn thành nhiều mạng con bằng nhau, chúng ta thực hiện mượn thêm một số bit bên phần host để làm phần network. Các bit mượn thêm này được gọi là các bit subnet. Lúc này phần network của địa chỉ sẽ bao gồm phần network gốc cộng thêm các bit subnet và phần host của địa chỉ bị thu hẹp lại so với trước (và như vậy ít host hơn so với trước) (hình 10):

Hình 10. Mượn thêm bit để chia subnet
Ta cùng xem xét ví dụ quy hoạch IP cho sơ đồ hình 8 và hình 9 với dải IP 192.168.1.0/24 ở trên. Như đã nói, vì không đủ địa chỉ network nên chúng ta thực hiện chia subnet cho network 192.168.1.0/24. Ta sẽ thực hiện mượn 2 bit của phần host để làm phần network. Với cách mượn như vậy, chúng ta có dải IP sẽ chạy như sau (ta chỉ phân tích nhị phân byte bị mượn bit của phần host):
Với các bit mượn là “00”:
192.168.1.00000000 → 192.168.1.0/26 Địa chỉ Network (các bit host đều bằng 0)
192.168.1.00000001 → 192.168.1.1/26 Địa chỉ host
192.168.1.00000010 → 192.168.1.2/26 Địa chỉ host
….
192.168.1.00111110 → 192.168.1.62/26 Địa chỉ host
192.168.1.00111111 → 192.168.1.63/26 Địa chỉ Broadcast (các bit host đều bằng 1)
Với các bit mượn là “01”:
192.168.1.01000000 → 192.168.1.64/26 Địa chỉ Network (các bit host đều bằng 0)
192.168.1.01000001 → 192.168.1.65/26 Địa chỉ host
192.168.1.01000010 → 192.168.1.66/26 Địa chỉ host
….
192.168.1.01111110 → 192.168.1.126/26 Địa chỉ
192.168.1.01111111 → 192.168.1.127/26 Địa chỉ Broadcast (các bit host đều bằng 1)
Với các bit mượn là “10”:
192.168.1.10000000 → 192.168.1.128/26 Địa chỉ Network (các bit host đều bằng 0)
192.168.1.10000001 → 192.168.1.129/26 Địa chỉ host
192.168.1.10000010 → 192.168.1.130/26 Địa chỉ host
….
192.168.1.10111110 → 192.168.1.190/26 Địa chỉ host
192.168.1.10111111 → 192.168.1.191/26 Địa chỉ Broadcast (các bit host đều bằng 1)
Với các bit mượn là “11”:
192.168.1.11000000 → 192.168.1.192/26 Địa chỉ Network (các bit host đều bằng 0)
192.168.1.11000001 → 192.168.1.193/26 Địa chỉ host
192.168.1.11000010 → 192.168.1.194/26 Địa chỉ host
….
192.168.1.11111110 → 192.168.1.254/26 Địa chỉ host
192.168.1.11111111 → 192.168.1.255/26 Địa chỉ Broadcast (các bit host đều bằng 1)
Từ kết quả phân tích ở trên, ta thấy:
- Cứ ứng với mỗi dãy subnet bit, chúng ta chia ra được một subnet. Ở ví dụ trên, vì ta mượn 2 bit với tổng số giá trị có thể có là 4 giá trị (00, 01, 10, 11), ta chia được tổng cộng 4 subnet.
- Phần network lúc này sẽ bao gồm phần network gốc cộng thêm các bit mượn. Khi viết theo kiểu prefix – length, địa chỉ IP lúc này có 26 bit network chứ không phải 24 bit network như trước nữa nên prefix – length sẽ là /26. Subnet – mask trong trường hợp này sẽ là “11111111.11111111.11111111.11000000” ở dạng nhị phân, hay là “255.255.255.192” ở dạng thập phân.
- Như quy tắc thông thường của một dãy nhị phân, các bit phần host (ở đây là 6 bit cuối) sẽ chạy từ một dãy toàn các bit 0 (000000 – 6 bit 0) đến một dãy toàn các bit 1 (111111 – 6 bit 1). Tổng số giá trị có thể có của một dãy nhị phân 6 bit là 26 giá trị, ta bỏ ra hai giá trị 000000 (là địa chỉ network vì các bit phần host đều bằng 0) và 111111 (là địa chỉ broadcast vì các bit phần host đều bằng 1) thì số lượng địa chỉ dùng được cho host của một subnet là 26 – 2 = 62 địa chỉ.
Như vậy, ta đã chia network 192.168.1.0/24 thành 4 subnet, và mỗi subnet này có 62 host (phần host có 6 bit). Mỗi subnet này cũng có địa chỉ network (địa chỉ đầu với các bit host = 0), địa chỉ broadcast (địa chỉ cuối với các bit host = 1), và các địa chỉ dành cho host, hoàn toàn đầy đủ mọi loại địa chỉ như một network thông thường.
Các subnet được chia ra là 192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26 và 192.168.1.192/26. Ta có thể lựa chọn các subnet này để gán vào sơ đồ và hoàn tất yêu cầu đặt ra (hình 11). Sơ đồ ví dụ chỉ yêu cầu 3 subnet, còn lại 1 subnet 192.168.1.192/26 chưa sử dụng ta để lại làm subnet dự phòng.

Hình 11. Gán các subnet vào sơ đồ mạng
4.2. Một phương pháp chia subnet
Nắm vững nguyên lý chia subnet ở trên, ta có thể thực hiện chia subnet cho mọi bài toán được đặt ra. Tuy nhiên, cách chia theo nguyên lý cơ bản ở trên khá mất thời gian và không phù hợp cho những yêu cầu về chia nhanh. Phần tiếp theo sẽ giới thiệu một phương pháp chia subnet dựa trên việc đếm bước nhảy. Phương pháp này sẽ giúp chúng ta thực hiện chia subnet một cách nhanh chóng và gọn gàng hơn là sử dụng phương pháp cơ bản phân tích nhị phân đã đề cập ở trên.
Trước khi bước vào kỹ thuật chia subnet dựa trên bước nhảy, chúng ta cùng nắm qua một số bảng thống kê quan trọng mà sẽ được vận dụng rất nhiều cho kỹ thuật này.
Một số bảng thống kê cần nắm:
Bảng 1 : Các chuỗi nhị phân 8 bit cùng với các giá trị thập phân tương ứng thường gặp trong việc tính toán subnet – mask.
| Chuỗi nhị phân 8 bit | Giá trị thập phân tương ứng |
| 00000000 | 0 |
| 10000000 | 128 |
| 11000000 | 192 |
| 11100000 | 224 |
| 11110000 | 240 |
| 11111000 | 248 |
| 11111100 | 252 |
| 11111110 | 254 |
| 11111111 | 255 |
Bảng 2 : Các bước nhảy tương ứng với số bit mượn
Công thức để suy ra giá trị bước nhảy từ số bit mượn là: Bước nhảy = 28-n, với n là số bit mượn. Dựa vào công thức này, ta có các giá trị bước nhảy tương ứng với số bit mượn trong vòng 1 byte:
| Số bit mượn | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| Bước nhảy | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Phương pháp chia subnet dựa theo bước nhảy:
Ta mô tả phương pháp này thông qua khảo sát một bài toán tổng quát dưới đây.
Cho một network gốc và số bit mà phần network sẽ mượn của phần host để thực hiện chia subnet (ta gọi là “số bit mượn”). Xác định:
- Số subnet chia được.
- Số host/subnet.
- Với mỗi subnet chia được:
- Địa chỉ network của subnet.
- Địa chỉ host đầu của subnet.
- Địa chỉ host cuối của subnet.
- Địa chỉ Broadcast của subnet
- Subnet – mask được sử dụng tương ứng với số bit mượn.
Ta thực hiện tính toán các yêu cầu trên theo cách thức như sau:
- Gọi n là số bit mượn và m là số bit host còn lại, ta có:
- Số subnet chia được

Luật Subnet – zero: cho phép sử dụng hai subnet tương ứng với dãy bit mượn bằng 0 hết và dãy bit mượn bằng 1 hết. Thông thường các hệ điều hành trên các thiết bị ngày nay đều hỗ trợ luật subnet – zero một cách mặc định, do đó, nếu ta không thấy có yêu cầu gì thêm, ta sử dụng cách chia có hỗ trợ subnet – zero, tức là công thức 2n. - Số host/subnet = 2m – 2 (host/subnet).
- Số subnet chia được
- Với mỗi subnet chia được:
- Địa chỉ network: Có byte bị mượn bit là bội số của bước nhảy. Bước nhảy tương ứng với số bit mượn có thể được tra theo bảng 1.2 (bảng bước nhảy).
- Địa chỉ host đầu = Địa chỉ network + 1 (cần hiểu cộng ở đây là đi tới một địa chỉ).
- Địa chỉ Broadcast = Địa chỉ network kế tiếp – 1 (cần hiểu trừ ở đây là lùi về trước 1 địa chỉ).
- Địa chỉ host cuối = Địa chỉ Broadcast – 1.
- Subnet – mask tương ứng được tính ra bằng cách sử dụng luật “phần network của địa chỉ IP chạy đến đâu, các bit 1 của subnet – mask chạy đến đấy” và tham khảo bảng 1 ở trên
Chúng ta cùng làm quen với phương pháp này thông qua một số ví dụ.
Ví dụ 1: Xét mạng 192.168.1.0/24, mượn 2 bit.
Phần host bị mượn 2 bit => số bit host còn lại sẽ là 6 bit. Số bit mượn là 2, suy ra bước nhảy là 64. Ta có:
- Số subnet có thể chia được: 22 = 4 subnet.
- Số host/subnet = 26 – 2 = 62 host.
- Các địa chỉ network của các subnet sẽ có byte bị mượn bit (bytet thứ 4) là bội số của 64, byte này sẽ nhận các giá trị 0, 64, 128, 192 (nhảy với bước nhảy là 64).
- Áp dụng các công thức đã trình bày, ta có thống kê về các subnet chia được như sau:
192.168.1.0/26 → Địa chỉ network của subnet thứ nhất.
192.168.1.1/26 → Địa chỉ host đầu.
….
192.168.1.62/26 → Địa chỉ host cuối.
192.168.1.63/26 → Địa chỉ Broadcast.
———————————————————————
192.168.1.64/26 → Địa chỉ network của subnet thứ hai.
192.168.1.65/26 → Địa chỉ host đầu.
….
192.168.1.126/26 → Địa chỉ host cuối.
192.168.1.127/26 → Địa chỉ Broadcast.
———————————————————————
192.168.1.128/26 → Địa chỉ network của subnet thứ ba.
192.168.1.129/26 → Địa chỉ host đầu.
….
192.168.1.190/26 → Địa chỉ host cuối.
192.168.1.191/26 → Địa chỉ Broadcast.
———————————————————————
192.168.1.192/26 → Địa chỉ network của subnet thứ tư.
192.168.1.193/26 → Địa chỉ host đầu.
….
192.168.1.254/26 → Địa chỉ host cuối.
192.168.1.255/26 → Địa chỉ Broadcast.
- Prefix – length là /26, tức là có 26 bit network, vậy subnet – mask sẽ có 26 bit đầu tiên bằng 1 và 6 bit còn lại bằng 0. Tham khảo bảng 1.1, ta tính được subnet – mask được sử dụng là 255.255.255.192.
Ví dụ 2: Xét mạng 172.16.0.0/16, mượn 2 bit.
Phần host bị mượn 2 bit => số bit host còn lại sẽ là 14 bit. Số bit mượn là 2, suy ra bước nhảy là 64.
Ta có:
- Số subnet chia được là 22 = 4 subnet.
- Số host trên mỗi subnet = 214 – 2 (host/subnet).
- Các địa chỉ network của các subnet sẽ có byte bị mượn (byte thứ 3) là bội số của 64 và nhận các giá trị là 0, 64, 128, 192 (nhảy với bước nhảy là 64).
- Thống kê về các subnet chia được:
172.16.0.0/18 → Địa chỉ network của subnet thứ nhất.
172.16.0.1/18 → Địa chỉ host đầu.
172.16.0.2/18 → Địa chỉ host thứ hai.
….
172.16.63.253/18 → Địa chỉ host kế cuối.
172.16.63.254/18 → Địa chỉ host cuối.
172.16.63.255/18 → Địa chỉ Broadcast.
———————————————————————
172.16.64.0/18 → Địa chỉ network của subnet thứ nhất.
172.16.64.1/18 → Địa chỉ host đầu.
172.16.64.2/18 → Địa chỉ host thứ hai.
….
172.16.127.253/18 → Địa chỉ host kế cuối.
172.16.127.254/18 → Địa chỉ host cuối.
172.16.127.255/18 → Địa chỉ Broadcast.
———————————————————————
172.16.128.0/18 → Địa chỉ network của subnet thứ ba.
172.16.128.1/18 → Địa chỉ host đầu.
172.16.128.2/18 → Địa chỉ host thứ hai.
….
172.16.191.253/18 → Địa chỉ host kế cuối.
172.16.191.254/18 → Địa chỉ host cuối.
172.16.191.255/18 → Địa chỉ Broadcast.
———————————————————————
172.16.192.0/18 → Địa chỉ network của subnet thứ tư.
172.16.192.1/18 → Địa chỉ host đầu.
172.16.192.2/18 → Địa chỉ host thứ hai.
….
172.16.255.253/18 → Địa chỉ host kế cuối.
172.16.255.254/18 → Địa chỉ host cuối.
172.16.255.255/18 → Địa chỉ Broadcast.
- Subnet – mask tương ứng với /18 là 255.255.192.0.
4.3. Một vài ví dụ về quy hoạch IP
Chúng ta cùng khảo sát một vài ví dụ về vận dụng kỹ thuật IP subnetting đã trao đổi ở trên để thực hiện quy hoạch IP cho một sơ đồ cụ thể.
Ví dụ 1: Cho một sơ đồ mạng như sau.

Hình 12. Sơ đồ ví dụ 1
Chỉ được phép sử dụng một mạng 192.168.1.0/24, hãy quy hoạch IP cho sơ đồ trên, đảm bảo mọi host đều phải có địa chỉ IP.
Thực hiện:
Đây là một bài toán ngược. Thay vì cho chúng ta sẵn số bit mượn, đề bài yêu cầu chúng ta phải xác định số bit mượn và thực hiện chia subnet rồi phân bổ các subnet chia được vào sơ đồ mạng ở trên. Chúng ta cùng phân tích yêu cầu này.
Gọi số bit mượn là n và số bit host còn lại sau khi mượn là m. Từ sơ đồ trên ta thấy ta phải chọn n và m sao cho số subnet chia được phải đáp ứng đủ cho 5 network và đáp ứng được cho network có kích thước lớn nhất là 28 host (gồm 27 host ở dưới và một IP đấu nối đặt trên cổng của Router R1). Ta có hệ sau:

Từ kết quả trên, ta chọn được n = 3 và m = 5, nghĩa là chúng ta mượn 3 bit và để lại 5 bit host. Mượn 3 bit sẽ chia được 23 = 8 subnet, đáp ứng đủ cho yêu cầu 5 subnet. Với số lượng bit host = 5, mỗi subnet sẽ có 25 – 2 = 30 (host/subnet), đáp ứng được cho mạng lớn nhất có 28 host, từ đó đáp ứng được cho các mạng còn lại. Việc chia subnet như thế nào với n = 3 và m = 5 đã được hướng dẫn trong mục 4.2 ở trên. Chúng ta có một kết quả quy hoạch IP cho sơ đồ hình 13 như sau:

Hình 13. Quy hoạch IP cho sơ đồ mạng hình 12
Ví dụ 2: Xét lại sơ đồ mạng của hình 1.41, nhưng với số lượng host được thay đổi trên các network. Mạng được sử dụng vẫn là 192.168.1.0/24, với yêu cầu quy hoạch IP đầy đủ cho sơ đồ đã nêu.

Hình 14. Sơ đồ mạng ví dụ 2
Tương tự như ví dụ 1, ta cũng gọi số bit mượn là n và số bit host là m, và ta cũng có hệ như sau để xác định n và m:

Từ kết quả trên ta thấy ta không thể xác định được n và m cho việc quy hoạch IP cho sơ đồ này vì không có cặp giá trị (n,m) nào thỏa mãn được hệ trên. Nếu muốn thỏa mãn đủ số lượng subnet cho 5 network trên sơ đồ, n tối thiểu phải bằng 3, chia ra được 8 subnet. Tuy nhiên, nếu chia ra 8 subnet thì mỗi subnet lại chỉ có được 30 host, không đáp ứng được cho các network 73 host và 61 host. Ngược lại, nếu ta chọn cách đáp ứng được cho network có nhiều host nhất (73 host) thì số bit host phải tối thiểu bằng 7 (27 – 2 = 126 > 73) nhưng khi đó, số bit mượn lại chỉ bằng 1 suy ra số subnet chia được chỉ có 21 = 2 subnet, không đáp ứng được cho số lượng network trên sơ đồ.
Chúng ta không giải quyết được yêu cầu ở trên vì ta sử dụng cách thức chia mạng gốc thành những subnet đều nhau. Để giải quyết được, chúng ta phải sử dụng phương thức chia khác: chia thành mạng gốc thành những subnet có kích thước không đều nhau, có những subnet có kích thước lớn và có những subnet có kích thước nhỏ; sau đó, những subnet lớn ta gán cho các network có số lượng host nhiều, những subnet nhỏ, ta gán cho những network có số lượng host ít. Với sơ đồ trên, ta sẽ thực hiện một cách chia như sau:
Vẫn gọi số bit mượn là n, số bit host còn lại là m, ta thực hiện xét các network cần quy hoạch IP từ network có kích thước lớn nhất đến network có kích thước nhỏ nhất.
- Đầu tiên, ta xét network có kích thước 73 host (72 host + 1 địa chỉ đấu nối). Lần này, ta không xét đến yếu tố số lượng subnet cần chia nữa, chỉ tập trung vào việc đáp ứng đủ yêu cầu về số host của network được xem xét:

Với cặp giá trị n = 1 và m = 7, ta thấy rằng một subnet đáp ứng được cho mạng 73 host là một subnet /25 (24 bit network gốc + 1 bit mượn). Nếu đã thông thạo phương pháp chia subnet ỏ trên, ta có thể dễ dàng chia được network 192.168.1.0/24 thành 2 subnet /25 là 192.168.1.0/25 và 192.168.1.128/25. Ta sẽ sử dụng subnet 192.168.1.0/25 cho network 73 host, không gian IP của mạng gốc 192.168.1.0/24 lúc này chỉ còn lại dải IP của subnet 192.168.1.128/25, chạy từ 192.168.1.128 đến 192.168.1.255. - Tiếp theo, ta xét network có kích thước 61 host (60 host + 1 địa chỉ đấu nối). Ta cũng lại xét hệ bất phương trình để tìm ra số bit mượn và số bit host áp dụng được cho các subnet 61 host:

Với cặp giá trị n = 2, m = 6, ta thấy subnet đáp ứng được cho mạng 61 host là một subnet /26 (24 bit gốc + 2 bit mượn). Ta có thể dễ dàng tính được: mạng 192.168.1.0/24 có thể chia thành 4 subnet /26 là 192.168.1.0/26, 192.168.1.64/26, 192.168.1.128/26 và 192.168.1.192/26. Ta cũng thấy rằng các IP thuộc hai dải 192.168.1.0/26 và 192.168.1.64/26 là thuộc về subnet 192.168.1.0/25 đã được sử dụng ở bước trên cho network 73 host nên ta chỉ còn có thể sử dụng hai subnet /26 tiếp theo. Ta chọn subnet 192.168.1.128/26 để sử dụng cho mạng 61 host, vậy dải IP còn lại lúc này là dải thuộc subnet 192.168.1.192/26: từ 192.168.1.192 đến 192.168.1.255. - Ta tiếp tục xét đến network thứ 3 là network có 26 host (25 user + 1 địa chỉ đấu nối). Thực hiện tìm số bit mượn và số bit host phù hợp:

Với cặp giá trị n = 3, m = 5, ta thấy subnet đáp ứng được cho network 26 host là một subnet /27 (24 bit gốc + 3 bit mượn). Ta tính được: mạng 192.168.1.0/24 có thể chia thành 8 subnet /27 là 192.168.1.0/27, 192.168.1.32/27, 192.168.1.64/27, 192.168.1.96/27, 192.168.1.128/27, 192.168.1.160/27, 192.168.1.192/27 và 192.168.1.224/27. Từ kết quả phân tích ở trên, ta thấy rằng, ta chỉ còn lại các subnet /27 từ 192.168.1.192/27 và 192.168.1.224/27, các subnet trước đó đã được phân bổ cho các network 73 host và 61 host. Ta sử dụng subnet 192.168.1.192/27 cho network 26 host, vậy ta còn lại subnet 192.168.1.224/27, với các IP chạy từ 192.168.1.224 cho đến 192.168.1.255. - Ta xét đến hai network cuối cùng là hai network đấu nối giữa các Router. Hai network này là hai network chỉ có hai host (hai đầu của kết nối điểm – điểm). Ta có thể tính được số bit mượn và số bit host phù hợp để có được các subnet chỉ có hai host:

Ta thấy, subnet đáp ứng được tối ưu nhất cho một mạng 2 host là subnet /30 (24 bit gốc mượn thêm 6 bit). Ta để ý rằng, trong dải IP còn lại (từ 192.168.1.224 đến .255), các IP từ 192.168.1.224 đến 192.168.1.227 cấu thành subnet 192.168.1.224/30, các IP từ 192.168.1.228 đến 192.168.1.231 cấu thành subnet 192.168.1.228/30. Ta sử dụng luôn hai subnet này cho hai kết nối điểm – điểm, hoàn tất công việc quy hoạch IP cho sơ đồ ví dụ 2.
Ta có kết quả quy hoạch cuối cùng cho sơ đồ ví dụ 2 như sau:

Hình 15. Kết quả quy hoạch IP cho ví dụ 2
Phương pháp chia một mạng thành những subnet có kích thước không đều nhau mà ta vừa thực hiện ở trên được gọi là phương pháp chia subnet theo kiểu VLSM (Variable Length Subnet Mask). Một sơ đồ VLSM là một sơ đồ tồn tại các subnet của cùng một mạng IP mà có kích thước không đều nhau, hay có số prefix – length khác nhau. Ngược lại, phương pháp chia mà mọi subnet đều có kích thước đều nhau (và từ đó có chung một số prefix – length) mà ta đã thực hiện trước đó được gọi là phương pháp chia theo kiểu FLSM (Fixed Length Subnet Mask).
Ghi chú:
- Trong thực tế, ta thường dùng phương pháp chia VLSM để quy hoạch IP nhằm đảm bảo tối ưu hóa cách phân bổ IP.
- Các đường link điểm nối điểm (point – to – point) thường được gán cho các subnet /30 (subnet – mask là 255.255.255.252), là loại subnet phù hợp nhất cho loại hình kết nối này.