Trong bất kỳ cuộc trò chuyện nào về mạng máy tính, địa chỉ IP luôn xuất hiện như một khái niệm nền tảng — đó là cách để các thiết bị “nhận diện” và “gửi thư” cho nhau trên mạng. Ở mức cơ bản nhất, IPv4 (Internet Protocol version 4) là phiên bản giao thức IP đã đặt nền móng cho Internet như chúng ta biết ngày nay. Trong bài này, mình và bạn sẽ cùng nhau tìm hiểu IPv4 một cách chi tiết và thực tế: khái niệm, cấu trúc địa chỉ, phân loại, cách hoạt động khi truyền gói tin, giới hạn thực tiễn và cả cách áp dụng trong lập trình. Mục tiêu là giúp bạn có một hệ thống kiến thức vững chắc, đủ để đọc config mạng, debug kết nối, hay triển khai ứng dụng mạng đơn giản.

1. Khái niệm về IPv4
IPv4 (Internet Protocol version 4) là phiên bản thứ tư của giao thức Internet, được sử dụng để định danh và truyền dữ liệu giữa các thiết bị trong mạng máy tính. Nó hoạt động ở tầng mạng (Network Layer) của mô hình OSI và là nền tảng giúp các thiết bị có thể “nói chuyện” được với nhau qua Internet.
IPv4 sử dụng địa chỉ 32-bit, cho phép tạo ra khoảng hơn 4 tỷ địa chỉ khác nhau. Mỗi thiết bị kết nối mạng — từ máy tính, điện thoại cho đến router — đều cần có một địa chỉ IPv4 duy nhất để có thể gửi và nhận dữ liệu.
Ba vai trò chính của IPv4 gồm:
- Định danh (Identification): Mỗi thiết bị trên mạng được gán một địa chỉ IP riêng biệt để có thể phân biệt và giao tiếp với nhau.
- Định tuyến (Routing): Router dựa vào địa chỉ IP đích trong gói tin để xác định đường đi tối ưu, giúp dữ liệu tới đúng nơi.
- Đóng gói và phân đoạn dữ liệu (Packetization): IPv4 chia dữ liệu thành các packet nhỏ hơn để dễ dàng vận chuyển qua mạng, sau đó ghép lại khi đến nơi.
Ví dụ thực tế: Trong mạng gia đình, router thường cấp cho các thiết bị địa chỉ dạng 192.168.1.x
. Đây là địa chỉ IPv4 thuộc vùng private, chỉ có hiệu lực trong mạng nội bộ, cho phép các thiết bị như laptop, điện thoại, TV thông minh giao tiếp với nhau mà không cần ra ngoài Internet.

2. Cấu trúc địa chỉ IPv4
Một địa chỉ IPv4 dài 32 bit, được chia thành 4 nhóm (octet), mỗi nhóm gồm 8 bit. Thông thường, địa chỉ được viết ở dạng dotted-decimal — tức là bốn số thập phân phân tách bằng dấu chấm, ví dụ: 192.168.1.10
.
Mỗi nhóm (octet) có giá trị từ 0 đến 255 (tương ứng với 2⁸ − 1). Khi chuyển sang dạng nhị phân, ta có thể thấy rõ cấu trúc của địa chỉ:
192
→11000000
168
→10101000
1
→00000001
10
→00001010
Gộp lại, địa chỉ 192.168.1.10
được biểu diễn trong nhị phân là:11000000 10101000 00000001 00001010
Subnet Mask và CIDR
Địa chỉ IPv4 được chia thành hai phần:
- Network (phần mạng): xác định mạng mà thiết bị thuộc về.
- Host (phần máy chủ): xác định từng thiết bị trong mạng đó.
Subnet mask giúp phân tách hai phần này. Ví dụ, subnet mask 255.255.255.0
(tức là /24
trong ký hiệu CIDR) cho biết 24 bit đầu là phần mạng và 8 bit cuối là phần host.
Cách tính số lượng địa chỉ khả dụng trong một mạng:
→ 2^(32 - prefix) - 2
(trừ địa chỉ network và broadcast).
Ví dụ, với /24
, ta có 2^8 - 2 = 254
địa chỉ khả dụng cho thiết bị.
Khi cấu hình mạng, người ta thường dùng dạng viết tắt CIDR, chẳng hạn 192.168.1.0/24
. Cách biểu diễn này ngắn gọn, rõ ràng và được sử dụng phổ biến trong hầu hết các hệ thống mạng hiện nay.
3. Phân loại địa chỉ IPv4
Trong giai đoạn đầu của Internet, địa chỉ IPv4 được chia thành các lớp (classful addressing). Mặc dù ngày nay kỹ thuật CIDR (Classless Inter-Domain Routing) đã thay thế gần như hoàn toàn, nhưng hiểu rõ các lớp địa chỉ vẫn rất quan trọng để nắm vững cách IPv4 hoạt động.
Phân loại cơ bản các lớp IPv4:
- Class A: Dải từ 1.0.0.0 đến 126.255.255.255.
Dành cho các mạng rất lớn, với prefix mặc định /8 (tức 8 bit đầu là phần mạng, 24 bit còn lại cho host).
Lưu ý: 127.0.0.0/8 không thuộc lớp A thông thường — nó được dành riêng cho loopback, ví dụ 127.0.0.1, dùng để kiểm tra kết nối nội bộ trên chính thiết bị. - Class B: Dải từ 128.0.0.0 đến 191.255.255.255,
phục vụ các mạng trung bình, prefix mặc định là /16. - Class C: Dải từ 192.0.0.0 đến 223.255.255.255,
dành cho mạng nhỏ, prefix mặc định /24, thường gặp trong mạng gia đình hoặc doanh nghiệp nhỏ. - Class D: 224.0.0.0 – 239.255.255.255,
được dùng cho multicast — gửi dữ liệu tới nhiều thiết bị cùng lúc (ví dụ trong streaming, IPTV). - Class E: 240.0.0.0 – 255.255.255.255,
là vùng thử nghiệm (experimental), không dùng trong mạng thông thường.

