Cách tính toán địa chỉ IP
Cách tính toán địa chỉ IP
Trước khi đi vào tìm hiểu
cách tính, chúng ta cần phải biết rõ IP là gì. Mình đã có làm một video clip giải
thích đơn giản về nó. Hãy đảm bảo là xem nó trước khi đọc bài này nhé: https://fb.watch/432rB47sQq/
Oke. Đầu tiên chúng ta cần
làm rõ một số khái niệm:
-
Network: Một
phần của địa chỉ IP dùng để xác định mạng
-
Host: Một
phần của địa chỉ IP dùng để xác định host – đối tượng trong một mạng.
-
Subnet mask:
Hiểu đơn giản đó là một dãy số giúp ta xác định được đâu là phần network, đâu là
phần host.
Ví
dụ: Với IP 192.135.17.6, subnet mask 255.255.255.0, thì:
o
Đầu tiên, ta phải hiểu rằng chỉ có thể thấy
rõ ý nghĩa của IP thông qua dạng bit. Để hiểu rõ ý nghĩa, ta cần chuyển đổi IP
và subnet mask ra dạng bit. Như thế, ta có:
§ IP
192.135.17.6 -> 11000000.10000111.00010001.00000110
§ Subnet
mask: 255.255.255.0 -> 11111111.11111111.11111111.00000000
o
Ta xếp hai dãy số trên thẳng hàng từng đôi
một
o
Vùng subnet mask có dãy bit toàn 1 sẽ là vùng
network.
o
Vùng subnet mask có dãy bit toàn 0 sẽ là vùng
host.
o
Như thế, ta phân vùng địa chỉ IP như sau
o
Chuyển IP về lại dạng thập phân, ta được
Giới thiệu như thế đã đủ
rồi. Giờ ta đi vào phần chính:
1. Lớp của địa chỉ
Lớp
của địa chỉ là một miền địa chỉ (tập hợp các địa chỉ) mà khi ta xác định được địa
chỉ đó thuộc lớp nào, ta có thể biết ngay được phần network và phần host của địa
chỉ đó.
Việc
đặt ra quy tắc này để tạo sự thống nhất chung với nhau (vì IP là địa chỉ được cả
thế giới dùng).
Cách
xác định địa chỉ nào thuộc lớp nào được thực hiện như sau. Mình sẽ tiếp cận từ
một ví dụ luôn:
Ví
dụ: Cho địa chỉ IP là 192.135.17.6. Xác định địa chỉ trên thuộc lớp nào?
Ta
biết rằng lớp là một miền địa chỉ, mà yêu cầu chỉ cho địa chỉ IP. Tức là địa chỉ
này phải có dấu hiệu để biết rằng nó thuộc lớp nào.
Dấu
hiệu để xác định nằm ở octet thứ nhất của địa chỉ. (Một địa chỉ a.b.c.d có 4
octet là a, b, c, d. Bạn hiểu octet là gì rồi đó!) Có 5 lớp địa chỉ: A, B, C, D,
E. Cách xác định như nhau:
Lớp
A: Octet có dạng nhị phân 0NNNNNNN (với N là một số nhị phân bất kỳ)
Lớp
B: 10NNNNNN
Lớp
C: 110NNNNN
Lớp
D: 1110NNNN
Lớp
E: 11110NNN
Với
IP 192.135.17.6 thì 192 là octet thứ nhất, có dạng nhị phân là 11000000.
Bạn thấy phần in đậm chứ, nó giống với dạng nhị phân của lớp C. Như vậy địa chỉ
này thuộc lớp C.
Việc
xác định lớp này để làm gì? Hay nói cách khác, lớp này có ý nghĩa gì? Như ta đã
nói từ đầu, việc xác định lớp giúp ta xác định được phần network và phần host của
một địa chỉ.
Như
ta thấy thì lớp A có subnet mask là 255.0.0.0, lớp B là 255.255.0.0, lớp C là
255.255.255.0.
Ở
lớp D và lớp E là hai lớp đặc biệt. Lớp D dùng để phục vụ cho việc
Multicasting, không gán cho một host cụ thể nào cả. Chính vì thế lớp D không có
subnet mask. Còn lớp E dùng để phục vụ các thí nghiệm, nghiên cứu và phát triển,
nên ở đây cũng không có subnet mask.
À,
còn nữa. Class A có dạng 0NNNNNNN, tức là miền giá trị nằm trong khoảng từ 00000000
đến 01111111 đúng không. Nếu đổi sang dạng thập phân sẽ là từ 0 đến 127 phải không.
Đây cũng chính là một cách xác định lớp không cần phải biến đổi về dạng nhị phân.
Như
thế ta có:
Lớp
A: Từ 1 – 127
Lớp
B: Từ 128 – 191
Lớp
C: Từ 192 – 223
Lớp
D: Từ 224 – 239
Lớp
E: Từ 240 - 255
Hừm,
lớp A sao lại từ 1 – 127 mà không phải là từ 0 – 127. Ở đây, để giải thích thì
mình sẽ đưa ra ba địa chỉ đặc biệt nhất:
-
0.0.0.0: Đây là địa chỉ được dùng trong trường
hợp cần cấp phát địa chỉ IP, lúc đầu máy sẽ không có IP cụ thể nên sẽ tự đặt địa
chỉ của mình là 0.0.0.0. Bạn hãy search DHCP để biết thêm cái này
-
127.0.0.1: Đây là địa chỉ loopback, là địa
chỉ khi mình gửi gói dữ liệu đi, nó sẽ gửi vào chính máy của mình như là một
client. Có một cái tên thân thuộc bạn có thể biết đó là localhost. Ở đây, địa
chỉ này xác định bản thân máy của nó chính là một thiết bị mạng khác.
Thực
ra cả miền địa chỉ 127.*.*.* đều là localhost cả.
-
255.255.255.255: Địa chỉ này là địa chỉ broadcast.
Khi gửi gói tin được đánh địa chỉ này, gói sẽ gửi đến tất cả các thiết bị mạng đang
hoạt động được kết nối với nó. Nó chỉ được gửi trong mạng cục bộ (LAN)
Công
nhận nhiều thứ để nhớ nhỉ? Nhưng nếu bạn đọc được tới đây tức là bạn đã hiểu đầy
đủ về lớp rồi đấy. Xin chúc mừng!
Khoan?
Nếu vậy thì liệu rằng có subnet mask 255.255. 240.0 hay không? Ý
là, nếu đã có cách xác định IP dựa vào lớp của địa chỉ, vậy thì chúng ta cần gì
phải xác định IP thông qua subnet mask? – Các bạn có thấy thắc mắc không?
Chúc mừng bạn đã mở khóa
thêm một vấn đề mới, cái mà mình sắp viết thêm một tràng nữa ha ha.
2. Subnetwork (hay subnet)
Đó
là quá trình phân chia một mạng lớn thành nhiều mạng con nhỏ.
Để
hiểu rõ hơn thì đầu tiên mình cần hiểu cách tính số host có thể đăng ký trong một
network.
2.1 Cách tính số host trong một network
Nó
được tính bằng công thức 2n – 2. Với n là số lượng các bit host. Bit
host có thể hiểu là thế này:
Đơn
giản đó là những bit nằm trong vùng host.
Ở
hình trên, ta có số bit host là 8, tức số lượng host có thể đăng ký sẽ là 28
– 2 = 254. Bạn có thể sẽ hiểu con số 28 tức là số lượng các địa chỉ IP
trong khoảng từ 192.135.17.0 đến 192.135.17.255. Thế nhưng, tại sao lại trừ 2? Vì
trong một network bất kỳ sẽ tồn tại hai địa chỉ đặc biệt. Đó là địa chỉ với bit
host toàn 0, và bit host toàn 1. Tức là 192.135.17.0 và 192.135.17.255 chính là
hai địa chỉ đặc biệt đó.
-
Với bit host toàn 0: Đó sẽ là địa chỉ
network. Hiểu đơn giản là nó sẽ không gán được cho host
-
Với bit host toàn 1: Đó là địa chỉ broadcast.
Các bạn sẽ thắc mắc với địa chỉ broadcast 255.255.255.255 nữa nhỉ. Vì mình quên
Unicast và Broadcast rồi, xem lại thì hơi lâu, nên tạm thời chúng ta xem nó là địa
chỉ đặc biệc nhé!
2.2 Cách chia network thành các subnet
Đó
là quá trình phân chia một mạng lớn thành nhiều mạng con nhỏ. Để đi trực tiếp và
cụ thể mình lấy ví dụ nhé:
Giả
sử: Bạn vào một công ty và thấy host 192.135.17.6 / 255.255.255.0.
Như thế bạn có thể biết thông tin rằng mạng của công ty này có thể đăng ký tối đa
28 – 2 = 254 host.
Công
ty có 5 phòng ban, và muốn chia nhỏ mạng lớn thành 5 mạng nhỏ (subnet). Công ty
nhờ bạn xác định địa chỉ network và broadcast của 5 subnet trên. (Tất nhiên phải
trả lương cho bạn xứng đáng chứ haha)
Cốt
lõi của việc chia mạng con thực hiện thông qua việc vay mượn bit ở phần host để
làm bit cho network. Cụ thể như sau:
Bạn
thấy bit mình chỉ chứ. Đó là bit của host đúng không. Bạn nhớ kỹ rằng khi mình đăng
ký mạng thì phần bit host (ở phần IP) mình có thể thay đổi được. Bây giờ chúng
ta sẽ đổi bit đó thành bit của network.
Tại
bit mình đánh dấu trên subnet mask, mình đã chuyển đổi thành bit của network.
Hồi
nãy mình có nói rằng bit đó (ở phần IP) có thể thay đổi được đúng không? Vì chúng
ta đăng ký network 11000000.10000111.00010001.xxxxxxxx nên phần octet cuối cùng
chúng ta có thể thay đổi tùy ý. Chính điều đó đã dẫn đến một kết quả là, chúng ta
đã tạo ra được hai network con (subnet). Một cái là 11000000.10000111.00010001.0xxxxxxx
(1) và một cái là 11000000.10000111.00010001.1xxxxxxx. (2)
Ở
subnet thứ nhất (1), ta có thể tính được địa chỉ network bằng cách điền hết phần
host là 0, và địa chỉ broadcast bằng cách điền hết phần host là 1. Cơ bản là:
-
Network: 11000000.10000111.00010001.00000000
-
Broadcast: 11000000.10000111.00010001.01111111
Chuyển
đổi sang dạng thập phân, ta sẽ được.
- Network: 192.135.17.0
-
Broadcast: 192.135.17.127
Tương
tự với subnet thứ hai (2), ta được như sau
-
Network: 11000000.10000111.00010001.10000000
-
Broadcast: 11000000.10000111.00010001.11111111
Chuyển
đổi sang dạng thập phân, ta sẽ được.
-
Network: 192.135.17.128
-
Broadcast: 192.135.17.255
Số
lượng host trên mỗi network vẫn sẽ tính như công thức cũ là 27 – 2 =
126, với 7 là số host sau khi đã mượn bit.
Bạn
có thể thấy một số quy luật sau đây:
-
Nếu mượn 2 bit, thì sẽ tạo thành 4 network
con (subnet) (Vì hai bit mượn sẽ có 4 trường hợp thay đổi là 00, 01, 10, 11). Mượn
3 bit tạo thành 23 = 8 subnet,… Như thế, nếu mượn n bit thì sẽ tạo
thành 2n subnet.
-
Với ví dụ trên:
Khi
mượn 1 bit, số bit host là h – 1 = 8 – 1 = 7 => số host là 27 – 2
= 126 (Với h là tổng số bit host lúc ban đầu chưa chia subnet)
Khi
mượn 2 bit, số bit host là h – 2 = 8 – 2 = 6 => số host là 26 – 2
= 62
Khi
mượn n bit, số bit host là h – n => số host là 2h - n
Và
còn nhiều quy luật khác nữa mà mình nghĩ sẽ khá dài dòng khi nói ở đây.
Đối với yêu cầu trên tính toán cho 5 phòng ban, mình sẽ không làm mà các bạn sẽ tự làm (gợi ý là tính số subnet tối thiểu trước bằng công thức trên)
Tóm lại: Những cái cơ bản về địa chỉ IP mình đã nói chi tiết và đầy đủ rồi. Bài này làm mình tốn kha khá công sức để làm. Hi vọng các bạn sẽ cảm thấy thích!
Nội dung bài viết thuộc về Lê Công Diễn. Mang đi
nhớ dẫn link và ghi nguồn.
Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn
Nhận xét
Đăng nhận xét