Cho tới đây trong loạt bài này, chúng tôi đã giới thiệu cho các kiểu thao tác để bạn có thể thực hiện đối với lệnh ping để chuẩn đoán các vấn đề kết nối mạng. Trong phần này, chúng tôi sẽ tiếp tục giới thiệu bằng một số biến thể khác của kỹ thuật này.
Mất gói dữ liệu
Khi chúng ta đã sử dụng lệnh ping, cho dù lệnh có có được thực hiện thành công hoặc bị thất bại thì điều đó thực sự vẫn không đáng kể gì. Bạn có thể nhớ lại lệnh ping được thiết kế để trả về bốn đáp trả khác nhau. Đôi khi một hoặc nhiều trong số các đáp trả đó có thể thất bại, còn một số khác có thể thành công. Điều này xảy ra có nghĩa rằng hệ thống đang có hiện tượng bị mất gói dữ liệu.
Trong trường hợp như vậy, host nội bộ và host từ xa hoặc cả hai đều hoạt động tốt, nhưng có thể xuất hiện một số điều kiện khác gây ra hiện tượng mất mát các gói tin trong khi truyền tải. Tuy giao thức TCP/IP được thiết kế để nó có thể thử lại (retry) một gói dữ liệu đã bị mất trong quá trình truyền tải này, tuy nhiên việc mất gói dữ liệu sẽ làm giảm hiệu suất của hệ thống. Một kết nối chậm lúc này sẽ hiệu quả hơn đối với một kết nối tốc độ cao xuất hiện hiện tượng mất gói dữ liệu.
Một thứ khó khăn đối với vấn đề mất gói dữ liệu là việc tìm lần lại được dấu vết của nó. Bạn có thể biết hiện tượng mất gói dữ liệu xảy ra nếu một số đáp trả cho lệnh ping thất bại, nhưng các gói ICMP đã được sử dụng bởi lệnh ping này là quá nhỏ để có thể trả về điều kiện mạng đang tồn tại gây ra hiện tượng mất mát trong các tình huống thực tế.
Nếu bạn nghi ngờ hiện tượng mất gói dữ liệu có thể xảy ra nhưng khi ping lại không trả về bất cứ một lỗi nào, khi đó bạn có thể tăng kích thước của các gói ICMP lên. Các gói lớn hơn thường dễ dấn đến hiện tượng thất bại nếu mạng có vấn đề nào đó đang tồn tại. Bạn có thể đặt kích thước gói lớn hơn trong lệnh ping bằng các sử dụng tiếp lệnh –L.
Việc sử dụng tiếp lệnh này khá đơn giản. Tất cả những gì chúng ta cần phải thực hiện là nhập vào lệnh ping và theo sau là địa chỉ mà bạn muốn ping tới, tiếp đó là tiếp lệnh –L và số byte mà bạn muốn gửi. Cho ví dụ, giả dụ rằng mạng của bạn đang có hiệu suất cực kỳ kém khi kết nối đến một host nào đó. Bạn có thể nghi ngờ lúc này hiện tượng mất gói dữ liệu có thể xảy ra, nhưng khi ping lại cho các kết quả thành công mỹ mãn. Hãy thực hiện lệnh ping với kích thước của gói dữ liệu là 1024 byte như dưới đây:
Ping 192.168.1.1 –L 1024
Bạn có thể thấy được ví dụ thực về cách làm việc của lệnh này trong hình A.
Hình A: Gắn lệnh –L vào lệnh ping sẽ cho phép bạn tăng kích thước của gói ICMP
Thời gian sống
Khái niệm tiếp theo mà chúng tôi muốn giới thiệu cho các bạn cũng liên quan đến lệnh ping là thời gian sống (Time To Live, được viết tắt là TTL). Nếu quan sát vào hình A, bạn sẽ thấy ở cuối mỗi một reply trong hình có TTL=64.
Có thể bạn đã biết, Internet gồm có một số lượng lớn các tuyến được kết nối với nhau. Mỗi tuyến được kết nối ít nhất với hai tuyến khác. Ý tưởng ẩn đằng sau kiến trúc này là nếu liên kết có bị "fail" thì vẫn còn ít nhất một đường dẫn khác dẫn đến đích. Vấn đề với kiểu kiến trúc này là khi cứ liên kết nào thất bại thì hiện tượng các gói dữ liệu truyền tải theo các đường vòng vô tận sẽ xuất hiện, và các đường vòng này sẽ vẫn tồn tại trong mạng mà không đến được đích cuối cùng của nó.
Đây chính là vấn đề mà các chuyên gia thiết kế đã đưa vào giá trị TTL. Bạn có thể cho là giá tị TTL như một cơ chế hủy các gói tin. Giá trị này được thiết lập bạn đầu khá cao, mặc dù vậy số này có thể thay đổi phụ thuộc vào hệ điều hành mà bạn đang sử dụng. Mỗi lần gói dữ liệu truyền tải qua một router, gói sẽ được nhắc nhở phải thực hiện một bước nhảy . Mỗi khi bước nhảy xuất hiện, giá trị TTL được giảm đi một. Nếu giá trị TTL bằng không thì gói khi đó sẽ bị hủy hoàn toàn. Điều này giúp tránh được hiện tượng gói dữ liệu không đi đến đích mà cứ luẩn quẩn lưu mãi trên mạng.
Kiểm tra tuyến
Một lý do khác tại sao giá trị TTL lại hữu dụng đến vậy là vì công cụ khắc phục sự cố có tên tracert hoạt động dựa trên nó. Việc sử dụng lệnh ping khá tốt cho việc khắc phục sự cố các mạng nhỏ trong đó có các host từ xa gần các host đang gửi dữ liệu, tuy nhiên khi nói đến Internet hoặc đến mạng diện rộng thì host từ xa có thể là cách đến hàng nghìn dặm. Thêm vào đó các gói ICMP được tạo bởi lệnh ping có thể truyền tải qua rất nhiều router để tới được host từ xa. Chính vì vậy đôi khi bạn sẽ gặp tình huống trong đó host nội bộ và host từ xa hoặc cả hai đều tốt nhưng một trong các router ở đâu đó lại có vấn đề. Để khắc phục vấn đề đó bạn có thể sử dụng lệnh tracert để chuẩn đoán vấn đề của bạn là gì.
Lệnh tracert hoạt động dựa trên lệnh ping. Ý tưởng cơ bản đằng sau lệnh này là gửi đi một gói ICMP đến host từ xa, nhưng với giá trị TTL đã được thiết lập bằng một số nào đó. Điều này làm cho router đầu tiên mà nó gặp phải sẽ gửi trở lại một TTL đã hết hạn trong trong thông báo truyền tải. Thông báo này gồm có các thông tin như nhận dạng router sinh ra thông báo. Xác minh router được minh chứng, sau đó gói ICMP được gửi lại lần nữa nhưng lúc này với một giá trị TTL khác. Lúc này, gói ICMP đến được router thứ hai trước khi giá trị TTL hết hạn. Quá trình này được lặp đi lặp lại, việc tăng giá trị TTL được thực hiện như vậy cho tới khi đến được host đích. Điều này cho phép bạn có thể biết được các thông tin về các router giữa host nội bộ và host từ xa. Đôi khi bạn còn có thể sử dụng thông tin này để lần các vấn đề của router có ảnh hưởng đến luồng lưu lượng.
Việc sử dụng lệnh tracert cũng giống như sử dụng lệnh ping. Để thực hiện điều đó, bạn chỉ cần nhập vào lệnh tracert, sau đó là địa chỉ IP hoặc tên miền hoàn chỉnh của host từ xa. Hình B thể hiện một trường hợp sử dụng lệnh tracert.
Hình B: Lệnh tracert có thể được sử dụng để giải quyết các vấn đề về luồng lưu lượng
Có hai vấn đề bạn cần lưu ý ở đây trong khi sử dụng lệnh tracert này là: trước tiên là một số host có thể sử dụng tường lửa để khóa các gói ICMP. Vào trường hợp này, bạn sẽ thấy một loạt các dấu hoa thị chỉ thị rằng việc lần tuyến là không thể thực hiện với host vì không thể lấy được thông tin từ host đó.
Một vấn đề khác nằm ở bản thân các host, mỗi router đều được gán một địa chỉ IP. Không quan tâm đến chúng được sử dụng cho các host hay cho router hay không, các địa chỉ IP được cấu trúc theo cách để cho phép chúng phản ánh được vị trí địa lý. Trong thực tế, đôi khi các thông tin về địa lý này hoặc thậm chí các chỉ dẫn về tuyến lại được cung cấp bên trong tracert. Nếu bạn muốn có thêm nhiều thông tin, hãy thử dùng các công cụ của các hãng phần mềm thứ ba, các công cụ có thể theo dõi bằng kiểu đồ thị lệnh tracert dựa trên các thông tin địa lý. Bạn có thể xem ví dụ về một công cụ như vậy trong hình C.
Hình C: Bạn có thể thực hiện một tracert ảo để xác định bị trí địa lý của host
Kết luận
Trong phần này, chúng tôi đã giới thiệu cho các bạn về cách tăng số lượng byte trong khi sử dụng lệnh ping nhằm lần ra dấu vết của hiện tượng mất gói dữ liệu. Tiếp đó là giới thiệu về lệnh tracert. Trong phần tiếp theo của loạt bài này, chúng tôi sẽ tiếp tục thảo luận bằng cách giới thiệu cách thông dịch các kết quả được cho bởi lệnh tracert.
Văn Linh (Theo WindowsNetworking)