Tiêu đề IP (IP header) chứa địa chỉ nguồn và đích giúp việc truyền dẫn dữ liệu được gửi đúng đích. Các tin nhắn được chia thành cac gói tin nhỏ, mỗi gói tin đều có tiêu đề đi kèm. Từ đó, dữ liệu có thể di chuyển chính xác và hiệu quả.
IP header là gì?
Tiêu đề IP là tiền tố của gói IP chứa các thông tin về phiên bản IP, độ dài của gói, địa chỉ IP nguồn và đích,… giúp cho biết các thông tin về gói IP để chúng có thể được truyền một cách chính xác đến đích trên môi trường Internet.
Như bạn đã biết, việc định tuyến mạng là quá trình chọn con đường nhanh nhất và hiệu quả nhất để dữ liệu có thể đến đích. Khi gửi một thông tin qua mạng, bộ định tuyến Router sẽ đọc địa chỉ IP nguồn và đích được đính kèm và chọn con đường tốt nhất để truyền thông tin.
Nhưng IP nguồn và đích chưa giải thích hết chi tiết được. Khi một thiết bị gửi thông tin đến một thiết bị khác, tin nhắn được chia thành nhiều nhỏ gọi là gói tin hoặc datagram. Router sẽ chuyển các gói này theo mạng IP cho đến khi tới đích, tại thiết bị đích chúng sẽ được tập hợp lại. Giao thức chịu trách nhiệm cho quá trình vận chuyển này là TCP hoặc UDP.
Có thể thấy rằng tiêu đề IP đóng một vai trò quan trọng trong việc định tuyến. Trong bài này mình sẽ tập trung nói về tiêu đề IPv4 vì đây là phiến bản được sử dụng nhiều nhất.
Cấu trúc của tiêu đề IPv4
Gói IP lấy dữ liệu nhận được từ lớp mạng (Network layer) và thêm tiêu đề IP vào lớp của nó. Mọi thứ được ghi trong tiêu đề IP giúp gói tin (datagram) đến đích. Hãy xem cấu trúc của một tiêu đề IP gồm những trường nào qua hình ảnh và mô tả sau:

Ý nghĩa của các trường trong tiêu đề IP:
- Version: chỉ phiên bản của giao thức IP. Đối với IPv4 trường này có độ dài là 4 bits.
- Header Length: là độ dài của tiêu đề độ có giá trị tối thiểu là 20 byte và giá trị tối đa là 60 byte.
- Priority and Type of Service: chỉ định cách xử lý datagram có độ dài 8 bit trong đó 3 bit đầu tiên là các bit ưu tiên.
- Total Length: là chiều dài của toàn bộ gói (tiêu đề + dữ liệu). Độ dài tối thiểu là 20 byte và tối đa là 65.535 byte.
- Identification: được sử dụng để phân biệt các gói bị phân mảnh từ các datagram khác nhau.
- Flags: được sử dụng để kiểm soát hoặc xác định segments và có độ dài 3 bit.
- Fragmented offset: được sử dụng để phân mảnh và tập hợp lại nếu gói quá lớn để đặt trong Frames.
- Time to live: Đây là giới hạn thời gian tồn tại của một datagram. Nếu gói không đến trước khi TTL hết hạn thì gói tin sẽ bi loại bỏ.
- Protocol: xác định giao thức được sử dụng trong phần dữ liệu của gói dữ liệu IP. Ví dụ: TCP được biểu thị bằng số 6 và UDP bằng 17.
- Header Checksum: được sử dụng để kiểm tra lỗi tiêu đề. Nếu một gói đến bộ định tuyến và bộ định tuyến tính toán tổng kiểm tra khác với gói được chỉ định trong trường này, gói sẽ bị loại bỏ. Trường này có độ dài bằng 16 Bit.
- Source IP Address: địa chỉ IP của máy chủ đã gửi gói có độ dài 32 bit.
- Destination IP Address: địa chỉ IP của máy chủ sẽ nhận gói có độ dài 32 bit.
- Options: được sử dụng để kiểm tra mạng, gỡ lỗi, bảo mật, v.v. Trường này thường trống, nếu có thì độ dài là 32 bit.
Dưới đây là hình ảnh về một tiêu đề IP được ghi bằng WireShark:

Phân mảnh IP là gì?
Ở trên mình có đề cập đến việc phân mảnh và tập hợp các gói tin. Do đó dưới đây mình sẽ giải thích cụ thể hơn một chút về phân mảnh IP.
Về cơ bản, tin nhắn có giới hạn về độ lớn. Nếu 1 gói vượt quá kích thước 1500 byte, nó cần phải được chia nhỏ hơn. Quá trình này được gọi là phân mảnh. Bạn có thể hiểu đây là quá trình chia một gói dữ liệu IP thành các phần nhỏ hơn, gọi là các đoạn (segment). Sau đó tại máy chủ nhận nó sẽ được tổng hợp lại thành gói tin ban đầu.
Bên cạnh giới hạn về độ lớn, số lượng gói IP cùng gửi 1 lúc cũng bị giới hạn.
Xem thêm các bài viết khác: