Giao thức Internet phiên bản 4 (viết tắtIPv4, từtiếng AnhInternet Protocol version 4) là phiên bản thứ tư trong quá trình phát triển của cácgiao thức Internet (IP). Đây là phiên bản đầu tiên của IP được sử dụng rộng rãi. IPv4 cùng vớiIPv6 (giao thức Internet phiên bản 6) là nòng cốt của giao tiếp internet hiện nay. Hiện tại, IPv4 vẫn là giao thức được triển khai rộng rãi nhất trong bộ giao thức của lớp internet.
Giao thức này được công bố bởi IETF trong phiên bảnRFC 791 (tháng 9 năm 1981), thay thế cho phiên bảnRFC 760 (công bố vào tháng 1 năm 1980). Giao thức này cũng được chuẩn hóa bởi bộ quốc phòng Mỹ trong phiên bản MIL-STD-1777.
IPv4 là giao thức hướng dữ liệu, được sử dụng cho hệ thống chuyển mạch gói (tương tự như chuẩn mạngEthernet). Đây là giao thức truyền dữ liêu hoạt động dựa trên nguyên tắctốt nhất có thể, trong đó, nó không quan tâm đến thứ tự truyền gói tin cũng như không đảm bảo gói tin sẽ đến đích hay việc gây ra tình trạng lặp gói tin ở đích đến. Việc xử lý vấn đề này dành cho lớp trên của chồng giao thứcTCP/IP. Tuy nhiên, IPv4 có cơ chế đảm bảo tính toàn vẹn dữ liệu thông qua sử dụng nhữnggói kiểm tra (checksum)..
IPv4 có chiều dài 32 bit để đánh địa chỉ, theo đó, số địa chỉ tối đa có thể sử dụng là 4.294.967.296 (232). Tuy nhiên, do một số được sử dụng cho các mục đích khác như: cấp cho mạng cá nhân (xấp xỉ 18 triệu địa chỉ), hoặc sử dụng làm địa chỉ quảng bá (xấp xỉ 16 triệu), nên số lượng địa chỉ thực tế có thể sử dụng cho mạng Internet công cộng bị giảm xuống. Với sự phát triển không ngừng của mạng Internet, nguy cơ thiếu hụt địa chỉ đã được dự báo, tuy nhiên, nhờ công nghệNAT (Network Address Translation - Chuyển dịch địa chỉ mạng) tạo nên hai vùng mạng riêng biệt:Mạng riêng vàMạng công cộng, địa chỉ mạng sử dụng ở mạng riêng có thể dùng lại ở mạng công công mà không hề bị xung đột, qua đó trì hoãn được vấn đề thiếu hụt địa chỉ
Chuẩn IPv6, với số lượng bits dùng để đánh địa chỉ nhiều hơn đã được xây dựng nhằm thay thế IPv4 trong tương lai. Hiện tại, công nghệ IPv6 đã được triển khai ở một số quốc gia.
32 bits địa chỉ của IP được chia thành 4 nhóm (dạng phân nhóm - dotted format), mỗi nhóm gồm 8 bits (gọi là một octet), các nhóm này phân cách nhau bởi dấu chấm. Tuy nhiên, để thuận tiện cho người sử dụng, các octet này được chuyển đổi sang giá trị thập phân, được miêu tả trong bảng sau:
Giá trị của chuỗi 32 bits được chuyển sang hệ cơ số 8
Hầu hết các định dạng trên được chấp nhận trong tất cả các trình duyệt. Ngoài ra, trong dạng phân nhóm, mỗi nhóm có thể được biểu diễn dưới một hệ cơ số khác nhau, (ví dụ như: 192.0x00.0002.235) nhưng không làm thay đổi giá trị thực của địa chỉ.Một dạng cuối cùng, hiếm gặp, đó là biểu diễn dưới dạng mãASCII. Dạng biểu diễn này được sử dụng để gán cho trường địa chỉ nguồn và địa chỉ đích trong các chương trình phần mềm.
Với cách chia này, số lượng network bị giới hạn ở con số 256, quá ít so với nhu cầu thực tế.
Để vượt qua giới hạn này, việc phân lớp mạng đã được định nghĩa, tạo nên một tập hợp lớp mạng đầy đủ (classful). Theo đó, có 5 lớp mạng (A, B, C, D và E) được định nghĩa. Lớp A sử dụng 8 bits cho phần network, do đó có tới 24 bits được sử dụng cho phần host. Lớp B dùng 16 bits cho network, 16 bit dành cho host. 24 bits được sử dụng để xác định phần network cho lớp C, do đó, mỗi network của lớp C chỉ còn 8 bit để đánh địa chỉ host. Lớp D được dùng cho địa chỉ multicast còn lớp E sử dụng cho thí nghiệm.
Khoảng năm 1993, lược đồlớp đã được thay thế bởi lược đồCIDR (Classless Inter-Domain Routing - Định hướng lớp miền chung). Với lược đồ CIDR, các lớp A, B, C có thể được chia lại thành các mạng nhỏ hơn (hoặc lớn hơn) để phân phối cho các tổ chức, cá nhân hoặc cácmạng cục bộ khác nhau.
Việc gán địa chỉ tuân theo nguyên tắc: Địa chỉ của thiết bị phản ánh vị trí và vai trò của chính thiết bị đó trong mạng. Điều đó có nghĩa rằng, trong một hệ thống mạng, không được phép xuất hiện hai thiết bị có cùng địa chỉ. Một cấu trúc thứ bậc được tạo ra bởi CIDR, được IANA (Internet Assigned Numbers Authority - Bộ phận quản lý việc cấp phát địa chỉ internet) cùng các điểm đăng ký internet trực thuộc (Regional Internet Registries - RIRs) giám sát, có nhiệm vụ quản lý việc cấp phát địa chỉ Internet trên toàn thế giới. Mỗi RIR duy trì một cơ sở dữ liệu cho phép tìm kiếm công tự doWHOIS, cho phép mọi người có thể dễ dàng xác định được vị trí địa lý của một địa chỉ internet công cộng.
Trong khoảng hơn bốn tỷ địa chỉ có thể sử dụng của IPv4, ba dải địa chỉ được dành riêng cho các mạng riêng (private network). Các dải này không xuất hiện trong bảng định tuyến ở bên ngoài mạng riêng. Các thiết bị trong mạng riêng cũng không thể trực tiếp liên lạc với các mạng công cộng. Để có thể liên lạc với internet công cộng, họ phải sử dụng công nghệ NAT.
Sau đây là ba dải địa chỉ dành riêng cho các mạng riêng:
RFC 3330 định nghĩa một dải địa chỉ thuộc lớp B169.254.0.0/16 dành riêng cho việc đánh địa chỉ mạng cục bộ. Những địa chỉ thuộc dải này chỉ có giá trị khi được gán cho thiết bị có các kết nối thuộc phân đoạn mạng cục bộ hoặc các kết nốiđiểm - tới - điểm (point to point, p2p). Những địa chỉ này cũng không được lưu trong bảng định tuyến tương tự như địa chỉ dành cho mạng riêng, có nghĩa là, chúng không thể trở thành địa chỉ nguồn hay đích đến của các gói tin được truyền trong mạng internet.địa chỉ liên kết cục bộ (Link-local addresses) chủ yếu được sử dụng đểtự động cấu hình địa chỉ, (Zeroconf) trong trường hợp thiết bị không được cấp phát địa chỉ từ máy chủ DHCP hoặc từ các phương pháp cấp phát địa chỉ nội bộ khác.
Khi dải địa chỉ được dự trữ, không tồn tại tiêu chuẩn cho cơ chế tự cấu hình địa chỉ, để lấp chỗ trống,Microsoft đưa ra bổ sung có tênTự động cấp phát địa chỉ IP dành riêng (Automatic Private IP Addressing - APIPA). Dựa vào thị phần của Microsoft, APIPA đã được triển khai trên hàng triệu máy tính, qua đó trở thành một chuẩn trong lĩnh vực CNTT (de facto). Nhiều năm sau,IETF định nghĩa một chuẩn chính thức,RFC 3927, cho chức năng này. Ý nghĩa của chuẩn này là:Tự động cấu hình địa chỉ liên kết cục bộ cho chuẩn IPv4 (Dynamic Configuration of IPv4 Link-Local Addresses).
Dải địa chỉ 127.0.0.0/8 (CIDR notation) được quy định dành riêng cho thiết bị thực hiện các giao tiếp bên trong chính nó.
Dải địa chỉ này không bao giờ xuất hiện bên ngoài một thiết bị. Mọi gói tin có đích đến thuộc dải địa chỉ này sẽ được gửi trả về như là một gói tin đến từ một mạng ảo, mạng này có tên gọi là mạngloopback
Đôi khi bạn có thể gán địa chỉ dạng x.x.x.0 hay x.x.x.255 cho host, tuy nhiên, trong nhiều trường hợp, địa chỉ dạng trên không được chấp nhận khi gán cho host. Tình huống này thường gặp khi địa chỉ được dùng nằm trong dải có subnet mask từ 24 bits trở lên. Ví dụ 192.168.100.0/24 (192.168.100.0 255.255.255.0) hay 192.168.10.255/25 (192.168.10.255 255.255.255.128). Những địa chỉ dạng này không thể gán cho host, bởi nó là địa chỉDefault route và địa chỉBroadcast!
Địa chỉBroadcast là địa chỉ được sử dụng làm đích đến của một gói tin khi một host muốn gửi gói tin đó đến tất cả các host còn lại trong mạng LAN. Trong mỗi subnet - LAN (mạng con), địa chỉ cuối cùng trong dải địa chỉ của mạng này chính là địa chỉBroadcast. Không thể gán địa chỉBroadcast cho một host cụ thể nào trong mạng.Địa chỉDefault route là địa chỉ định danh cho một mạng con (LAN, subnet). Nó là địa chỉ đầu tiên trong dải địa chỉ của subnet. Tương tự như địa chỉ broadcast, địa chỉ default route cũng không thể gán cho một host cụ thể.
Một số ví dụ về default route và broadcast:
Dải địa chỉ 140.10.0.0/23 đến 140.10.1.255/23 có địa chỉ broadcast là 140.10.1.255 và địa chỉ default route là 140.10.0.0
Dải địa chỉ: 192.168.1.0/24 đến 192.168.1.255/24 có địa chỉ broadcast là 192.168.1.255 và địa chỉ default route là 192.168.1.0
Dải địa chỉ: 192.168.20.128/26 đến 192.168.20.191/26 có địa chỉ broadcast là 192.168.20.191 và địa chỉ default route là 192.168.20.128
Các thiết bị trong mạng giao tiếp với nhau thông qua địa chỉ IP. Tuy nhiên, việc ghi nhớ danh sách các chuỗi địa chỉ đối với người sử dụng internet là vô cùng khó khăn, gần như là không thể. Trong khi đó, việc ghi nhớ các cụm ký tự có tính "gợi nhớ" dễ dàng hơn nhiều.
Để giải quyết vấn đề này, hệ thống tên miền (DNS: Domain Name System) ra đời. Có thể xemDNS như một dạng từ điển gồm hai cột, một cột là địa chỉ IP, cột còn lại là tên miền. Khi người dùng gõ một tên miền vào trình duyệt, tên miền này sẽ được gửi đến một máy chủ DNS để "dịch" tên miền này sang địa chỉ IP, là địa chỉ được sử dụng để các thiết bị mạng giao tiếp với nhau.
Trong giai đoạn Internet đang ngày càng phát triển, các địa chỉ IPv4 đang dần cạn kiệt, để giải quyết vấn đề này, các địa chỉIPv6 đang được đưa vào sử dụng để tránh tình trạng quá tải đối với địa chỉ IPv4.
Sự ra đời của chuẩn dải mạng riêng (private) cho phép các tổ chức có thể cùng sử dụng một dải địa chỉ để gán cho các thiết bị mạng của mình mà không sợ bị xung đột. Tuy nhiên, một vấn đề đặt ra là: "làm thế nào để các mạng riêng này có thể giao tiếp với hệ thống mạng công cộng"? Công nghệ "dịch địa chỉ mạng" (NAT: Network Address Translation) ra đời giúp giải quyết vấn đề này.Về cơ bản, có thể hình dung NAT như một bảng liên kết gồm hai phần, một phần là danh sách các địa chỉ của mạng riêng có nhu cầu giao tiếp với mạng công cộng, phần còn lại là địa chỉ công cộng được chỉ định làm đại diện cho các địa chỉ mạng riêng (tạm gọi là địa chỉ NAT).
Khi một host trong mạng riêng muốn giao tiếp với một host trong mạng công cộng, nó sẽ đóng gói bản tin với địa chỉ nguồn là địa chỉ mạng riêng của chính nó (host Pri, có địa chỉ IP là: PriAdd), địa chỉ đích là địa chỉ của host trong mạng công cộng (Host Pub, có địa chỉ IP là: PubAdd). Gói tin này sẽ được gửi tới NAT, tại đây, toàn bộ gói tin này được đóng gói thêm một lần nữa, địa chỉ đích của gói mới vẫn làPubAdd, nhưng địa chỉ nguồn thì được đổi thành địa chỉ NAT. Để phản hồi vềPri,Pub đóng gói gói tin với địa chỉ nguồn làPubAdd, địa chỉ đích làPriAdd, sau đó tiếp tục sử dụng "lớp vỏ" NAT đóng gói tiếp một lần nữa để tạo thành gói NAT, gói NAT này có địa chỉ nguồn làPubAdd, địa chỉ đích là địa chỉ NAT.
Địa chỉ mạng riêng không xuất hiện trong mạng công cộng, do vậy, các gói tin có địa chỉ đích đến là địa chỉ thuộc mạng riêng sẽ bị các router trong mạng công cộng bỏ qua. Điều đó dẫn đến tình trạng hai mạng riêng không thể giao tiếp trực tiếp với nhau thông qua mạng internet. Cần phải tạo nên một "đường hầm" xuyên qua mạng internet hoặc xây dựng một mạng riêng ảo (VPN: Virtual Private Network) để hai mạng riêng này có thể giao tiếp với nhau.
Mạng riêng ảo là một mạng máy tính cho phép hai mạng riêng kết nối với nhau một cách tin cậy trên nền mạng Internet công cộng. Dữ liệu truyền trong mạng riêng ảo được đóng gói theo phương thức mã hóa an toàn giúp cho gói tin có thể truyền qua nhiều thiết bị mạng thuộc mạng công cộng và các mạng riêng khác nhau.
Hiện tại, có nhiều cách phân loại, thực thi cũng như cách sử dụng VPN khác nhau.
Header của gói tin IPv4 bao gồm 13 trường, trong đó 12 trường là bắt buộc. Trường thứ 13 (được tô màu đỏ trong bảng) là tùy chọn, đúng với tên của nó: options. Các trường này trong header được lưu trữ với byte có ý nghĩa cao (the most significant byte) ở địa chỉ thấp (big endian), nói cách khác bit có ý nghĩa cao luôn ở địa chỉ thấp. Bit quan trọng nhất là bit số 0, vì vậy trường phiên bản (version) được lưu trong 4 bit đầu tiên của byte đầu tiên, ví dụ
Trường đầu tiên trong header của gói tin IP chính là trường Phiên bản (Version) dài 4 bit. Với IPv4, nó có giá trị bằng 4.
Độ lớn của header (Internet Header Length) (IHL)
Trường thứ hai (4 bit) là độ lớn của header (Internet Header Length - IHL) cho biết số lượng các từ32-bit trong header. Vì một header của gói tin IPv4 có thể chứa rất nhiều tùy chọn (options), trường này cho biết kích thước của header (nó cũng trùng với offset của data). Giá trị nhỏ nhất cho trường này là 5 (RFC 791), do đó gói tin có độ dài là 5×32 = 160 bit. Vì đây là số 4 bit nên độ dài lớn nhất có thể được của gói tin là 15 từ (15×32 bit) tức là 480 bit.
Differentiated Services (DS)
Ban đầu được định nghĩa là trường TOS, hiện tại trường này được định nghĩa trongRFC 2474 làDifferentiated services (DiffServ) và trongRFC 3168 làExplicit Congestion Notification (ECN), để phù hợp vớiIPv6. Chỉ định dịch vụ mong muốn khi truyền các gói tin qua router. Trường này có 8 bít, xác định quyền ưu tiên, độ trễ, thông lượng, các đặc tính chỉ định độ tin cậy khác. Trường này gồm TOS (Type of Service) và Precedence. TOS xác định loại dịch vụ, bao gồm: giá trị, độ tin cậy, thông lượng, độ trễ hoặc bảo mật. Precedence xác định mức ưu tiên, sử dụng 8 mức từ 0-7. Các công nghệ mới xuất hiện yêu cầu các dòng dữ liệu thời gian thực (real-time data streaming) và sẽ sử dụng trường DS. Ví dụVoice over IP (VoIP) được dùng để trao đổi dữ liệu là tiếng nói.
Total Length
Chỉ định tổng chiều dài gói tin IPv4 (cả phần mào đầu và phần dữ liệu). Kích thước 16 bít, chỉ định rằng gói tin IPv4 nhỏ nhất là 20 byte (chỉ có header không có dữ liệu) và có thể lớn tới 65.535 byte.
Identification
Định danh gói tin. Kích thước 16 bít. Định danh cho gói tin được lựa chọn bởi nguồn gửi gói tin. Nếu gói tin IPv4 bị phân mảnh, mọi phân mảnh sẽ giữ lại giá trị trường định danh này, mục đích để nút đích có thể nhóm lại các mảnh, phục vụ cho việc phục hồi lại gói tin.