ping trong Linux

ping là câu lệnh mạng cơ bản nhất mà mỗi người dùng nên biết đầu tiên và nó có mặt trên tất cả các hệ điều hành. Nó cũng là 1 công cụ chuẩn đoán được dùng cho việc kiểm tra kết nối giữa các điểm trên 1 mạng. Nó có thể được dùng để tìm ra máy tính nào đang kết nối trên mạng.

Để kiểm tra kết nối giữa 2 điểm trên 1 mạng, lệnh ping sử dụng các gói tin echo ICMP (Internet Control Message Protocol). Khi những gói tin echo này được gửi đến 1 máy tính, máy tính đó phản hồi lại các gói tin này nếu nó đang hoạt động và đang kết nối.

1. Cú pháp

Cú pháp lệnh ping rất đơn giản:

$ ping ADDRESS

Trong đó ADDRESS có thể là tên máy tính, tên miền hoặc địa chỉ IP. ping sẽ gửi liên tục các gói tin và thông tin được trả lời sẽ được in trên terminal.

Để dừng tiến trình ping, nhấn tổ hợp phím Ctrl + C.

Ví dụ:

$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.44 ms
^C
--- 192.168.0.1 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.440/1.440/1.440/0.000 ms
$ ping google.com.vn
PING google.com (209.85.153.104) 56(84) bytes of data.
64 bytes from bom01s01-in-f104.1e100.net (209.85.153.104): icmp_
seq=1 ttl=53 time=123 ms
^C
--- google.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 123.388/123.388/123.388/0.000 ms

Khi 1 máy tính không thể kết nối đến, kết quả xuất ra sẽ tương tự như sau:

$ ping 192.168.0.99
PING 192.168.0.99 (192.168.0.99) 56(84) bytes of data.
From 192.168.0.82 icmp_seq=1 Destination Host Unreachable
From 192.168.0.82 icmp_seq=2 Destination Host Unreachable

Một khi máy tính không thể kết nối, lệnh ping trả về thông điệp lỗi “Destination Host Unreachable“.

Các quản trị mạng thường cấu hình các thiết bị như router không phản hồi lệnh ping. Việc này nhằm tránh các rủi ro bảo mật cấp thấp, khi ping có thể được sử dụng bởi những kẻ tấn công (sử dụng Brute-force) để tìm ra địa chỉ IP của máy tính.

2. Round trip time

Lệnh ping có thể được dùng để tìm ra giá trị Round Trip Time (RTT) giữa 2 điểm trên 1 mạng. RTT là thời gian cân thiết để 1 gói tin đến được máy tính đích và trở về máy tính nguồn. RTT trong ping được tính theo mili giây.

Ví dụ:

--- google.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 118.012/206.630/347.186/77.713 ms

Ở đây, giá trị RTT nhỏ nhất là 118,012 ms, RTT trung bình là 206,630 ms, và giá trị RTT lớn nhất là 347,186 ms. Tham số mdev (77,713 ms) trong kết quả của lệnh ping tượng trưng cho độ lệch.

3. Giới hạn số gói tin gửi đi

Lệnh ping gửi các gói tin echo và chờ việc trả lời của các gói tin echo vô thời hạn cho đến khi nó được dừng lại bằng việc nhấn Ctrl + C. Tuy nhiên, chúng ta có thể giới hạn số gói tin echo được gửi đi bằng việc sử dụng cờ -c như sau:

$ ping -c COUNT ADDRESS

Ví dụ:

$ ping  -c 2 192.168.0.1

hoặc

$ ping 192.168.0.1 -c 2
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=4.02 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.03 ms
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.039/2.533/4.028/1.495 ms

Trong ví dụ trên, lệnh ping gửi 2 gói tin echo và dừng lại.

4. Trả về trạng thái của lệnh ping

Lệnh ping trả về mã trạng thái 0 khi nó thành công và khác 0 khi thất bại, như trong bài Cách kiểm tra lệnh chạy thành công trong Bash shell. Thành công nghĩa là máy tính đích có thể kết nối đến, trong khi thất bại là khi máy tính đích không thể kết nối đến.

Ví dụ:

$ ping domain -c2
if [ $? -eq 0 ];
then
    echo Successful ;
else
    echo Failure
fi

Chúng ta kết thúc bài tìm hiểu về lệnh ping trong Linux tại đây. Chúc các bạn thành công!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.