- Hop limit: Trường này tương tự như trường TTL trong IPv4, giá trị của trường này là số hop và sẽ bị giảm đi một khi đi qua mỗi node chuyển tiếp.
- Source address: Địa chỉ IP của node mạng nguồn - Destination address: Địa chỉ IP của node mạng đích
1.4.2. Header mở rộng
Header mở rộng (extension header) là đặc tính mới trong thế hệ địa chỉ IPv6, có thể theo sau header cơ bản của IPv6. Một gói tin IPv6 có thể khơng có, có một hoặc là nhiều extension headers. Khi có nhiều extension headers cùng được sử dụng trong gói tin IPv6, thì chúng được tạo thành một chuỗi các danh sách headers và được xác định bởi trường Next header của header trước nó. Extension header được sử dụng để mang các thông tin tuỳ chọn ở các lớp internet trong gói tin.
Trong IPv4, thông tin liên quan đến những dịch vụ thêm vào được cung cấp tại tầng IP được hợp nhất trong trường Options của header. Vì vậy, chiều dài header thay đổi tuỳ theo tình trạng.
Khác thế, địa chỉ IPv6 phân biệt rõ ràng giữa header mở rộng và header cơ bản, và đặt phần header mở rộng sau phần header cơ bản. Header cơ bản có chiều dài cố định 40 byte, mọi gói tin IPv6 đều có header này. Header mở rộng là tuỳ chọn. Nó sẽ khơng được gắn thêm vào nếu các dịch vụ thêm vào không được sử dụng. Các thiết bị xử lý gói tin (ví dụ router), cần phải xử lý header cơ bản trước, song ngoại trừ một số trường hợp đặc biệt, chúng khơng phải xử lý header mở rộng. Router có thể xử lý gói tin hiệu quả hơn vì chúng biết chỉ cần nhìn vào phần header cơ bản với chiều dài như nhau.
Header mở rộng được chia thành nhiều loại tuỳ thuộc vào dạng và chức năng chúng phục vụ. Khi nhiều dịch vụ thêm vào được sử dụng, phần header mở rộng tương ứng với từng loại dịch vụ khác nhau được đặt tiếp nối theo nhau.
Trong cấu trúc header IPv6, có thể thấy 8 bít của trường Next Header. Trường này sẽ xác định xem extension header có tồn tại hay khơng, khi mà header mở rộng không được sử dụng, header cơ bản chứa mọi thông tin tầng IP. Nó sẽ được theo sau bởi header của tầng cao hơn, tức hoặc là header của TCP hay UDP, và trường Next Header chỉ ra loại header sẽ theo sau.
Mỗi header mở rộng (extension header) cũng chứa trường Next Header và xác định header mở rộng nào sẽ theo sau nó. Node đầu cuối khi nhận được gói tin chứa extension header sẽ xử lý các extension header này theo thứ tự được sắp xếp của chúng.
Có 6 loại của extension header: + Hop-by-Hop Options header + Destination Options header + Routing header
+ Fragment header + Authentication header
+ ESP (Encrypted Security Payload) header
Nếu có nhiều hơn một Header được sử dụng trong một gói thì thứ tự các Header như sau:
+ IPv6 header
+ Hop-by-Hop Options header
+ Destination Options header ( được xử lý bởi đích đầu tiên xuất hiện trong trường địa chỉ đích)
+ Routing header + Fragment header + Authentication header
+ ESP (Encrypted Security Payload) header
+ Destination Options header (được xử lý bởi đích cuối cùng) + Upper layer header
1. Hop by hop option:
Mang thông tin lựa chọn được kiểm tra bởi tất cả các node trên đường truyền của gói. Nếu khơng có Header mở rộng hop by hop thì router biết rằng khơng cần phải xử lý thơng tin định tuyến riêng mà chỉ cần định tuyến gói trực tiếp tới đích cuối cùng. Ngược lại, router chỉ cần kiểm tra trong Header này và khơng cần tìm kiếm thêm trong gói.
Hình 1.13. Định dạng Header hop-by-hop option
Byte đầu tiên của trường option là trường option type, nó mang thơng tin trong trường hợp các node xử lý khơng nhận ra option thì option này phải được đối xử như thế nào.
Giá trị của 2 bits đầu tiên chỉ ra hành động cần thực hiện: + 00: bỏ qua và tiếp tục xử lý
+ 01: loại bỏ packet
+ 10: loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 2 tới địa chỉ nguồn của gói, chỉ ra loại option khơng được nhận ra.
+ 11: khi đích khơng phải là muticast thì loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 2.
Bit thứ 3 chỉ ra thông tin lựa chọn thay đổi (giá trị 01) hoặc không thay đổi (giá trị 00) trên tồn tuyến hay khơng.
2. Routing header:
Xác định đường dẫn định tuyến, node nguồn sử dụng routing header để liệt kê địa chỉ các router mà gói tin sẽ đi qua trên đường truyền tới đích.
Hình 1.14. Định dạng Header Routing
Nếu node đang xử lý không nhận dạng được giá trị của routing type, hành động của nó phụ thuộc vào nội dung của trường segment left.
Nếu trường segment left khơng chứa node nào thì node bỏ qua Header routing và xử lý Header tiếp theo trong packet, được xác định bởi giá trị của trường Next header. Nếu trường segment left khác không, node loại bỏ packet và gửi bản tin ICMP lỗi tham số, code 0 tới địa chỉ nguồn của packet, chỉ ra loại routing không được nhận ra. Nếu node chuuyển tiếp không xử lý packet do kích thước MTU của link tiếp theo quá nhỏ, nó sẽ loại bỏ packet và gửi bản tin ICMP gói quá lớn trở lại nguồn của packet.
Loại định tuyến duy nhất được mô tả trong RFC 2460 là Header định tuyến loại Zero. Node đầu tiên xử lý Header định tuyến là node được đánh địa chỉ bởi trường địa chỉ đích trong Header IPv6. Node này giảm trường segment left đi một và chèn trường địa chỉ tiếp theo từ trong Header định tuyến vào trong trường địa chỉ đích của Header IPv6. Sau đó packet được chuyển tiếp tới hop tiếp theo và quá trình xử lý giống như trên cho tới khi đạt tới đích cuối cùng. Đích cuối cùng là địa chỉ cuối cùng trong trường dữ liệu Header định tuyến.
3. Fragment header:
Khi một host muốn gửi một packet tới host đích thì nó sẽ sử dụng thuật tốn path MTU discovery để xác định kích thước lớn nhất của các gói mà có thể được truyền trên đường truyền tới đích. Nếu gói có kích thước lớn hơn MTU được hỗ trợ trên mạng thì host nguồn sẽ phân đoạn gói đó thành các gói nhỏ hơn, đích sẽ tập hợp các segment và sắp xếp chúng lại. Khi đó Header fragment được sử dụng. Các segment phải có địa chỉ nguồn và đích nhận dạng và có cùng giá trị nhận dạng để được sắp xếp hợp lý.
Hình 1.15. Định dạng Header Fragment
M-flag = 0: chỉ ra fragment cuối cùng M-flag = 1: chỉ ra còn nhiều fragment
Trường identification hoạt động như một bộ đếm, tăng lên 1 cho mỗi packet cần được phân đoạn bởi node nguồn
4. Destination option header:
Mang thông tin lựa chọn chỉ được xác định bởi node đích
5. Authentication và ESP:
Ipsec là phương thức bảo mật bắt buộc được sử dụng tại tầng IP. Mọi node IPV6 phải thực thi Ipsec. Tuy nhiên, thực thi và tận dụng lại là khác nhau, và Ipsec có thực sự được sử dụng trong giao tiếp hay không phụ thuộc vào thời gian và từng trường hợp. Khi Ipsec được sử dụng, Authentication header sẽ được sử dụng cho xác thực và bảo mật tính đồng nhất của dữ liệu, ESP header sử dụng để xác định những thông tin liên quan đến mã hoá dữ liệu, được tổ hợp lại thành extension header. Trong IPV4, khi có sử dụng đến Ipsec, thơng tin được đặt trong trường Options.
1.5. ICMPv6
ICMPv6 vẫn giữ khá nhiều chức năng của ICMPv4, ngồi ra nó cịn có một số thay đổi sau:
- Các bản tin ICMP6 hỗ trợ thêm cho hoạt động tự động cấu hình địa chỉ.
- Các thủ tục và bản tin ICMPv6 mới thay thế cho giao thức phân giải địa chỉ ARP (Address Resolution Protocol).
- Tự động xác định MTU (Maximum Transmission Unit) và báo lỗi nếu có phân mảnh.
- ICMPv6 khơng gửi bản tin Source Quench để giảm tốc độ phát tin của nguồn phát khi có nghẽn mạch.
- ICMPv6 thực hiện luôn chức năng quảng bá quan hệ thành viên của IGMP (Internet Group Management Protocol).
- ICMPv6 phát hiện và báo lỗi nếu thấy router hay nút thông tin nào đó khơng hoạt động.
- ICMPv6 được gán giá trị 58 trong Next header.
ICMPv6 được sử dụng bởi node IPv6 để gửi các thơng báo lỗi trong q trình xử lý gói tin và thực hiện các chức năng chẩn đốn của tầng Internet, chẳng hạn như lệnh ping sử dụng bản tin ICMP Echo Request và Echo Reply
để xác định sự sẵn sàng của một node trên mạng. ICMPv6 là một phần không thể tách rời của giao thức IPv6.
1.5.1. Khn dạng cơ bản của bản tin ICMPv6
Có 2 loại bản tin ICMP:
- Bản tin ICMP thông báo lỗi: Bit cao nhất trong trường Type của bản tin có giá trị bằng “0”, do đó bản tin lỗi ICMP nằm trong phạm vi từ 0 đến 127. Các dạng của bản tin thơng báo lỗi ICMPv6:
+ Đích khơng đến được (bản tin loại 1) + Gói tin quá lớn (bản tin loại 2)
+ Quá thời gian (bản tin loại 3) + Lỗi tham số (bản tin loại 4)
- Bản tin thông báo thông tin: Bit cao nhất trong trường Type của bản tin có giá trị bằng “1”, do đó bản tin thơng tin ICMP nằm trong phạm vi từ 128 đến 255. Các dạng của bản tin thông báo thông tin ICMPv6:
+ Echo request (bản tin loại 128) + Echo reply (bản tin loại 129)
Tất cả các bản tin ICMPv6 có cùng một cấu trúc Header chung:
Hình 1.17. Cấu trúc Header chung của ICMPv6
Trong đó:
+ Type: Trường này chỉ ra loại của bản tin, bản tin thơng báo lỗi có giá trị từ 0 đến 127 cịn bản tin thơng báo thơng tin có giá trị từ 128 đến 255
+ Code: Trường này tùy thuộc vào từng loại bản tin, nó tạo ra một mức phân biệt nữa của bản tin
+ Checksum: Kiểm tra tính tồn vẹn của dữ liệu + Message : Chứa dữ liệu của bản tin ICMP
1.5.2. Bản tin ICMP thơng báo lỗi:
1.5.2.1. Thơng báo lỗi “đích khơng đến được”
Hình 1.18. Cấu trúc của bản tin thơng báo lỗi “đích khơng đến được”
Router gửi bản tin thơng báo lỗi “đích khơng đến được” khi một gói tin IP khơng được chuyển tiếp tới node đích mong muốn do bất kỳ một lý do nào đó khơng phải do nghẽn mạch
Các trường ICMPv6:
- Type: 1
- Code: 0: Khơng có tuyến đến đích 1: Thơng tin với đích bị cấm
2: Ngồi phạm vi của địa chỉ nguồn 3: Không đến được địa chỉ
4: Không đến được cổng
- Không sử dụng: Đặt về “0” bởi node gửi và lờ đi bởi node nhận.
+ Code = 0 (Khơng có tuyến đến đích): Bản tin này được phát ra nếu như một router khơng thể chuyển tiếp gói tin bởi router khơng có tuyến tới mạng đích trong bảng định tuyến của nó
+ Code =1 (Thông tin với đích bị cấm): Bản tin này được gửi bởi firewall
+ Code = 2 (Ngoài phạm vi địa chỉ nguồn): Bản tin này được gửi đi khi phạm vi multicast của địa chỉ nhỏ hơn phạm vi của địa chỉ đích
+ Code =3 (Khơng đến được địa chỉ): Bản tin này được gửi nếu địa chỉ đích khơng được phân giải vào trong địa chỉ mạng phù hợp hoặc lỗi lớp liên kết dữ liệu
+ Code = 4 (Không đến được cổng): Bản tin này được gửi khi gói tin IPv6 chứa bản tin UDP đã đến đích nhưng khơng có một ứng dụng nào lắng nghe trên cổng UDP đích
Node nhận thơng báo lỗi ICMPv6 “đích khơng đến được” phải báo cho giao thức lớp trên
1.5.2.2. Thơng báo lỗi “Gói tin q lớn”
Hình 1.19. Định dạng của bản tin thơng báo lỗi “gói tin q lớn”
Thơng báo lỗi “gói tin q lớn” phải được tạo ra do router để thông báo gói tin khơng chuyển tiếp được do kích thước của gói tin lớn hơn MTU của kết nối.Thơng báo này ứng dụng trong cơ chế khám phá đường dẫn MTU. Các trường ICMPv6:
- Type: 2
- Code: Đặt về “0” bởi node gửi và lờ đi bởi node nhận - MTU: MTU của kết nối hop tiếp theo
Thơng báo lỗi “gói tin q lớn” có một ngoại lệ so với các thơng báo lỗi ICMPv6 khác là nó có thể gửi cho địa chỉ multicast, hay địa chỉ multicast lớp liên kết, hay địa chỉ quảng bá lớp liên kết
Node nhận bản tin ICMP thơng báo lỗi “gói tin q lớn” phải báo cho giao thức lớp trên
1.5.2.3. Thông báo lỗi “quá thời gian”
Nếu một router nhận một gói tin với giới hạn hop là “0”, hay router giảm giá trị của giới hạn hop xuống “0” thì nó phải loại bỏ gói tin đó và gửi một thơng báo lỗi “q thời gian” với mã bằng “0” đến nguồn của gói tin. Nó chỉ ra định tuyến bị lặp hay giới hạn hop q nhỏ
Hình 1.20. Định dạng của bản tin thơng báo lỗi “quá thời gian”
Các trường ICMPv6:
- Type: 3
- Code: 0: Vượt quá giới hạn hop trong quá trình chuyển giao 1: Vượt quá thời gian lắp ráp các phân đoạn
- Không sử dụng: Đặt về “0” bởi node nguồn và lờ đi bởi node nhận
+ Code = 0 (Vượt quá giới hạn hop trong quá trình chuyển giao): Bản tin này được gửi đi khi có lặp định tuyến hay giới hạn hop quá nhỏ. Bản tin loại này được sử dụng rất phổ biến để thực hiện chức năng traceroute. Traceroute rất hữu ích để xác định đường dẫn mà các gói đi qua trên mạng. Thứ tựn để thực hiện điều này, gói tin đầu tiên được gửi ra ngoài với giới hạn hop bằng 1. Router đầu tiên trên đường dẫn
loại 3, code 0. Bây giờ host nguồn sẽ biết địa chỉ của router hop đầu tiên. Tiếp theo nó gửi ra ngồi gói tin thứ hai với giới hạn hop bằng 2. Gói tin này sẽ được chuyển tiếp bởi router đầu tiên, đồng thời router này sẽ giảm giới hạn hop xuống còn 1. Router thứ hai trên đường dẫn sẽ giảm giới hạn hop về 0, loại bỏ gói tin và gửi trở lại bản tin ICMP loại 3, code 0. Bây giờ host nguồn sẽ biết về router thứ hai trên đường dẫn. Tăng giới hạn hop lên 1 (với mỗi gói tin được gửi đi cho tới khi gói tin đạt đến đích cuối cùng) tiếp tục xử lý như vậy. Mỗi router trên đường dẫn tới đích cuối cùng sẽ gửi bản tin ICMP trở lại host nguồn vì vậy, nó cung cấp địa chỉ IP của nó cho host nguồn.
+ Code = 1 (Vượt quá thời gian lắp ráp các phân đoạn): Bản tin này được gửi đi khi host nhận không thể lắp ráp các phân đoạn trong thời gian xác định
Node nhận thông báo lối ICMPv6 “vượt quá thời gian” phải báo cho giao thức lớp trên .
1.5.2.4. Thơng báo lỗi “lỗi tham số”
Hình 1.21. Định dạng bản tin thông báo lỗi “lỗi tham số”
Một node xử lý gói tin và nó thấy có vấn đề trong các trường của header IPV6 hay trong Header mở rộng làm cho nó khơng thể hồn thành việc xử lý gói tin thì nó phải loại bỏ gói tin đó và gửi một thơng báo lỗi “lỗi tham số” đến nguồn của gói tin
Các trường ICMPv6:
- Type 4
- Code: 0: Trường trong header bị sai
1: Không nhận dạng được trường Header tiếp theo 2: Không nhận dạng được lựa chọn IPv6
- Pointer: Chỉ ra offset của lỗi trong gói tin có lỗi.
Pointer sẽ chỉ đến vị trí trong gói tin gốc mà nó phát hiện ra lỗi. Ví dụ một bản tin ICMP thông báo lỗi với loại bằng 4, code = 1, con trỏ bằng 40 sẽ chỉ ra rằng loại Header mở rộng không được nhận dạng Node nhận bản tin thông báo lỗi “lỗi tham số” phải thông báo cho giao thức lớp trên.
1.5.3. Bản tin ICMP thông báo thông tin
Bản tin Echo Request và Echo Reply được sử dụng cho một trong những hữu ích phổ biến nhất của bộ giao thức TCP/IP đó là lệnh ping (Packet INternet Groper).
1.5.3.1. Bản tin Echo Request
Hình 1.22. Định dạng của bản tin Echo Request
Các trường ICMPv6:
- Type: 128
- Code: 0
- Số thứ tự: Được sử dụng để phối hợp với bản tin trả lời phản hồi - Dữ liệu: Khơng có hay một vài byte dữ liệu tùy ý
1.5.3.2. Bản tin Echo Reply
Hình 1.23. Định dạng của bản tin Echo Reply
Các trường ICMPv6:
- Type: 129
- Code: 0
- Nhận dạng: Nhận dạng từ Echo Request - Số thứ tự: Số thứ tự từ Echo Request