Hình 5.2 .1b
1. Tổng quát về thông điệp báo lỗi của TCP/IP
1.3. Truyền thông điệp ICMP
Thơng điệp ICMP đựơc đóng gói giống như các dữ liệu khác khi truyền đi bằng IP. Hình 8.1.3 cho thấy dữ liệu của ICMP được đóng gói trong gói IP như thế nào.
Thơng điệp ICMP cũng được truyền đi như các gói dữ liệu khác cho nên nó cũng có thể gặp sự cố. Điều này dẫn tới một vấn đề là nếu một thông điệp báo lỗi gặp sự cố thì sẽ làm phát sinh thêm các thơng điệp báo lỗi nữa và điều này làm cho mạng càng bị nghẽn hơn khi sự cố vốn đã xảy ra và còn đang tồn tại trên mạng. Chính vì vậy, các thơng điệp báo lỗi của ICMP sẽ không tạo thêm các thơng điệp báo lỗi cho chính nó .Như vậy thì các thơng điệp báo lỗi cũng có khả năng là không bao giờ đến đến được máy nguồn của gói dữ liệu.
Hình 8.1.3
1.4. Mạng khơng đến đƣợc
Để thực hiện được việc thông tin liên lạc trên mạng thì các điều kiện cơ bản cần phải có đủ. Trước tiên là thiết bị gửi và nhận dữ liệu phải được cấu hình đúng bộ giao thức TCP/IP. Việc này bao gồm cài đặt bộ giao thức TPC/IP và cấu hình địa chỉ IP, subnet mask cho thiết bị. Ngoài ra bạn cần phải khai báo Default gateway nếu thiết bị cần truyền dữ liệu ra ngoài phạm vi cục bộ. Thư hai là các thiết bị trung gian
141
bị thực hiện nhiệm vụ này. Do đó router phải được cấu hình bộ TCP/IP cho các cổng giao tiếp và sử dụng giao thức định tuyến thích hợp.
Nếu 2 điều kiện trên khơng được đáp ứng thì hệ thống mạng khơng thể thực hiện thơng tin liên lạc được. Ví dụ như khi một thiết bị gửi dữ liệu đến một địa chỉ IP không tồn tại hoặc là thiết bị đích đã bị ngắt kết nối ra khỏi mạng. Router cũng là nguyên nhân của sự cố nếu cổng giao tiếp trên router bị ngắt hoặc router khơng có thơng tin cần thiết để tìm ra đường tới mạng đích. Những trường hợp như vậy đều được xem là mạng đích khơng đến được .
Hình 8.1.4 minh họa cho trường hợp router khơng thể gửi gói dữ liệu đến đích do router khơng biết đường đến mạng đích, router gửi thơng điệp ICMP về cho máy nguồn để thơng báo là mạng đích khơng đến được .
Hình 8.1.4
1.5. Sử dụng lệnh ping để kiểm tra xem địa chỉ đích có đến đƣợc khơng
Giao thức ICMP có thể được sử dụng để kiểm xem có đến được một địa chỉ nào đó hay khơng. ICMP sẽ gửi thông điệp echo request đến máy đích. Nếu máy đích nhận được echo request thì sẽ trả lời lại thơng điệp echo reply cho máy nguồn. Nếu máy nguồn nhận được echo reply thì điều đó khặng định là máy đích có thể đến được bằng giao thức IP.
Lệnh ping khởi tạo các thông điệp echo request. Ví dụ như hình 8.1.5a và 8.1.5b, chúng ta sử dụng lệnh ping với địa chỉ IP đích. Lệnh ping gửi đi 4 gói echo request và nhận về 4 gói echo reply xác nhận kết nối IP giữa 2 thiết bị hoạt động tốt.
Hình 8.1.5a
Hình 8.1.5b
1.6. Phát hiện đƣờng dài quá giới hạn
Gói dữ liệu khi truyền đi trên mạng có thể bị truyền lịng vịng và không bao giờ đến được đích. Điều này có thể xảy ra khi thông tin định tuyến bị sai, ví dụ như 2 router cú gửi một gói dữ liệu qua lại cho nhau vì router này nghĩ rằng router kia mới là trạm kế tiếp đến đích.
Giao thức định tuyến có quy trình có quy định giới hạn để xác định mạng đích khơng đến được. Ví dụ như RIP có số hop giới hạn là 15. Điều này có nghĩa là gói dữ liệu chỉ được phép đi qua tối đa 15 router.
Khi con đường mà gói dữ liệu đi qua bị lặp vịng hoặc có q nhiều hop thì khi gói dữ liệu vượt qua giá trị hop tối đa, giá trị Time-to-live (TTl) của gói dữ liệu cũng hết thời gian vì giá trị TTL được cài đặt khớp với số hop tối đa đã được định nghĩa của giao thức định tuyến. Mỗi một gói dữ liệu đều có một giá trị TTL. Mỗi router sau khi xử lý gói dữ liệu sẽ giảm giá trị TTL đi 1. Khi giá trị TTL bằng 0 thì router sẽ hủy bỏ gói dữ liệu đó. Khi đó ICMP dùng thơng điệp “Time exceeded” để thơng báo cho máy nguồn biết là TTL của gói dữ liệu đã bị hết thời gian.
1.7. Thông điệp echo
Như bất kỳ các loại gói dữ liệu khác, thơng điệp ICMP cũng có định dạng riêng. Mỗi một loại thơng điệp ICMP có một đặc điểm riêng nhưng tất cả các gói ICMP đều bắt đầu bằng 3 phần:
• Type • Code • Checksum
Phần type cho biết loại thông điệp nào của ICMP được gửi đi. Phần Code cho biết chi tiết hơn về loại thông điệp ICMP. Phần checksum cũng tương tự như trong các loại gói dữ liệu khác, phần này được sử dụng để kiểm tra lỗi cho dư liệu.
143
Sequence Number sẽ khác nhau đối với từng gói echo request và echo reply. Chỉ số trong 2 phần này được sử dụng để xác định echo reply tương ứng với echo request nào. Cịn phần Data chứa các thơng tin bổ sung của thơng điệp echo request và echo reply.
Hình 8.1.7a
Hình 8.1.7b
1.8. Thơng điệp “Destination Unreachable”
Khơng phải lúc nào gói dữ liệu cũng chuyển được đến đích. Ví dụ như hư hỏng phần cứng, cấu hình giao thức khơng đúng, cổng giao tiếp bị ngắt, thông tin định tuyên sai… là những nguyên nhân có thể gây ra làm cho gói dữ liệu khơng thể chuyển được tới đích. Trong những trường hợp như vậy thì ICMP gửi thông điệp “Destination Unreachable” cho máy gửi để thơng báo là gói dữ liệu khơng chuyển được tới đích.
Trong hình 8.1.8a là cấu trúc của thơng điệp “Destination Unreachable”.
Giá trị 3 trong phần Type cho biết đây là thông điệp “Destination Unreachable”
Giá trị trong phần Code sẽ cho biết nguyên nhân tại sao không chuyển được gói dữ liệu đến đích. Ví dụ như phần Code có giá trị 0 có nghĩa là mạng đích khơng đến được.
Hình 8.1.8a
Hình 8.1.8b
Khi gói dữ liệu đựơc chuyển từ mạng Token-ring ra mạng Ethernet thì thường phải phân mảnh ra thành các gói nhỏ hơn. Nếu gói dữ liệu khơng cho phép phân mảnh thì gói dữ liệu không thể chuyển ra được, khi đó thơng điệp “Destination Unreachable” sẽ được gửi đi. Thông điệp ICMP này cũng được gửi đi khi các dịch vụ liên quan đến IP như FTP, Web không tim thấy. Điều quan trong khi xử lý sự cố mạng IP là bạn cần phải hiểu được các nguyên nhân khác nhau tạo nên thông điệp ICMP “Destination Unreachable”.
1.9. Thông báo các loại lỗi khác
Khi thiết bị xử lý gói dữ liệu khơng chuyển gói dữ liệu đi được do một số lỗi ở phần Header của gói dữ liệu. Loại dữ liệu này khơng liên quan gì đến host đích hay mạng đích nhưng nó vẫn làm cho gói dữ liệu khơng thể chuyền được đến đích. Trong trường hợp này, thông điệp ICMP “Parameter Problem”, Type 12 sẽ được gửi về cho máy nguồn.
Trong hình 8.1.9 là cấu trúc của thơng điệp “Parameter Problem”. Trong đó có phần Pointer. Khi giá trị Code là 0, phần Pointer cho biết octet nào trong gói dữ liệu bị lỗi
Hình 8.1.9
2. Thơng điệp điều khiển của TCP/IP
2.1. Giới thiệu về thông điệp điều khiển
ICMP là một phần của bộ giao thức TCP/IP. Thực tế là tất cả các hệ thống IP đều phải bao gồm ICMP. Lý do của việc này hết sức đơn giản. Trước hết là IP khơng có cơ chế nào để đảm bảo là dữ liệu đã được chuyển tới đích, hồn tồn khơng thơng báo gì cho host biết khi sự cố xảy ra. IP khơng có cơ chế cung cấp thơng điệp thơng
145 Hình 8.2.1
Khơng giống như thông điệp báo lỗi, thông điệp điều khiển không phải được tạo ra là do mất gói dữ liệu hay do lỗi của quá trình truyền dữ liệu. Mà các thông điệp điều khiển được dùng để thơng báo cho host biết về tình trạng nghẽn mạch trên mạng hay thơng báo cho host biết là có một gateway tốt hơn dẫn đến mạng đích … Cũng giống như tất cả các gói ICMP khác, thơng điệp điều khiển được đóng gói trong gói IP. ICMD sử dụng gói IP để truyền thơng điệp trên mạng.
ICMP có rất nhiều loại thơng điệp điều khiển khác gặp nhau. Một số loại thường nhất được thể hiện ở hình 8.2.1.
2.2. Thơng điệp ICMP redirect/change request
Thông điệp điều khiển ICMP thường gặp nhất là redirect/change request. Loại thông điệp này được tạo ra bởi gateway mà thơng thường đó chính là router . Tất cả các host khi muốn thông tin liên lạc với các mạng IP đều phải được cấu hình default gateway. Default gateway là địa chỉ của một cổng trên router kết nối vào cùng một mạng với host. Như trong hình 8.2.2a, một host được nối vào router và router này có kết nối ra Internet. Host B được cấu hình default gateway là địa chỉ IP của cổng Fa0/0trên router. Host B sẽ sử dụng địa chỉ IP này để đến các mạng khác. Bình thường host B chỉ kết nối đến một gateway. Tuy nhiên cũng có trường hợp một host kết nối vào mạng 2 hay nhiều router. Trong trường hợp đó, default gateway của host sẽ cần dùng redirect/change request để thông báo cho host biết về một gateway khác tốt hơn để đến một mạng đích nào đó.
Hình 8.2.2a
Trong hình 8.2.2b là một ví dụ cho trường hợp cần sử dụng ICMP redirect. Host H gửi dữ liệu cho Host C trong mạng 10.0.0.0/8. Vì mạng đích khơng kết nối trực tiếp vào Host H nên Host H gửi gói đến default gateway của nó là Router R1. Router R1 tìm trên bảng định tuyến để tìm đường đến mạng 10.0.0.0/8 thì thấy rằng để chuyển gói tới đích router phải gửi gói này ngược trở ra cổng mà nó vừa mới nhận gói dữ liệu vào. Khi đó router R1 sẽ chuyển gói dữ liệu đi và đồng thời gửi thơng điệp ICMP redirect/change request tới Host H để thông báo là Host H nên sử dụng Router R2 làm gateway cho tất cả các gói dữliệu đến mạng 10.0.0.0/8.
Hình 8.2.2b
Default gateway chỉ gửi thơng điệp ICMD redirect/change request khi gặp các điều kiện sau :
Cổng mà router nhận gói dữ liệu vào cũng chính là cổng mà router sẽ chuyển gói dữ liệu đi tiếp.
Địa chỉ IP của máy nguồn là cùng một mạng /subnet với địa chỉ IP của trạm kế • Gói dữ liệu nhận được khơng phải gửi ngược lại máy nguồn.
147
định của router và cũng không phải là của một ICMP redirect nào khác.
• Router phải được cấu hình để thực hiện redirect. (Mặc định là Cisco router thực hiện gửi ICMP redirect. Bạn có thể dùng lệnh no ip redirect để tắt chức năng này trên một cổng nào đó của router).
Thơng điệp ICMP redirect /change request có cấu trúc như hình 8.2.2c. Trong đó phần Type có giá trị là 5 ,phần Code có giá trị là 0,1,2 hoặc 3.
Phần Router Internet Address chứa địa chỉ IP của gateway mới .Ví dụ như trên : trong thông điệp redirect của Router R1 gửi cho Host H ,phần Router Internet Address sẽ có giá trị là 172.16.1.200,đây là địa chỉ IP của cổng E0 trên Router R2 .
Hình 8.2.2c
Hình 8.2.2d
2.3. Đồng bộ đồng hồ và ƣớc tính thời gian truyền dữ liệu
Bộ giao thức TCP/IP cho phép hệ thống mạng này kết nối với hệ thống mạng khác ở cách nhau rất xa thông qua nhiều hệ thống mạng trung gian. Mỗi một hệ thống mạng có một cơ chế đồng bộ đồng hồ riêng. Do đó khi một host ở mạng khác sử dụng phần mềm cần đồng bộ thời gian để thực hiện liên lạc thì có thể sẽ gặp rắc rối. Thơng điệp ICMP Timestamp được thiết kế để giải quyết vấn đề này .
Thông điệp ICMP timestamp request cho phép một host hỏi giờ hiện tại trên một máy khác. Máy được hỏi sẽ dùng thông điệp ICMP timestamp reply để trả lời.
Phần Type trong thơng điệp ICMP timestamp có giá trị là 13 (timestamp request) hoặc 14 (timestamp reply). Phần Code ln có giá trị là 0 vì loại thơng điệp này khơng có gì khác hơn. Phần Originate timestamp là thông tin về giờ hiện tại trên máy gửi ngay trước khi thông điệp ICMP timestamp request được gửi đi. Phần Recive timestamp là thời điểm mà máy đích nhận được yêu cầu request. Phần Transmit timestamp là thời điểm trên máy trả lời ngay trước khi máy này gửi thông điệp ICMP timestamp reply.
Tất cả 3 thống số về thời gian trên đều được tính bằng số mili giây tính từ thời điểm nửa đêm theo giờ Quốc tế (Univesal Time -UT).
Hình 8.2.3
Tất cả các thông tin ICMP timestamp reply đều có đầy đủ 3 thông số: thời điểm gửi gói request, thời điểm nhận được request và thời điểm gửi gói reply. Dựa vào 3 thơng số này host có thể ước lượng được khoảng thời gian dữ liệu truyền trên mạng từ máy nguồn đến máy đích bằng cách lấy giá trị của phần Originate Timestamp trừ cho giá trị của phần Transmit timestamp. Kết quả này cũng chỉ mang tính chất ước lượng thơi vì thời gian truyền thật sự còn phụ thuộc vào lưu lượng truyền thực tế trên mạng lúc đó. Ngồi ra, host cịn có thể ước tính được giờ hiện tại trên máy đích.
Thơng điệp ICMP timestamp là một cách đơn giản để uớc đốn giờ trên máy đích và ước tính tổng thời gian truyền trên mạng nhưng đây chưa phải là cách tốt nhất. Giao thức Network Time Protocol (NTP) ở lớp trên của giao thức TCP/IP thực hiện đồng bộ đồng hồ theo cách tin cậy và chính xác hơn.
2.4. Thơng điệp Information request và reply
Thông điệp ICMP information request và reply cho phép host xác định địa chỉ mạng của nó. Hình 8.2.4 là cấu trúc của loại thơng điệp này.
Hình 8.2.4
Phần Type có 2 giá trị: giá trị 15 tương ứng với thông điệp Information reply. Loại thông điệp này của ICMP được xem là đã quá lỗi thời. Hiện nay, các giao thức BOOTP và DHCP được sử dụng nhiều để cung cấp địa chỉ mạng cho host.
2.5. Thông điệp Address Mask
Khi người quản trị mạng dùng một địa chỉ IP lớn chia ra thành nhiều subnet, các subnet sẽ có subnet mask tương ứng .Subnet mask được sử dụng để xác nhận các bit của phần Network. Subnet và các bit của thành phần Host trong địa chỉ IP. Nếu một host biết địa chỉ IP của router thì nó gửi u cầu tới trực tiếp của router, cịn nếu khơng thì nó sẽ quảng bá yêu cầu của nó. Khi router nhận được yêu cầu này, router sẽ dùng thông điệp Address mask reply để trả lời. Trong thông điệp Address mask reply sẽ có subnet mask chính xác cho host.Ví dụ: mơt host trong mạng lớp B có địa chỉ IP là 172.16.5.2. Host này không biết subnet mask của mình nên nó broadcast thơng điệp Address mask request như sau :
Source address:172.16.5.2 Destination address:255.255.255.255 Protocol :ICMP =1
Type :Address Mask Request =AM1 Code :0 Mask:255.255.255.0
Router 172.16.5.2 nhận được thông điệp trên và trả lời bằng thông điệp Address mask reply như sau :
149 Mask:255.255.255.0
Cấu trúc của thông điệp Address Mask Request và reply được thể hiện ở hình 8.2.5. Thơng điệp Address Mask Request và reply có cấu trúc hoàn toàn như nhau, chỉ khác nhau giá trị phần Type. Phần Type có giá trị 17 là tương ứng với request, còn giá trị 18 là tương ứng với reply. Phần Identifier và Sequence Number giúp phân biệt reply nào tương ứng với request nào, giá trị hai phần này thường là 0. Phần Checksum được dùng để kiểm tra lỗi cho thơng điệp ICMP được tính bắt đầu từ phần Type trở đi.
Hình 8.2.5
2.6. Thơng điệp của router
Khi có host trong mạng bắt đầu khởi động và host chưa được cấu hình Default gateway thì nó có thể tìm gateway bằng thơng điệp Router discovery. Trước tiên, host gửi thông điệp Router solicitation cho tất cả các router bằng cách dùng địa chỉ multicast là 224.0.0.2. Thơng điệp này cũng có thể được gửi broadcast để gửi đến được những router khơng có cấu hình multicast. Khi nhận được thơng điệp trên, nếu router khơng có cấu hình hỗ trợ q trình này thì router sẽ khơng trả lời gì hết. Cịn nếu router có hỗ trợ quá trình này thì router sẽ trả lời lại bằng thông điệp Router advertisement. Cấu trúc của thông tin điệp Router advertisement được mơ tả ở hình