Subnet mask, ác mộng đời tôi!

Tất cả những ai học về IT đều không lạ lẫm với khái niệm Subnet mask. Nhưng riêng với tôi, Subnet mask là cả một câu chuyện dài, như là một cơn ác mộng gắn liền với nhiều thay đổi.

Học và vào nghề

Tôi học CCNA vào năm hai ngàn lẻ mấy, lâu lắm rồi, và thi lấy chứng chỉ sau đó không lâu. Tôi đã rất hạnh phúc khi đi làm đúng về network, được tiếp xúc, cài đặt, sử dụng subnet mask mỗi ngày. Tôi, có lẽ cũng như những người học khác đều thuộc làu làu các định nghĩa sau:

Mặt nạ mạng con (tiếng Anh: Subnet mask) hay còn gọi là subnet, subnet work là sự phân chia lô gic địa chỉ TCP/IP. Để phân chia địa chỉ mạng thành 2 hoặc nhiều mạng con thì được gọi theo thuật ngữ tiếng Anh là subnetting.

Trích WikiPedia

Để quản lý mạng hiệu quả, người ta phân chia mạng của tổ chức này thành các mạng con và nối kết với nhau thông qua các router. Những mạng con được gọi là các subnet. Mục đích phân chia mạng con là vì:

Giảm giao dịch trên mạng: lúc này các router điều khiển các gói tin trên mạng, chỉ có gói tin nào có địa chỉ đích ở ngoài mới được chuyển ra.

Quản lý mạng đơn giản hơn, dễ kiểm tra khi có sự cố và xác định được nguyên nhân gây lỗi hơn là trong một mạng lớn.

Trích WikiPedia

Tôi cũng được chỉ cách chia IP ngược xuôi. Tôi học nó khá nhanh, nhẩm phát ra ngay lớp mạng này có bao nhiêu host, 2 mũ x là bao nhiêu. Nhưng trớ trêu thay, tôi vẫn không hiểu được bản chất của subnet mask là gì, tại sao người ta lại chọn subnet mask để chia IP mà không dùng cách khác? Có subnet mask rồi lại còn chia IP thành các lớp A,B,C,D làm chi?

Tôi cứ tự vấn bản thân, sao ai cũng hiểu chỉ mình không hiểu? Mình kém thông minh đến vậy ư? Hay mình học sai cách? Hay cách dạy của thầy có vấn đề?

Đầu tôi như một mớ bòng bong, rối rắm, không lối thoát. Tôi sinh ra bỏ bê, mặc cảm, không chuyên tâm với nghề.

Vào một ngày buồn, tôi bỏ nghề Network.

Cách đánh số phòng khách sạn

Có ai đó nói “cánh cửa này khép lại sẽ có cánh cửa khác mở ra”. Quả đúng như vậy, vài tháng sau tôi được nhận vào làm IT của một khách sạn. Thật may là làm IT ở khách sạn không đụng nhiều tới subnet mask. Tôi hạnh phúc với điều đó. Và tôi cũng khám phá ra khách sạn có nhiều cái hay hơn, công việc đa dạng hơn, từ đổ mực máy in đến cài win dạo. Nhưng quan trọng nhất là có nhiều gái xinh luôn tươi cười niềm nở với IT.

Vào một ngày nọ, tôi khám phá ra một điều rất hay ho, khách sạn có cách đánh số phòng cực kỳ thông minh, như sau:

Tòa nhà khách sạn có 22 tầng, trong đó tầng hầm chỉ dùng để xe, tầng mái chỉ dùng để lắp cột thu lôi và vài thiết bị khác. 20 tầng còn lại sẽ được bán cho khách, mỗi tầng có 25 phòng, vị chi tổng có 500 phòng. Nhưng ngạc nhiên ở chỗ, họ không đánh số phòng từ 1 đến 500, mà làm như sau:

Số phòng sẽ bao gồm 4 chữ số, theo định dạng ABCD.

AB = số tầng (từ 01 đến 20)

CD = số phòng (từ 01 đến 25)

Khi ghép chúng vào với nhau, chúng ta sẽ có dãy phòng 0101 (phòng số 1 ở tầng 1) –> 2025 (phòng số 25 ở tầng 20). Nhờ cách đánh số phòng này, ai cũng dễ dàng nhận biết vị trí phòng nằm ở đâu.

