IP là một loại địa chỉ logic thuộc lớp Network của mô hình OSI (và là một thành phần quan trọng trong bộ giao thức TCP/IP), cung cấp cho chúng ta một cách đánh địa chỉ linh hoạt, tiện dụng để sử dụng trong các giao thức định tuyến sau này. Hầu hết máy tính và thiết bị mạng hiện nay đang sử dụng phiên bản IPv4, nên trong phạm vi bài viết này chúng ta chỉ đề cập tới IPv4.
Địa chỉ IP là gì?
Để gửi thư cho nhau, ta bắt buộc phải biết địa chỉ của đối phương, các gói tin cũng vậy, luôn phải có một loại địa chỉ để xác định vị trí, từ đó trao đổi thông tin chính xác giữa máy nguồn và máy đích. Vậy nên, trong Internet các địa chỉ IP là duy nhất.
Xem thêm bài Hành trình của một gói tin
Cấu trúc của địa chỉ IP
Địa chỉ IP là một dải nhị phân dài 32 bit và chia thành 4 bộ 8 bit gọi là các Octet, gồm phần net-id dùng để xác định mạng mà thiết bị kết nối vào và phần host-id để xác định thiết bị của mạng đó.
Để cho đơn giản, người ta viết lại địa chỉ IP dưới dạng 4 số thập phân được cách nhau bởi dấu chấm.
Ví dụ: địa chỉ hệ thập phân tương ứng cho 11000000 10100000 00000001 00000001 sẽ là 192.168.1.1 - một địa chỉ khá quen thuộc.
Để xem địa chỉ IP của máy tính một cách đơn giản, ta có thể sử dụng Command Prompt với câu lệnh ipconfig (hoặc ifconfig nếu là hệ thống Unix).
Subnet mask
Vậy làm sao để phân biệt được bit nào thuộc phần net-id, bit nào thuộc về host-id, đó là nhờ vào Subnet Mask, Mỗi địa chỉ IP đều đi kèm với một subnet mask, để xác định được phần net-id của địa chỉ đó. Subnet mask cũng là một dải nhị phân dài 32 bits và chia ra 4 bộ 8 bits như địa chỉ IP.
Subnet mask bao gồm phần các bits 1 và phần còn lại là các bits 0, subnet mask có bao nhiêu bit 1 thì địa chỉ IP tương ứng sẽ có bấy nhiêu bit phần net-id.
Ví dụ: với subnet mask như sau: 11111111 11111111 11111111 00000000 (255.255.255.0) bao gồm 24 bits 1, thì địa chỉ IP mang subnet mask này cũng sẽ có 24 bits phần net-id.
Có thể viết trực tiếp như sau: 192.168.1.3 - 255.255.255.0 hoặc sử dụng prefix length: 192.168.1.3/24
Lưu ý, một địa chỉ IP có thể thuộc các mạng khác nhau nếu sử dụng các subnet mask khác nhau. Để xác định địa chỉ IP đó thuộc mạng nào, ta chỉ cần lấy địa chỉ IP AND (bitwise) với subnet mask tương ứng.
Ví dụ: 192.168.1.3 AND 255.255.255.0 = 192.168.1.0 vậy địa chỉ 192.168.1.3/24 thuộc mạng 192.168.1.0/24
Phân lớp địa chỉ IP
Số lượng địa chỉ IP là rất lớn, nên để tiện cho việc quản lý, người ta phân hoạch toàn bộ địa chỉ IP ra thành 5 lớp khác nhau.
Lớp A
Địa chỉ lớp A sử dụng 1 Octet đầu tiên làm net-id, phần còn lại làm host-id. Bit đầu tiên của địa chỉ lớp A luôn là 0 nên
- Giá trị nhỏ nhất của Octet 1: 00000000 hay 0
- Giá trị lớn nhất của Octet 1: 01111111 hay 127
- Default subnet mask: 255.0.0.0
Tuy nhiên giá trị 0 (giá trị nhỏ nhất của Octet) không được sử dụng và giá trị 127 (giá trị lớn nhất của Octet) được dành ch Loopback và chẩn đoán, kiểm tra lỗi, nên dải địa chỉ lớp A sẽ từ 1.x.x.x đến 126.x.x.x
Lớp B
Địa chỉ lớp B sử dụng 2 Octet đầu tiên để làm net-id, 2 Octet còn lại làm host-id. 2 bits đầu tiên của địa chỉ lớp B luôn là 10 nên
Giá trị nhỏ nhất của Octet 1: 10000000 hay 128 Giá trị lớn nhất của Octet 1: 10111111 hay 191 Default subnet mask: 255.255.0.0
Vậy dải địa chỉ lớp B sẽ là từ 128.x.x.x đến 191.x.x.x
Lớp C
Địa chỉ lớp C sử dụng 3 Octet đầu tiên để làm net-id, Octet 4 làm host-id. 3 bits đầu tiên của địa chỉ lớp C luôn là 110 nên:
- Giá trị nhỏ nhất của Octet 1: 11000000 hay 192
- Giá trị lớn nhất của Octet 1: 11011111 hay 223
- Default subnet mask: 255.255.255.0
Vậy dải địa chỉ lớp C bắt đầu từ 192.x.x.x đến 223.x.x.x
Ngoài ra còn có địa chỉ lớp D (224.x.x.x – 239.x.x.x) sẽ nói tới ở phần sau và lớp E (240.x.x.x – 254.x.x.x) dùng để thí nghiệm và nghiên cứu.
Các loại địa chỉ IP
Địa chỉ Unicast
Khi bạn muốn gửi gói tin đến một máy tính cụ thể, khi đó địa chỉ để bạn gửi tới sẽ là một địa chỉ unicast. Đây đơn giản chỉ là địa chỉ IP của một thiết bị nào đó trong cùng hoặc mạng cục bộ khác.
Địa chỉ Multicast
Trường hợp muốn gửi gói tin đến nhiều máy tính, ta không thể gửi lần lượt đến tất cả các máy được. Vì thế, địa chỉ bạn cần gửi tới trong trường hợp này sẽ là một địa chỉ Multicast, địa chỉ này đại diện cho một nhóm các thiết bị.
Địa chỉ multicast này chính là các địa chỉ trong dải địa chỉ lớp D.
Địa chỉ Broadcast
Khi muốn gửi thông điệp đến tất cả các máy trong mạng nội bộ, đó là lúc ta cần sử dụng đến địa chỉ Broadcast. Địa chỉ Broadcast là địa chỉ có toàn bộ các bits phần host-id là 1. Khi gói tin được gửi đến địa chỉ Broadcast, thì nó sẽ được gửi tới tất cả các máy cùng mạng, tức là cùng phần net-id. Vì đại diện cho toàn bộ thiết bị trong mạng nên địa chỉ Broadcast không thể đặt được cho bất kỳ thiết bị nào.
Ví dụ: 192.168.1.255/24 là địa chỉ Broadcast của mạng 192.168.1.0/24.
Địa chỉ mạng
Không chỉ các thiết bị mới có địa chỉ IP, mà các mạng thành phần của Internet hay mạng cục bộ cũng có một địa chỉ để xác định chính xác mạng đó. Khi tất cả các bits phần Host của một địa chỉ IP là 0, thì địa chỉ đó được gọi là địa chỉ mạng của mạng đó. Vì đại diện cho mạng nên địa chỉ mạng cũng không thể đặt được cho bất kỳ thiết bị nào.
Ví dụ: 192.168.1.0/24 là địa chỉ mạng của mạng 192.168.1.0/24.
Default Gateway
Như một cổng thoát hiểm, khi gói tin cần gửi đến địa chỉ không cùng mạng hiện tại, hoặc đơn giản là không biết gửi đi đâu, thì gói tin đó sẽ được gửi tới địa chỉ Default gateway, thường là một interface của Router nối trực tiếp với mạng đó. Tại đây, Router sẽ dùng các chức năng định tuyến để chuyển tiếp gói tin đi các hướng khác nhau.
Default Gateway thường là địa chỉ IP có thể sử dụng đầu tiên của mạng đó.
Ví dụ: Default gateway của mạng 192.168.1.0/24 là 192.168.1.1/24.
Sự giới hạn của đia chỉ IP
Số lượng địa chỉ IP là rất lớn, nhưng không phải là vô hạn. Vì vậy để bảo tồn địa chỉ IP, người ta chia địa chỉ IP ra làm 2 loại là địa chỉ public và địa chỉ private.
Địa chỉ public
Là các địa chỉ độc nhất, sử dụng được trong môi trường Internet.
Địa chỉ private
Chỉ sử dụng được trong mạng cục bộ, có thể tái sử dụng lại ở mạng cục bộ khác, nhưng trong một mạng thì vẫn phải mang giá trị duy nhất.
Với mỗi phân lớp địa chỉ IP, thì có một dải địa chỉ dùng để làm địa chỉ private cho lớp đó:
Lớp A: Từ 10.0.0.0 đến 10.255.255.255, subnet mask 255.0.0.0 Lớp B: Từ 172.16.0.0 đến 172.31.255.255, subnet mask 255.240.0.0 Lớp C: Từ 192.168.0.0 đến 192.168.255.255, subnet mask 255.255.0.0
Khi các thiết bị sử dụng địa chỉ IP private trong mạng cục bộ muốn truy cập được Internet – môi trường không sử dụng địa chỉ private, công nghệ NAT (Network Address Translation) được cài đặt trên các thiết bị router(đã được gán 1 địa chỉ IP Public) được sử dụng để chuyển IP private thành IP public và ngược lại, giúp cho các thiết bị trong mạng cục bộ vẫn có thể truy cập được Internet.
Phương pháp chia IP và Subnet mask
Cho địa chỉ 192.168.155.245/27. Xác định địa chỉ mạng, địa chỉ broadcast, dải địa chỉ có thể dùng cho host?
Phương pháp tính
Prefix length = 27, vậy subnet mask tương ứng là 11111111 11111111 11111111 11100000 - từ đó ta xác định được số bits phần net-id của địa chỉ IP.
IP = 192.168.155.245, dạng nhị phân tương ứng là: 11000000 10101000 10011011 11110101
Giữ lại phần net-id, phần host-id set về toàn bit 0: 11000000 10101000 10011011 11100000
Ta được địa chỉ mạng, viết lại ở dạng thập phân sẽ là: 192.168.155.224/27.
Với địa chỉ Broadcast, host-id sẽ set về toàn bit 1: 11000000 10101000 10011011 11111111
Ta được địa chỉ Broadcast, viết lại ở dạng thập phân sẽ là: 192.168.155.255/27.
Vì địa chỉ mạng và địa chỉ Broadcast không được dùng cho host nên dải địa chỉ có thể sử dụng ở đây là từ 192.168.155.225/27 đến 192.168.155.254/27.
Cho mạng 192.168.155.0/ 24. Chia mạng này thành các mạng con cho các phòng ban sau: Phòng A: 80 máy, phòng B: 60 máy, 2 phòng C, D: mỗi phòng 25 máy.
Phương pháp tính
Đầu tiên ta có địa chỉ IP và các bit phần net-id: 11000000 10101000 10011011 00000000 trừ địa chỉ mạng và broadcast ra, thì mạng này có tối đa 254 máy.
Ta mượn 1 phần host-id chuyển qua làm net-id, được 2 mạng con như sau:
- 11000000 10101000 10011011 00000000 hay 192.168.155.0/25
- 11000000 10101000 10011011 10000000 hay 192.168.155.128/25
Ta thấy, mạng 192.168.155.0/25 có 7 bits phần host-id, biểu diễn được 127 máy, đủ cho phòng A, nên ta gán mạng này cho phòng A.
Với địa chỉ 192.168.155.128/25, ta lại mượn 1 phần host-id chuyển qua làm net-id, được 2 mạng con như sau:
- 11000000 10101000 10011011 10000000 hay 192.168.155.128/26
- 11000000 10101000 10011011 11000000 hay 192.168.155.192/26
Tiếp tục, mạng 192.168.155.128/26 có 6 bits phần host-id, biểu diễn được 63 máy, nên ta gán cho phòng B mạng này.
Làm tương tự với mạng 192.168.155.192/26, được 2 mạng con:
- 11000000 10101000 10011011 11000000 hay 192.168.155.192/27
- 11000000 10101000 10011011 11100000 hay 192.168.155.224/27
2 mạng con này có 5 bits phần host-id, biểu diễn được 31 máy, ta gán lần lượt cho phòng C và D.
Như vậy ta đã chia mạng 192.168.155.0/24 thành các mạng con có kích cỡ khác nhau, phù hợp với yêu cầu đề bài:
- Phòng A: 192.168.155.0/25
- Phòng B: 192.168.155.128/26
- Phòng C: 192.168.155.192/27
- Phòng D: 192.168.155.224/27
Bài viết được lấy từ nguồn http://www.stdio.vn/articles/read/122-so-luoc-ve-dia-chi-ip