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.