Cốt lõi ở đây, người ta đã tạo ra dãy số AB độc lập, ghép với dãy số phòng CD để ra một dãy số mới hoàn toàn mới là ABCD. Dãy số mới ABCD có ưu điểm là dễ dàng nhận biết hơn. Một ý tưởng rất đơn giản, nhưng lại giải quyết được một vấn đề phức tạp.

Ngồi trong phòng khách sạn, nghĩ về subnet mask

Chiều hôm đó, tôi đi thay cục WiFi bị hư trong phòng khách để chuẩn bị cho ngày mai khách tới. Nhìn qua cửa sổ, trời đang mưa. Vùng này, mùa mưa buồn lắm, mưa dai dẳng không thôi, mưa rả rích đêm ngày, mưa thối đất thối cát. Rồi tôi chợt nhớ nghề network, dù gì nó cũng theo tôi suốt mấy năm ròng. Trong cơn miên man, tôi nhớ về ngày xưa cũ.

Địa chỉ IP version 4 là một dãy số nhị phân dài 32 bit (bit 1 và bit 0) được gán thiết bị mạng. Dải giá trị của nó từ:

000000...000000 (32 bit 0) đến 111111.....111111 (32 bit 1)

Ở thời điểm phát minh ra địa chỉ IP, tôi đoán hải quân Mỹ cũng chỉ dùng một lớp mạng mà thôi. Và mỗi máy tính sẽ được gán 1 con số trong dãy này. Dần dần, số lượng máy tính nhiều lên, nhu cầu cần chia nhỏ dãy này ra càng lớn dần lên, thế là người ta bắt đầu nghĩ làm sao để chia cho hợp lý.

Hẳn là các cụ ngày ấy, cũng họp hành căng thẳng, bàn tới bàn lui, đề xuất cách này cách kia, cãi nhau tưng bừng lắm.

Cụ X bảo: Dễ ợt, cứ cách nhau 256 đơn vị thì tao cho vào 1 nhóm. Vị chi cứ lấy tổng 2 mũ 32 rồi chia cho 256, là ra số nhóm, tha hồ mà dùng

Cụ Y bảo: Hệ nhị phân này nó toàn 1 và 0, thật rối rắm với con người. Nên việc gì phải nghĩ nhiều, ta cứ lấy những bit đầu tiên làm quy ước mà chia nhóm thôi.

Nhóm 1: bit đầu tiên là 0, 31 bit còn lại thì tùy

Nhóm 2: hai bit đầu tiên là 10, 30 bit còn lại thì tùy

Nhóm 3: ba bit đầu tiên là 110, 29 bít còn lại thì tùy

Rồi cụ X cho rằng cụ Y chia kém được có 3 nhóm. Còn cụ Y thì lại cãi cụ X lấy số 256 đó là tùy tiện vô căn cứ. Cả khán phòng ồn ào râm ran. Ai cũng có lý của mình.

Cuối khán phòng, cụ Z ngồi trầm ngâm từ đầu buổi họp. Cụ chưa nói một lời nào, bỗng dững cất tiếng:

Tôi thấy ông nào cũng đúng. Nhưng tôi có ý này, thay vì phải phân chia nhóm ngay trên địa chỉ IP thì ta lập ra một dãy số khác. Dãy số này sẽ kết hợp với địa chỉ IP để tạo ra một dãy số hoàn toàn mới. Ta sẽ đặt các quy ước trên dãy số mới để nhận diện nó.

Cuối cùng, họ tạo ra một dãy số khác với dãy IP, đặt tên là Subnet mask. IP giống như số phòng khách sạn (CD), còn subnet mask giống như số tầng (AB). Khi chúng ta kết hợp chúng lại, sẽ có ABCD.

Subnet mask cũng có cùng dải giá trị như IP:

000000...000000 (32 bit 0) đến 111111...111111 (32 bit 1)

IP và Subnet mask kết hợp bằng phép AND:

1 and 1 =1
1 and 0 =0
0 and 1 =0
0 and 0 =0

Đặt các quy ước

  • Địa chỉ IP sẽ chia làm 2 phần: phần mạng (net) và phần host (node). Nếu một địa chỉ IP là 8.8.8.8 thì nó vẫn là nó mà thôi. Sở dĩ phải tách ra nó ra 2 phần là để dùng vào 2 việc khác nhau: phần mạng dùng cho định tuyến, phần host để gán cho thiết bị đầu cuối.