Một số địa chỉ đặc biệt cần ghi nhớ:
- Loopback (127.0.0.0/8): Cho phép một máy tính tự gửi dữ liệu cho chính nó (dùng nhiều khi test server hoặc ứng dụng mạng).
- Private (RFC1918): Dành cho mạng nội bộ, không định tuyến trên Internet công cộng:
- 10.0.0.0/8
- 172.16.0.0/12 (từ 172.16.0.0 đến 172.31.255.255)
- 192.168.0.0/16
- Broadcast: Là địa chỉ có tất cả các bit host bằng 1, ví dụ 192.168.1.255 trong mạng /24, được dùng để gửi gói tin tới toàn bộ các thiết bị trong mạng con đó.
Trong thực tế, chỉ cần nắm vững địa chỉ private và loopback là đủ để cấu hình và quản lý hầu hết hệ thống mạng cơ bản.
4. Cách hoạt động của IPv4 trong truyền thông mạng
IPv4 hoạt động ở tầng 3 (Network Layer) trong mô hình OSI, nơi nó chịu trách nhiệm định danh, định tuyến và truyền dữ liệu giữa các mạng khác nhau. Khi một ứng dụng gửi dữ liệu, tầng Transport (TCP hoặc UDP) sẽ chia dữ liệu thành các segment, sau đó IPv4 đóng gói (encapsulate) các segment này thành packets (gói tin) để chuyển tiếp.
Mỗi router trung gian sẽ đọc địa chỉ đích (Destination Address) trong header của gói IPv4 để quyết định đường đi tối ưu nhất tới mạng đích. Quá trình này gọi là routing (định tuyến) — yếu tố cốt lõi giúp Internet hoạt động liên kết toàn cầu.
Cấu trúc của Header IPv4 (các trường quan trọng)
- Version (4 bits): Xác định phiên bản giao thức, luôn là 4 đối với IPv4.
- IHL – Internet Header Length (4 bits): Độ dài của phần header, giúp thiết bị nhận biết phần dữ liệu bắt đầu ở đâu.
- Type of Service / DSCP: Xác định mức ưu tiên hoặc chất lượng dịch vụ (QoS) cho gói tin.
- Total Length: Tổng kích thước của gói tin (gồm cả header và payload).
- Identification, Flags, Fragment Offset: Dùng để phân mảnh và ghép lại gói tin nếu kích thước vượt quá giới hạn MTU (Maximum Transmission Unit) của đường truyền.
- TTL (Time To Live): Giá trị đếm ngược, mỗi router đi qua sẽ giảm TTL đi 1. Khi TTL về 0, gói tin bị hủy — tránh vòng lặp định tuyến vô hạn.
- Protocol: Cho biết dữ liệu tầng trên là gì, ví dụ TCP (6), UDP (17), ICMP (1)…
- Header Checksum: Kiểm tra lỗi trong phần header, đảm bảo thông tin định tuyến không bị sai sót.
- Source Address / Destination Address: Địa chỉ IP nguồn và đích (32-bit).
- Options (nếu có): Các tùy chọn mở rộng, thường ít dùng trong mạng hiện đại.
Trong quá trình truyền, nếu gói tin quá lớn so với giới hạn của đường truyền, router có thể chia nhỏ gói tin (fragmentation) để đảm bảo đi qua được. Ở phía nhận, các gói nhỏ sẽ được ghép lại (reassembly) thành gói ban đầu.
Nhờ cơ chế này, IPv4 đảm bảo dữ liệu có thể di chuyển trơn tru qua nhiều mạng khác nhau, dù có sự khác biệt về tốc độ, kích thước hay cấu hình thiết bị trung gian.

