Mục ñích chính của IP là cung cấp khả năng kết nối các mạng con thành liên mạng ñể truyền dữ liệu. IP cung cấp các chức năng chính sau:
-Định nghĩa cấu trúc các gói dữ liệu là ñơn vị cơ sở cho việc truyền dữ liệu trên Internet.
-Định nghĩa phương thức ñánh ñịa chỉ IP.
-Truyền dữ liệu giữa tầng vận chuyển và tầng mạng .
-Định tuyến ñể chuyển các gói dữ liệu trong mạng.
-Thực hiện việc phân mảnh và hợp nhất (fragmentation –reassembly) các gói dữ liệu và nhúng / tách chúng trong các gói dữ liệu ở tầng liên kết.
2.1.2.1 Địa chỉ IP
Sơ ñồ ñịa chỉ hoá ñể ñịnh danh các trạm (Host) trong liên mạng ñược gọi là
ñịa chỉ IP. Mỗi ñịa chỉ IP có ñộ dài 32 bits (ñối với IP4) ñược tách thành 4 vùng (mỗi vùng 1 byte), có thể ñược biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc nhị phân. Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm ñể tách giữa các vùng. Mục ñích của ñịa chỉ IP là ñể ñịnh danh duy nhất cho một Host bất kỳ trên liên mạng.
Có hai cách cấp phát ñịa chỉ IP, nó phụ thuộc vào cách ta kết nối mạng. Nếu mạng của ta kết nối vào mạng Internet, ñịa mạng chỉ ñược xác nhận bởi NICenter (Network Information Center). Nếu mạng của ta không kết nối Internet, người quản trị mạng sẽ cấp phát ñịa chỉ IP cho mạng này. Còn các Host ID ñược cấp phát bởi người quản trị mạng.
Khuôn dạng ñịa chỉ IP: mỗi Host trên mạng TCP/IP ñược ñịnh danh duy nhất bởi một ñịa chỉ có khuôn dạng:
<Network Number, Host number>
-Phần ñịnh danh ñịa chỉ mạng: Network Number
-Phần ñịnh danh ñịa chỉ các trạm làm việc trên mạng ñó: Host Number Ví Dụ 128.4.70.9 là một ñịa chỉ IP
Do tổ chức và ñộ lớn của các mạng con của liên mạng có thể khác nhau, người ta chia các ñịa chỉ IP thành 5 lớp ký hiệu A,B,C, D, E với cấu trúc ñược xác ñịnh trên hình
Các bit ñầu tiên của byte ñầu tiên ñược dùng ñể ñịnh danh lớp ñịa chỉ (0 lớp A; 10 lớp B; 110 lớp C; 1110 lớp D; 11110 lớp E).
-Lớp A cho phép ñịnh danh tới 126 mạng (sử dụng byte ñầu tiên), với tối ña 16 triệu Host (3 byte còn lại, 24 bits) cho mỗi mạng. Lớp này ñược dùng cho các mạng có số trạm cực lớn. Tại sao lại có 126 mạng trong khi dùng 8 bits? Lí do ñầu tiên, 127.x (01111111) dùng cho ñịa chỉ loopback, thứ 2 là bit ñầu tiên của byte ñầu tiên bao giờ cũng là 0, 1111111(127). Dạng ñịa chỉ lớp A (NetworkNumber.Host.Host.Host). Nếu dùng ký pháp thập phân cho phép 1 ñến 126 cho vùng ñầu, 1 ñến 255 cho các vùng còn lại.
-Lớp B cho phép ñịnh danh tới 16384 mạng (10111111.11111111.Host.Host), với tối ña 65535 Host trên mỗi mạng. Dạng của lớp B (Network number. Network number.Host.Host). Nếu dùng ký pháp thập phân cho phép 128 ñến 191 cho vùng
ñầu, 1 ñến 255 cho các vùng còn lại
-Lớp C cho phép ñịnh danh tới 2.097.150 mạng và tối ña 254 Host cho mỗi mạng. Lớp này ñược dùng cho các mạng có ít trạm. Lớp C sử dụng 3 bytes ñầu ñịnh danh ñịa chỉ mạng (110xxxxx). Dạng của lớp C (Network number. Network number.Network number.Host). Nếu dùng dạng ký pháp thập phân cho phép 129
ñến 233 cho vùng ñầu và từ 1 ñến 255 cho các vùng còn lại.
-Lớp D dùng ñể gửi IP datagram tới một nhóm các Host trên một mạng. Tất cả các số lớn hơn 233 trong trường ñầu là thuộc lớp D
Hình 5: Cách ñánh ñịa chỉ TCP/IP
Như vậy ñịa chỉ mạng cho lớp: A: từ 1 ñến 126 cho vùng ñầu tiên, 127 dùng cho ñịa chỉ loopback, B từ 128.1.0.0 ñến 191.255.0.0, C từ 192.1.0.0 ñến 233.255.255.0 Ví Dụ 192.1.1.1 ñịa chỉ lớp C có ñịa chỉ mạng 192.1.1.0, ñịa chỉ Host là 1 200.6.5.4 ñịa chỉ lớp C có ñịa chỉ mạng 200.6.5.0, ñịa chỉ Host là 4 150.150.5.6 ñịa chỉ lớp B có ñịa chỉ mạng 150.150.0.0, ñịa chỉ Host là 5.6 9.6.7.8 ñịa chỉ lớp A có ñịa chỉ mạng 9.0.0.0, ñịa chỉ Host là 6.7.8 128.1.0.1 ñịa chỉ lớp B có ñịa chỉ mạng 128.1.0.0, ñịa chỉ Host là 0.1
Trong thực tế, do ñịa chỉ IP là một tài nguyên cần thiết phải tiết kiệm triệt ñể, tránh lãng phí nên người ta ñưa ra cách chia Subnet – Subneting.
Trong nhiều trường hợp, một mạng có thể ñược chia thành nhiều mạng con (subnet), lúc ñó có thể ñưa thêm các vùng subnetid ñể ñịnh danh các mạng con. Vùng subnetid ñược lấy từ vùng Hostid, cụ thểñối với 3 lớp A, B, C như sau:
Ví Dụ:
17.1.1.1 ñịa chỉ lớp A có ñịa chỉ mạng 17, ñịa chỉ subnet 1, ñịa chỉ Host 1.1 129.1.1.1 ñịa chỉ lớp B có ñịa chỉ mạng 129.1, ñịa chỉ subnet 1, ñịa chỉ Host
2.1.2.2. Cấu trúc gói dữ liệu IP
IP là giao thức cung cấp dịch vụ truyền thông theo kiểu “không liên kết” (connectionless). Phương thức không liên kết cho phép cặp trạm truyền nhận không cần phải thiết lập liên kết trước khi truyền dữ liệu và do ñó không cần phải giải phóng liên kết khi không còn nhu cầu truyền dữ liệu nữa. Phương thức kết nối “không liên kết” cho phép thiết kế và thực hiện giao thức trao ñổi dữ liệu ñơn giản (không có cơ chế phát hiện và khắc phục lỗi truyền). Cũng chính vì vậy ñộ tin cậy trao ñổi dữ liệu của loại giao thức này không cao.
Các gói dữ liệu IP ñược ñịnh nghĩa là các datagram. Mỗi datagram có phần tiêu ñề (Header) chứa các thông tin cần thiết ñể chuyển dữ liệu (Ví Dụ ñịa chỉ IP của trạm ñích). Nếu ñịa chỉ IP ñích là ñịa chỉ của một trạm nằm trên cùng một mạng IP với trạm nguồn thì các gói dữ liệu sẽñược chuyển thẳng tới ñích; nếu ñịa chỉ IP
ñích không nằm trên cùng một mạng IP với máy nguồn thì các gói dữ liệu sẽ ñược gửi ñến một máy trung chuyển, IP gateway ñể chuyển tiếp. IP gateway là một thiết bị mạng IP ñảm nhận việc lưu chuyển các gói dữ liệu IP giữa hai mạng IP khác nhau. Cấu trúc gói số liệu IP như sau:
-VER (4 bits) : chỉ Version hiện hành của IP ñược cài ñặt.
-IHL (4 bits) : chỉ ñộ dài phần tiêu ñề (Internet Header Length) của datagram, tính theo ñơn vị word (32 bits). Nếu không có trường này thì ñộ dài mặc
ñịnh của phần tiêu ñề là 5 từ.
Version Hlength T_o_S Total Length
Identification Flags Fragment offset Tme to live Protocol Header checksum
Source Address Destination Address
Option +Padding Data (max=65.535 byte)
-Type of service (8 bits): cho biết các thông tin về loại dịch vụ và mức ưu tiên của gói IP, có dạng cụ thể như sau:
Precedence D T R Reserved Trong ñó các bits ñược giải thích theo bảng dưới ñây:
Bits Mô tả
0–2 Quyền ưu tiên (Precedence) – có 8 mức 111– Network Control 011– Flash 110– Internetwork control 010– Immediate 101– CRITIC/ECP 001– Priority
100– Flash Override 000– Routine (Thấp nhất) 3 D – Độ trễ(Delay): 0 – trễ bình thường , 1 – trễ thấp
4 T – Thông lượng(Thoughtput): 0 – bình thường , 1 – cao 5 R – Độ tin cậy(Reliability): 0 – bình thường , 1 – cao 6–7 Dự trữ (Reserved)
-Total Length (16 bits): chỉñộ dài toàn bộ datagram, kể cả phần Header (tính theo ñơn vị bytes), vùng dữ liệu của datagram có thể dài tới 65535 bytes.
-Identification (16 bits) : cùng với các tham số khác như (Source Address và Destination Address) tham số này dùng ñể ñịnh danh duy nhất cho một datagram trong khoảng thời gian nó vẫn còn trên liên mạng
Flags (3 bits) : liên quan ñến sự phân ñoạn (fragment) các datagram. Cụ thể là: 0 1 2
O DF MF
Các bits ñược giải thích như sau: Bits Mô tả
0 Reversded – dự trữ , có giá trị là 0
1
Xác ñịnh datagram có phân ñoạn hoặc không 0 – Có phân ñoạn
1 – Không phân ñoạn
-Fragment Offset (13 bits) : chỉ vị trí của ñoạn (fragment) ở trong datagram, tính theo ñơn vị 64 bits, có nghĩa là mỗi ñoạn (trừ ñoạn cuối cùng) phải chứa một vùng dữ liệu có ñộ dài là bội của 64 bits.
-Time To Live (TTL–8 bits) : quy ñịnh thời gian tồn tại của một gói dữ liệu trên liên mạng ñể tránh tình trạng một datagram bị quẩn trên mạng. Giá trị này ñược
ñặt lúc bắt ñầu gửi ñi và sẽ giảm dần mỗi khi gói dữ liệu ñược xử lý tại những ñiểm trên ñường ñi của gói dữ liệu (thực chất là tại các Router). Nếu giá trị này bằng 0 trước khi ñến ñược ñích, gói dữ liệu sẽ bị huỷ bỏ.
-Protocol (8 bits): chỉ giao thức tầng kế tiếp sẽ nhận vùng dữ liệu ở trạm ñích (hiện tại thường là TCP hoặc UDP ñược cài ñặt trên IP).
-Header checksum (16 bits): mã kiểm soát lỗi sử dụng phương pháp CRC (Cyclic Redundancy Check) dùng ñể ñảm bảo thông tin về gói dữ liệu ñược truyền
ñi một cách chính xác (mặc dù dữ liệu có thể bị lỗi). Nếu như việc kiểm tra này thất bại, gói dữ liệu sẽ bị huỷ bỏ tại nơi xác ñịnh ñược lỗi. Cần chú ý là IP không cung cấp một phương tiện truyền tin cậy bởi nó không cung cấp cho ta một cơ chếñể xác nhận dữ liệu truyền tại ñiểm nhận hoặc tại những ñiểm trung gian. Giao thức IP không có cơ chế Error Control cho dữ liệu truyền ñi, không có cơ chế kiểm soát luồng dữ liệu (flow control).
-Source Address (32 bits): ñịa chỉ của trạm nguồn.
-Destination Address (32 bits): ñịa chỉ của trạm ñích.
-Option (có ñộ dài thay ñổi) sử dụng trong một số trường hợp, nhưng thực tế
chúng rất ít dùng. Option bao gồm bảo mật, chức năng ñịnh tuyến ñặc biệt
-Padding (ñộ dài thay ñổi): vùng ñệm, ñược dùng ñể ñảm bảo cho phần Header luôn kết thúc ở một mốc 32 bits
-Data (ñộ dài thay ñổi): vùng dữ liệu có ñộ dài là bội của 8 bits, tối ña là 65535 bytes.
2.1.2.3. Phân mảnh và hợp nhất các gói IP
Các gói dữ liệu IP phải ñược nhúng trong khung dữ liệu ở tầng liên kết dữ liệu tương ứng, trước khi chuyển tiếp trong mạng. Quá trình nhận một gói dữ liệu IP diễn ra ngược lại. Ví Dụ, với mạng Ethernet ở tầng liên kết dữ liệu quá trình chuyển một gói dữ liệu diễn ra như sau. Khi gửi một gói dữ liệu IP cho mức Ethernet, IP chuyển cho mức liên kết dữ liệu các thông số ñịa chỉ Ethernet ñích, kiểu khung Ethernet (chỉ dữ liệu mà Ethernet ñang mang là của IP) và cuối cùng là gói IP. Tầng liên kết số liệu ñặt ñịa chỉ Ethernet nguồn là ñịa chỉ kết nối mạng của mình và tính toán giá trị checksum. Trường type chỉ ra kiểu khung là 0x0800 ñối với dữ liệu IP. Mức liên kết dữ liệu sẽ chuyển khung dữ liệu theo thuật toán truy nhập Ethernet.
Một gói dữ liệu IP có ñộ dài tối ña 65536 byte, trong khi hầu hết các tầng liên kết dữ liệu chỉ hỗ trợ các khung dữ liệu nhỏ hơn ñộ lớn tối ña của gói dữ liệu IP nhiều lần (Ví Dụ ñộ dài lớn nhất của một khung dữ liệu Ethernet là 1500 byte). Vì vậy cần thiết phải có cơ chế phân mảnh khi phát và hợp nhất khi thu ñối với các gói dữ liệu IP.
Độ dài tối ña của một gói dữ liệu liên kết là MTU (Maximum Transmit Unit). Khi cần chuyển một gói dữ liệu IP có ñộ dài lớn hơn MTU của một mạng cụ thể, cần phải chia gói số liệu IP ñó thành những gói IP nhỏ hơn ñể ñộ dài của nó nhỏ
hơn hoặc bằng MTU gọi chung là mảnh (fragment). Trong phần tiêu ñề của gói dữ
liệu IP có thông tin về phân mảnh và xác ñịnh các mảnh có quan hệ phụ thuộc ñể
hợp thành sau này.
Ví Dụ Ethernet chỉ hỗ trợ các khung có ñộ dài tối ña là 1500 byte. Nếu muốn gửi một gói dữ liệu IP gồm 2000 byte qua Ethernet, phải chia thành hai gói nhỏ
Hình 8: Nguyên tắc phân mảnh gói dữ liệu
IP dùng cờ MF (3 bit thấp của trường Flags trong phần ñầu của gói IP) và trường Flagment offset của gói IP (ñã bị phân ñoạn) ñể ñịnh danh gói IP ñó là một phân ñoạn và vị trí của phân ñoạn này trong gói IP gốc. Các gói cùng trong chuỗi phân mảnh ñều có trường này giống nhau. Cờ MF bằng 1 nếu là gói ñầu của chuỗi phân mảnh và 0 nếu là gói cuối của gói ñã ñược phân mảnh.
Quá trình hợp nhất diễn ra ngược lại với quá trình phân mảnh. Khi IP nhận
ñược một gói phân mảnh, nó giữ phân mảnh ñó trong vùng ñệm, cho ñến khi nhận
ñược hết các gói IP trong chuỗi phân mảnh có cùng trường ñịnh danh. Khi phân mảnh ñầu tiên ñược nhận, IP khởi ñộng một bộñếm thời gian (giá trị ngầm ñịnh là 15s). IP phải nhận hết các phân mảnh kế tiếp trước khi ñồng hồ tắt. Nếu không IP phải huỷ tất cả các phân mảnh trong hàng ñợi hiện thời có cùng trường ñịnh danh.
Khi IP nhận ñược hết các phân mảnh, nó thực hiện hợp nhất các gói phân mảnh thành các gói IP gốc và sau ñó xử lý nó như một gói IP bình thường. IP thường chỉ thực hiện hợp nhất các gói tại hệ thống ñích của gói.
2.1.2.4. Định tuyến IP
Có hai loại ñịnh tuyến: Định tuyến trực tiếp và ñịnh tuyến không trực tiếp
-Định tuyến trực tiếp: Định tuyến trực tiếp là việc xác ñịnh ñường nối giữa hai trạm làm việc trong cùng một mạng vật lý.
-Định tuyến không trực tiếp. Định tuyến không trực tiếp là việc xác ñịnh
ñường nối giữa hai trạm làm việc không nằm trong cùng một mạng vật lý và vì vậy, việc truyền tin giữa chúng phải ñược thực hiện thông qua các trạm trung gian là các gateway.
Để kiểm tra xem trạm ñích có nằm trên cùng mạng vật lý với trạm nguồn hay không, người gửi phải tách lấy phần ñịa chỉ mạng trong phần ñịa chỉ IP. Nếu hai ñịa chỉ này có ñịa chỉ mạng giống nhau thì datagram sẽñược truyền ñi trực tiếp; ngược lại phải xác ñịnh một gateway, thông qua gateway này chuyển tiếp các datagram.
Khi một trạm muốn gửi các gói dữ liệu ñến một trạm khác thì nó phải ñóng gói datagram vào một khung (frame) và gửi các frame này ñến gateway gần nhất. Khi một frame ñến một gateway, phần datagram ñã ñược ñóng gói sẽ ñược tách ra và IP routing sẽ chọn gateway tiếp dọc theo ñường dẫn ñến ñích. Datagram sau ñó lại ñược ñóng gói vào một frame khác và gửi ñến mạng vật lý ñể gửi ñến gateway tiếp theo trên ñường truyền và tiếp tục như thế cho ñến khi datagram ñược truyền
ñến trạm ñích.
Hình 9: Dùng các gateway ñể gửi các gói dữ liệu
Chiến lược ñịnh tuyến: Trong thuật ngữ truyền thống của TCP/IP chỉ có hai kiểu thiết bị, ñó là các cổng truyền (gateway) và các trạm (Host). Các cổng truyền có vai trò gửi các gói dữ liệu, còn các trạm thì không. Tuy nhiên khi một trạm ñược nối với nhiều mạng thì nó cũng có thể ñịnh hướng cho việc lưu chuyển các gói dữ
Các trạm làm việc lưu chuyển các gói dữ liệu xuyên suốt qua cả bốn lớp, trong