Net.node.node.node
  • Người quản trị mạng tự quyền quyết định phần mạng và phần host của địa chỉ IP
  • Trên dãy số mới (được sinh ra bới phép AND giữa IP và Subnet mask). Phần mạng là phần bao gồm các bit tính từ vị trí thứ nhất cho đến ví trí gặp dãy bit 0. Ví dụ:
01100101010110110100000000000000
(Các bit phần tô đậm được xem là phần mạng, các bit còn lại được xem là phần host)
  • Phần host là phần gồm những bit còn lại.
  • Địa chỉ mạng là địa chỉ mà phần host toàn là bit 0. Địa chỉ mạng được dùng để định tuyến
  • Địa chỉ host là địa chỉ mà phần host có ít nhất một bit 1. Địa chỉ host được dùng để gán cho các thiết bị đầu cuối
  • Địa chỉ broadcast là địa chỉ mà phần host toàn bit 1. Địa chỉ broadcast được dùng làm đại diện cho tất cả các địa chỉ host trong cùng một mạng. Ví dụ, địa chỉ 192.168.101.255/24 là đại diện cho 192.168.101.1 đến 192.168.101.254. Thay vì phải gửi đến đúng từng địa chỉ, ta chỉ cần gửi đến 192.168.101.255 là tất cả sẽ nhận được.
  • Ngoài ra còn một số quy ước khác, nhưng ít phổ biến nên tôi không đề cập

Tại sao tôi bị “tẩu hỏa” về Subnet mask?

  • Có lẽ nguyên nhân chính có lẽ là do cách đặt vấn đề trong các giáo trình mạng, giáo trình CCNA đã quá tập trung vào địa chỉ IP, các lớp địa chỉ IP (A,B,C,D), cách chia địa chỉ IP. Việc gây ấn tượng quá sâu với người mới học về lớp IP (A,B,C) sẽ có bao nhiêu host, dải mạng từ đâu đến đâu.
  • Định nghĩa subnet mask máy móc, không gắn với ví dụ thực tiễn để hiểu được ý tưởng.
  • Người dạy không nắm được lịch sử về Internet và subnet mask. Dĩ nhiên người dạy về network thì họ chỉ quan tâm đến các kiến thức network mà thôi, không thể trách họ được. Tuy nhiên, có một số vấn đề kỹ thuật khá là đặc thù như subnet mask, nếu người học tiếp cận lịch sử ra đời trước khi đi vào định nghĩa thì sẽ dễ dàng tiếp thu hơn. Tôi sẽ viết về lịch sử ra đời Internet và diễn biến ra đời một số khái niệm quan trọng trong một bài khác.
  • Thời gian đầu đi làm, với một mớ kiến thức từ sách vở, tôi tự tin là đã hiểu hết subnet mask. Chỉ đến khi gặp những địa chỉ IP mà trước đó không tồn tại trong suy nghĩ của tôi. Chẳng hạn khi bạn thấy địa chỉ 203.113.128.15/18 bạn sẽ ngạc nhiên đúng không? Bạn sẽ tự hỏi sao nó thuộc lớp C mà lại dùng /18? Trên thực tế người ta sẽ gặp những địa chỉ kiểu này rất nhiều, hiện nay người ta phân bổ IP mà không quan tâm đến lớp IP đâu, mà là xiệt (/) mấy.

Cuộc đời có những ngã rẽ…

Cuộc đời có những ngã rẽ mà bạn không thể đoán trước, người ta gọi đó là cơ duyên. Tôi chưa bao giờ nghĩ rằng mình sẽ làm IT ngành khách sạn, nhưng subnet mask đã đưa tôi đến với nó. Để tôi khám phá ra rằng làm IT khách sạn cũng có nhiều điều thú vị.

Kể từ khi tôi tự giải đáp được những khúc mắc về subnet mask, tự nhiên mà huyết mạch hanh thông, tinh thần thư thái, béo tốt phong độ hẳn ra. Có lẽ vì thế mà cuối cùng tôi đã cua được một em cùng công ty.

Vậy đấy, Subnet mask! Ác mộng đời tôi! Ngã rẽ đời tôi!

Subnet mask, ánh sáng đời tôi!

2 thoughts on “Subnet mask, ác mộng đời tôi!”

Leave a Comment