5. Giới hạn và vấn đề của IPv4
Mặc dù IPv4 là nền tảng của Internet trong nhiều thập kỷ, nhưng cùng với sự bùng nổ của thiết bị kết nối mạng — từ máy tính, điện thoại cho tới hàng tỷ thiết bị IoT — giao thức này bắt đầu bộc lộ nhiều giới hạn rõ rệt. Dưới đây là những vấn đề chính mà IPv4 đang đối mặt.
5.1. Hạn chế về không gian địa chỉ
IPv4 chỉ sử dụng 32 bit để biểu diễn địa chỉ, tương đương 4.294.967.296 địa chỉ có thể có. Con số này tưởng chừng lớn, nhưng thực tế không đủ để đáp ứng nhu cầu hiện tại khi hàng tỷ thiết bị trên toàn cầu đều cần kết nối Internet.
Một phần trong số đó còn bị dành riêng cho mục đích đặc biệt (ví dụ địa chỉ private, broadcast, loopback), khiến số lượng địa chỉ khả dụng thực tế càng giảm. Kết quả là, nhiều quốc gia và nhà cung cấp Internet (ISP) đã rơi vào tình trạng hết địa chỉ IPv4, buộc phải xoay sở bằng các giải pháp tạm thời.
5.2. Các giải pháp tạm thời để khắc phục giới hạn
NAT (Network Address Translation)
NAT được dùng để chuyển đổi địa chỉ private ↔ public, cho phép nhiều thiết bị trong mạng nội bộ chia sẻ cùng một địa chỉ IP công cộng khi truy cập Internet.
Các biến thể phổ biến gồm:
- Static NAT: ánh xạ 1-1 giữa địa chỉ private và public.
- Dynamic NAT: ánh xạ ngẫu nhiên giữa các địa chỉ trong dải public có sẵn.
- PAT (Port Address Translation): nhiều thiết bị dùng chung 1 IP public, nhưng khác port.
NAT giúp tiết kiệm địa chỉ công cộng, nhưng lại gây khó khăn cho các ứng dụng cần kết nối trực tiếp, chẳng hạn như P2P, VoIP hoặc game online. Việc định tuyến ngược hoặc truy vết host cụ thể cũng trở nên phức tạp hơn.
DHCP (Dynamic Host Configuration Protocol)
DHCP giúp tự động cấp phát địa chỉ IP động trong mạng nội bộ, tránh việc cấu hình thủ công và đảm bảo tận dụng hiệu quả dải địa chỉ private.
Ví dụ: một thiết bị chỉ cần IP khi nó đang hoạt động — khi ngắt kết nối, địa chỉ đó có thể được gán cho thiết bị khác, tối ưu tài nguyên.
5.3. Các vấn đề khác của IPv4
- Bảo mật: IPv4 không tích hợp sẵn cơ chế mã hóa hoặc xác thực, khiến dữ liệu dễ bị nghe lén hoặc giả mạo. Giao thức IPSec có thể được bổ sung, nhưng không bắt buộc và triển khai khá phức tạp.
- Fragmentation: Khi gói tin vượt quá kích thước tối đa (MTU), IPv4 sẽ chia nhỏ gói tin (fragment). Tuy nhiên, quá trình này làm giảm hiệu năng và tăng độ trễ. Trong mạng hiện đại, người ta ưu tiên tránh fragmentation bằng kỹ thuật PMTUD (Path MTU Discovery).
6. Kết luận
Vậy là trong bài viết này, mình và bạn đã cùng nhau tìm hiểu khá kỹ về IPv4 — một giao thức tưởng chừng quen thuộc nhưng vẫn còn rất nhiều điều thú vị đằng sau.
Chúng ta đã bắt đầu từ khái niệm cơ bản và vai trò của IPv4 trong việc định danh và định tuyến thiết bị trên mạng. Sau đó, mình cùng bạn đi sâu vào cấu trúc 32-bit, cách biểu diễn địa chỉ theo dạng dotted-decimal, cùng những khái niệm quan trọng như subnet mask và CIDR.
Bên cạnh đó, bài viết cũng đã giúp chúng ta hiểu rõ các lớp địa chỉ (A–E), ý nghĩa của địa chỉ private, loopback, broadcast, cũng như cách IPv4 đóng gói và truyền dữ liệu qua mạng thông qua header và cơ chế routing.
Tất nhiên, không thể bỏ qua những giới hạn hiện tại của IPv4 như vấn đề cạn kiệt địa chỉ, hay các giải pháp tạm thời như NAT và DHCP. Chính những điều này đã mở đường cho IPv6 — thế hệ tiếp theo được thiết kế để khắc phục triệt để các điểm yếu còn tồn tại.
7. Tài liệu tham khảo
[1] J. Postel, “Internet Protocol,” RFC 791, Issued: Sep. 1981.
[2] T. Li, “What Is an IP Address?”, Cisco Systems, Online. Available: https://www.cisco.com/.
[3] Cloudflare, “What is IPv4?”, Cloudflare Learning Center, Online. Available: https://www.cloudflare.com/learning/.
[4] Python Software Foundation, “socket — Low-level networking interface,” Python 3 Documentation, Online. Available: https://docs.python.org/3/library/socket.html.
[5] K. Gill, “RFC 1918 — Address Allocation for Private Internets,” RFC 1918, Feb. 1996.