Mục đích của giao thức IP là kết nối các mạng con thành dạng Internet để truyền dữ liệu. Giao thức IP cung cấp bốn chức năng:
- Đơn vị cơ sở cho truyền dữ liệu
- Đánh địa chỉ
- Chọn đường
- Phân đoạn các datagram
Mục đích đầu tiên của IP là cung cấp các thuật toán truyền dữ liệu giữa các mạng. Nó cung cấp một dịch vụ phân phát không kết nối cho các giao thức tầng cao hơn. Nghĩa là nó không thiết lập phiên (session) làm việc giữa trạm truyền và trạm nhận. IP gói (encapsulate) dữ liệu và phát nó với một sự nỗ lực nhất. IP không báo cho người nhận và người gửi về tình trạng gói dữ liệu mà cố gắng phát nó, do đó gọi là dịch vụ nỗ lực nhất. Nếu tầng liên kết dữ liệu bị lỗi thì IP cũng không thông báo mà cứ gửi lên tầng trên. Do đó, tới tầng TCP dữ liệu phải được phục hồi lỗi. Nói cách khác, tầng TCP phải có cơ chế timeout đối với việc truyền đó và sẽ phải gửi lại (resend) dữ liệu.
Trước khi phát dữ liệu xuống tầng dưới, IP thêm vào các thông tin điều khiển để báo cho tầng 2 biết có thông báo cần gửi vào mạng. Đơn vị thông tin IP truyền đi gọi là datagram, còn khi truyền trên mạng gọi là gói. Các gói được truyền với tốc độ cao trên mạng.
Giao thức IP không quan tâm kiểu dữ liệu trong gói. Các dữ liệu phải thêm các thông tin điều khiển gọi là đầu IP (IP header). Hình 2.3 chỉ ra cách IP gói thông tin và một đầu gói chuẩn của một datagram IP.
Các trường trong IP header được định nghĩa như sau:
- VERS: Định nghĩa phiên bản hiện thời của IP trên mạng. Phiên bản này là Version 4 còn phiên bản sau cùng là Version 6.
- HLEN: Chiều dài của đầu IP. Không phải tất cả các trường trong phần đầu đều được sử dụng. Trường đo bằng đơn vị từ 32 bit. Đầu IP ngắn nhất là 20 bytes. Nó cũng có thể dài hơn phụ thuộc trường option.
- Service Type: Đặc tả các tham số về dịch vụ, có dạng cụ thể như sau:
| 0 1 2 | 3 | 4 | 5 | 6 7 |
| Precedence | D | T | R | unused |
+ Precedence: Trường này có giá trị từ 0 (mức ưu tiên bình thường) tới 7 (mức kiểm soát mạng) qui định việc gửi datagram. Nó kết hợp với các bit D (trễ), T (thông lượng), R (độ tin cậy) thành thông tin để chọn đường, được xem như định danh kiểu dịch vụ (Type of Service – TOS).
+ Bit D – Thiết lập là 1 khi yêu cầu trễ thấp.
+ Bit T – Yêu cầu thông lượng cao.
+ Bit R – Yêu cầu độ tin cậy cao.
Ví dụ, nếu có nhiều đường tới đích, bộ chọn đường sẽ đọc trường này để chọn một đường. Điều này đã trở nên quan trọng trong giao thức chọn đường OSPF, giao thức chọn đường đầu tiên của IP. Nếu giao dịch đã chiếm vị trí truyền file bạn có thể thiết lập các bit là 0 0 1 để báo rằng bạn không muốn độ trễ thấp và thông lượng cao nhưng cần độ tin cậy cao. Các trường của TOS được thiết lập bởi các ứng dụng như (TELNET, FTP) và không chọn đường. Các bộ chọn đường chỉ đọc trường này và dựa vào đó chọn ra đường tối ưu cho datagram. Nó yêu cầu một bộ chọn đường có nhiều bảng chọn, mỗi bảng ứng với một kiểu dịch vụ.
- Total length: Đây là chiều dài của datagram đo bằng byte (trường này dài 16 bit do đó khu vực IP datagram dài 65535 byte).
Khi phải truyền một gói từ mạng rất lớn sang mạng khác, bộ chọn đường TCP/IP phải phân đoạn gói lớn thành các gói nhỏ hơn. Xét ví dụ, truyền một khung từ mạng Token Ring (kích thước truyền tối đa 4472 byte) tới mạng Ethernet (tối đa 1518 byte). TCP/IP sẽ thiết lập kích thước gói cho một liên kết. Nhưng nếu hai trạm đang thông tin bằng nhiều loại phương tiện, mỗi loại hỗ trợ kích thước truyền khác nhau? Việc phân đoạn thành các gói nhỏ thích hợp hơn cho truyền trên mạng LAN hoặc mạng LAN phức hợp dùng tầng IP. Các trường sau được sử dụng để đạt được kết quả này.
- Idetification, flags, frement offset: Các trường này biểu thị cách phân đoạn một datagram quá lớn. IP cho phép trao đổi dữ liệu giữa các mạng có khả năng phân đoạn các gói.
Mỗi đầu IP của mỗi datagram đã phân đoạn hầu như giống nhau. Trường Identification để nhận dạng các datagram được phân đoạn từ cùng một datagram lớn hơn. Nó kết hợp với địa chỉ IP nguồn để nhận dạng.
Trường flags biểu thị:
- Dữ liệu đang tới có được phân đoạn hay không.
- Phân đoạn hoặc không đối với một datagram.
Việc phân đoạn rất quan trọng khi truyền trên các mạng có kích thước khung khác nhau. Ta đã biết cầu (bridge) không có khả năng này. Khi nhận một gói quá lớn nó sẽ phát (forward) lên mạng và không làm gì cả. Các giao thức tần trên sẽ timeout gói và trả lời theo. Khi một phiên làm việc thiết lập, hầu hết các giao thức có khả năng thương lượng khích thước gói tối đa mà mỗi trạm có thể quản lý, do đó không ảnh hưởng tới hoạt động của cầu.
Các trường total length (tổng chiều dài) và fragment offset IP có thể xây dựng lại một datagram và chuyển nó tới phần mềm tầng cao hơn. Trường total length biểu thị tổng độ dài của một gói. Trường fragment offset biểu thị độ lệch từ đầu gói tới điểm mà tại đó dữ liệu sẽ được đặt vào trong đoạn dữ liệu để xây dựng lại gói (reconstruction).
- Trường Time to live (TTL): Có nhiều điều kiện lỗi làm cho một gói lặp vô hạn giữa các router (bộ chọn đường) trên Internet. Khởi đầu gói được thiết lập tại trạm gốc (originator). Các router sử dụng trường này để đảm bảo các gói không bị lặp vô hạn trên mạng. Tại trạm phát trường này được thiết lập thời gian là một số giây, khi datagram qua mỗi router trường này sẽ bị giảm. Với tốc độ hiện nay của các router thường giảm. Một thuật toán là router đang nhận sẽ ghi thời gian một gói đến, và sau đó, khi phát (forward) gói, router sẽ giảm trường này đi một số giây mà datagram phải đợi để được phát đi. Không phải tất cả các thuật toán đều làm việc theo cách này. Thời gian giảm ít nhất là 1 giây. Router giảm trường này tới 0 sẽ hủy gói tin và báo cho trạm gốc đã phát đi datagram.
Trường TTL cũng được thiết lập một thời gian xác định (ví dụ số khởi tạo thấp nhất 64) để đảm bảo một gói tồn tại trên mạng trong một khoảng thời gian xác định. Nhiều router cho phép người quản trị mạng thiết lập trường này một số bất kỳ từ 0 đến 255.
- Trường Protocol: Trường này dùng để biểu thị giao thức mức cao hơn IP (ví dụ TCP hoặc UDP). Có nhiều giao thức tồn tại trên giao IP. IP không quan tầm tới giao thức đang chạy trên nó. Thường các giao thức này là TCP hoặc UDP. Theo thứ tự IP biết phải chuyển đúng gói tin tới đúng thực thể phía trên, đó là mục đích của trường này.
- Trường Checksum: Đây là mã CRC – 16 bit (kiểm tra dư thừa vòng). Nó đảm bảo tính toàn vẹn (integrity) của header. Một số CRC được tạo ra từ dữ liệu trong trường IP data và được đặt trong trường này bởi trạm truyền (transmitting station). Khi trạm nhận đọc dữ liệu, nó sẽ tính số CRC. Nếu hai số CRC không giống nhau, có một lỗi trong header và gói tin sẽ bị hủy. Khi mỗi router nhận được datagram, nó sẽ tính lại checksum. Bởi vì, trường TTL bị thay đổi bởi mỗi router khi datagram truyền qua.
- Trường IP option: Về cơ bản, nó gồm thông tin về chọn đường (source routing), tìm vết (tracing a route), gán nhãn thời gian (time stamping) gói tin khi nó truyền qua các router và các đầu mục bí mật quân sự. Trường này có thể có hoặc không có trong header (nghĩa là cho phép độ dài header thay đổi).
- Các trường IP source và IP destination address (địa chỉ nguồn và đích): Rất quan trọng đối với người sử dụng khi khởi tạo trạm làm việc của họ hoặc cố định truy nhập các trạm khác không sử dụng dịch vụ tên miền (DNS) hoặc cập nhật file host (up-to-date host file). Nó cho biết địa chỉ trạm đích gói tin phải tới và địa chỉ trạm gốc đã phát gói tin.
Tất cả các host trên internet được định danh bởi địa chỉ. Địa chỉ IP rất quan trọng sẽ được bàn tới đầy đủ dưới đây.
Địa chỉ IP
Ta đã biết với mạng Ethernet và Token Ring có các địa chỉ MAC. Với giao thức TCP/IP các host được định danh bởi địa chỉ IP 32-bit. Đây được xem như một giao thức địa chỉ.
Mục đích đánh địa chỉ để IP thông tin với các host trên mạng hoặc Internet. Địa chỉ IP xác định cả nút đặc biệt và số hiệu mạng của nó. Địa chỉ IP dài 32 bit chia làm 4 trường, mỗi trường 1 byte. Địa chỉ này có thể biểu diễn dưới dạng thập phân, cơ số 8, 16 và nhị phân. Thường địa chỉ IP viết dưới dạng thập phân cùng các dấu chấm.
Có hai cách gán địa chỉ IP, phụ thuộc cách kết nối của bạn. Nếu bạn nối với Internet, địa chỉ mạng được gán thông qua điều hành trung tâm, như trung tâm thông tin mạng (Network Information Centrer – NIC). Nếu bạn không nối với Internet, địa chỉ IP của bạn được gán một cách địa phương thông qua người quản trị mạng của bạn.
Khi NIC gán địa chỉ mạng của bạn, đó chỉ là số hiệu mạng còn phần địa chỉ host được gán một cách địa phương bởi người quan trị mạng.
XNS sử dụng địa chỉ MAC 48-bit như địa chỉ host của nó. IP được phát triển trước khi có LAN tốc độ cao, do đó, nó có sơ đồ số hiệu của riêng nó. Địa chỉ IP tương thích với địa chỉ tầng vật lý của Ethernet và Token Ring.
- Khuôn dạng địa chỉ IP
Mỗi host trên mạng TCP/IP có một định danh duy nhất tại tầng IP với một địa chỉ có dạng <NetID, HostID>. Toàn bộ địa chỉ thường dùng để định danh một host, không có sự tách biệt giữa các trường. Thực tế, khó phân biệt giữa các trường khi không viết tách. Dạng tổng quát của địa chỉ IP có dạng:
<Network Number, Host Number>
- Các lớp IP (IP classes):
128.4.70.9 là một ví dụ địa chỉ IP. Nhìn vào địa chỉ này khó mà biết được đâu là phân số hiệu mạng, đâu là phân số hiệu host. Địa chỉ IP bao gồm 4 byte, phần số hiệu mạng có thể chiếm một, hai hoặc ba byte đầu, phần còn lại là số hiệu host. Tùy thuộc vào điều đó, địa chỉ IP chia làm 5 lớp: A, B, C, D và E. Các lớp A, B và C được sử dụng cho địa chỉ mạng và host. Lớp D là kiểu địa chỉ đặc biệt dùng cho multicast. Lớp E được để dành.
- Định danh lớp IP trong IPv4:
Lớp A: Địa chỉ lớp A chỉ sử dụng byte đầu cho số hiệu mạng, ba byte sau cho địa chỉ host. Địa chỉ lớp A cho phép phân biệt 126 mạng, mỗi mạng tới 16 triệu host ứng với 24 bits. Tại sao chỉ có 126 mạng ứng với 8 bit? Thứ nhất, 127.x (01111111 nhị phân) được dành cho chức năng loop-back nên không gán cho số hiệu mạng. Thứ hai, bit đầu tiên thiết lập 0 để nhận dạng lớp A. Địa chỉ mạng lớp A thường trong phạm vi từ 1 tới 126, còn ba byte cuối được gán một cách địa phương cho các host. Địa chỉ lớp A có dạng:
<Số hiệu mạng.host.host.host>
Lớp B: Địa chỉ lớp B dùng hai byte đầu cho số hiệu mạng và hai byte cuối dành cho số hiệu host. Nó được nhận dạng bởi hai bit đầu tiên là 10. Cho phép phân biệt 16384 số hiệu mạng, mỗi mạng tới 65354 host. Do đó dịch địa chỉ số hiệu mạng từ 128 tới 191. Nên nó sẽ có dạng:
<Số hiệu mạng.Số hiệu mạng.host.hos>
Lớp C: Địa chỉ lớp C sử dụng ba byte đầu cho số hiệu mạng và byte cuối cho địa chỉ host. Nhận dạng bởi ba bit đầu tiên là 110. Cho phép địa chỉ mạng trong phạm vi 192-223 của trường thứ nhất. Do đó có tới hai triệu mạng và mỗi mạng có thể chứa 254 host. Thường địa chỉ lớp C được gán bởi NIC. Nó có dạng:
<Số hiệu mạng.Số hiệu mạng.Số hiệu mạng.Host>
Địa chỉ IP không thể đặt bốn bit đầu tiên 1111 vì dành cho lớp E.
Các địa chỉ lớp D hoặc multicast dùng để gửi một IP datagram tới một nhóm các host trên mạng.
Các địa chỉ IP dành riêng
Các địa chỉ host nào đó được dành riêng và không thể gán cho các thiết bị trên mạng. Các địa chỉ host dành riêng này bao gồm:
Địa chỉ mạng: Được dùng để định danh chính mạng đó. Một địa chỉ IP có tất cả vị trí bit ở phần host đều chứa nhị phân 0 được dành riêng cho địa chỉ mạng.
ĐịachỉBroadcast: Được dùng để quảng bá (broadcasting) các gói đến tất cả các thiết bị trên một mạng. Để truyền số liệu đến tất cả các thiết bị trên mạng, cần một địa chỉ broadcast. Một hoạt động broadcast diễn ra là khi một nguồn truyền số liệu đến tất cả các thiết bị trên mạng. Để đảm bảo tất cả các thiết bị khác trên mạng xử lý broadcast này, máy gửi phải dùng một địa chỉ IP đích mà chúng có thể chấp nhận và xử lý. Các địa chỉ broadcast kết thúc bằng toàn là nhị phân 1 trong phần host của địa chỉ.
IPv6
IPv6 là tập hợp những đặc tả về nâng cấp IPv4 và được IETF soạn thảo. Nó được coi là giao thức Internet thế hệ mới và được thiết kế để gói thông tin được định dạng cho IPv4 có thể làm việc được. Những giới hạn về dung lượng địa chỉ và tốc độ tìm đường đi thấp đã thúc đẩy việc phát triển IPv6. Với dung lượng 128 bit và cách đánh địa chỉ đơn giản hơn, giao thức mới này sẽ giải quyết phần nào những vấn đề trên. Các tính năng được tăng cường này sẽ giải quyết phần nào những vấn đề trên. Các tính năng được tăng cường khác là mã hóa 64 bit và tự động cấu hình được thiết kế sẵn của địa chỉ IP. Khuôn dạng của IPv6 header được miêu tả ở hình 2.4.
- Mở rộng địa chỉ và tính năng dẫn đường: Kích thước địa chỉ IP lên đến 128 đảm bảo rằng IPv6 sẽ là giao thức Internet lâu dài. Khả năng mở rộng của việc định tuyến một chiều được cải tiến để truyền một cách hiệu quả các ứng dụng băng thông cao như video và audio.
- Tốc độ mạng: Những thay đổi thực hiện trong định dạng địa chỉ giúp giảm yêu cầu về băng thông và cho phép tăng tính hiệu quả và linh hoạt của việc định tuyến và phát tiếp thông tin.
- Khả năng bảo mật thiết kế sẵn: Những mở rộng để hỗ trợ khả năng kiểm tra tính hợp lệ, tích hợp và bảo mật dữ liệu là một phần của IPv6.
Gói tin ARP
Mọi máy tính cùng nằm trên một mạng có cùng một network id và các máy tính trên một mạng vật lý có thể gửi frame vật lý trực tiếp cho nhau nên việc truyền thông tin giữa hai máy tính trong cùng một mạng vật lý không cần sử dụng gateway. Trạm gửi chỉ việc kết khối dữ liệu vào frame, chuyển địa chỉ IP của trạm đích thành địa chỉ vật lý và gửi trực tiếp nó tới máy nhận.
Một cơ chế sử dụng để chuyển địa chỉ IP thành địa chỉ vật lý là ARP (Address Resolusion Protocol). Khi hai máy tính cùng nối vào một mạng vật lý, chúng biết được địa chỉ IP của nhau nhưng để truyền thông giữa hai máy, chúng phải biết được địa chỉ vật lý của nhau. ARP giải quyết vấn đề chuyển từ địa chỉ IP 32 bit sang địa chỉ Ethernet 48 bit. Người ta sử dụng hai cơ chế đó là:
- Chuyển giao trực tiếp: địa chỉ vật lý là một hàm của địa chỉ IP ví du sử dụng trên mạng token ring proNET-10 là mạng cho phép đặt địa chỉ IP và địa chỉ vật lý thoải mái. Người ta có thể đặt địa chỉ IP là 192.5.48.3 và địa chỉ vật lý là 3, khi đó ta có PA=f(IA).
- Chuyển giao địa chỉ động được thực hiện bằng cách máy tính muốn gửi thông tin gửi một thông báo tới toàn bộ các máy tính trên mạng, trong thông báo đó có chứa địa chỉ IP của máy tính nó cần liên lạc, mọi máy sẽ nhận được thông báo và máy nào thấy địa chỉ IP của mình thì trả lại một thông báo chứa địa chỉ vật lý, khi đó, hai máy tính có thể “nói chuyện” với nhau.
- Ngoài ra, người ta còn sử dụng bảng chỉ đường để lưu trữ tạm thời các địa chỉ sử dụng mới nhất (Address Reslution Cache) để tăng tốc độ của việc chuyển giao địa chỉ.
Một gói thông tin ARP là một Ethernet Frame được truyền trực tiếp từ máy này tới máy khác. Vì không phải sử dụng IP, gói tin này không có địa chỉ IP cũng như không cần được dẫn đường, nó phải được gửi broadcasts tới tất cả các máy trên mạng Ethernet (với địa chỉ FFFFFFFFFFFFF)
Gói thông tin ARP được mô tả như sau:
Không giống phần lớn các giao thức khác, dữ liệu trong ARP không có một định dạng chuẩn cho header. Để ARP có thể làm việc với nhiều công nghệ khác nhau, người ta dùng một trường để chứa độ dài của những trường đi sau nó.
Trong trường hợp máy trạm không có thiết bị nhớ phụ, nó không biết địa chỉ IP của chính mình khi khởi động, người ta sử dụng cơ chế có tên (RARP) để giải quyết vấn đề này đó là có một máy chủ chứa bảng địa chỉ IP của các máy trạm, khi máy trạm khởi động, nó gửi một request tới tất cả các máy và máy chủ trả lời nó bằng một gói tin chứa địa chỉ IP.
Cơ chế thông báo lỗi (Internet Control Message Protocol – ICMP)
Một giao thức trong tầng Internet là ICMP được định nghĩa trong RFC 792. ICMP sử dụng gói tin IP để chuyển thông báo của nó. ICMP gửi các thông báo làm các công việc: Điều khiển, thông báo lỗi và chức năng thông tin cho TCP/IP.
Gói tin ICMP
Mặc dầu mỗi thông báo ICMP có một kiểu định dạng riêng của nó, chúng đều chứa 3 trường đầu tiên giống nhau.
- TYPE: Định nghĩa thông báo đi sau.
- CODE: Cung cấp thông tin thêm về thông báo.
- CHECKSUM: Chưa checksum của thông báo.
Bảng 2.1 Bảng mã gói tin thông báo ICMP
| Type Field | ICMP Message Type |
| 0 | Echo Reply |
| 3 | Destination Unreachable |
| 4 | Source Quench |
| 5 | Redirect (Change o router) |
| 8 | Echo Request |
| 11 | Time Exceeded for a Datagram |
| 12 | Parameter Problem on a Datagram |
| 13 | Timestamp Request |
| 14 | Timestamp Reply |
| 15 | Information Request |
| 16 | Information Reply |
| 17 | Address Mask Request |
| 18 | Address Mask Reply |
Điều khiển dòng dữ liệu
Khi dữ liệu gửi tới trạm nhận quá nhanh không kịp xử lý, trạm đích - hay một thiết bị dẫn đường gửi trả trạm nguồn một thông báo để nó tạm ngừng việc truyền thông tin.
Thông báo lỗi
Khi không tìm thấy trạm đích, một thông báo lỗi Destination Unreachable được được gateway gửi trả lại trạm nguồn. Nếu một cổng không nhận ra, trạm đích gửi thông báo lỗi lại cho trạm nguồn (chúng ta sẽ nói về cổng trong phần giao thức tầng giao vận).