- Команда ping в Linux
- Как работает ping?
- Команда Ping
- Как пользоваться Ping?
- Выводы
- PING Command in Linux with examples
- The Linux Ping Command
- Using the Ping command
- Some Basic Ping functions
- Pinging the host for availability
- Increase/Decrease interval between ping packets
- Change ping packet size
- Set ping to send a desired number of packets
- Flooding the network
- Set ping timeout
- Audible ping
- Karim Buzdar
Команда ping в Linux
Всем знакомы ситуации, когда интернет на компьютере неожиданно разрывается, такое поведение можно наблюдать при использовании ADSL модемов, Wifi на большом расстоянии, GSM и других подобных ненадежных технологий. Быстро выяснить есть ли на компьютере интернет можно с помощью утилиты ping.
Но область ее применения намного шире, ее используют сетевые администраторы для проверки доступности удаленного узла в сети, она применяется в различных скриптах и многих других местах. В этой статье будет рассмотрена команда ping в Linux, мы поговорим о том, как пользоваться утилитой, как она работает, рассмотрим ее опции и возможности.
Как работает ping?
Утилита ping — это очень простой инструмент для диагностики сети. Она позволяет проверить доступен удаленный хост или нет и все. Для этого утилита проверяет, может ли хост отвечать на сетевые запросы с помощью протокола ICMP.
Надеюсь, не нужно говорить, что все данные по сети передаются в виде небольших пакетов. Программа передает небольшой пакет с данными ICMP и ожидает получить обратно пакет ответа, если получает, то считается что удаленный узел доступен. ICMP или Internet Control Message Protocol — это надстройка над протоколом IP, которая используется для передачи служебных сообщений и сообщений и ошибках.
Протокол ICMP может передавать только два типа пакетов — это сообщения с отчетами про ошибки и сообщения запросов. В свою очередь, сообщения запросов делятся на:
- Сообщение эхо-запрос;
- Сообщение эхо-ответ.
Попытаемся разобраться что делает команда ping. Итак, когда вы отправляете запрос ping удаленному узлу, утилита устанавливает для каждого пакета уникальный идентификатор, а также TTL и время отправки пакета. Если хост доступен, он отправляет ответ, на основе времени отправки утилита может вычислить время прохождения пакета туда и обратно. Затем отправляется следующий пакет. В конце рассчитывается общее количество отправленных и принятых пакетов, процент потерь и другие данные.
Команда Ping
Теперь нам осталось немного попрактиковаться. Но перед тем, как мы перейдем к практике давайте рассмотрим синтаксис команды и ее опции. Синтаксис довольно прост:
$ ping опции адрес_узла
Формат команды ping очень прост. В качестве адреса узла можно передавать как ip адрес, так и доменное имя. Опции настраивают поведение утилиты. Рассмотрим основные из них:
- -4 — использовать только ipv4 (по умолчанию);
- -6 — использовать только ipv6;
- -A — адаптивный режим, время между отправками пакета адаптируется к времени передачи и приема пакета, но не меньше чем 200мс;
- -b — разрешить ping широковещательного адреса;
- -с — количество пакетов, которые нужно отправить;
- -D — выводить время в виде UNIX timestamp;
- -f — режим флуда, в этом режиме пакеты передаются без задержек, может использоваться для совершения DoS атак на отдельные узлы. Количество точек, которые выводит утилита обозначает количество потерянных пакетов;
- -i — интервал в секундах между отправкой пакетов;
- -I — использовать этот сетевой интерфейс для отправки пакетов;
- -l — режим перегрузки, отправляется очень много пакетов и система не следит за ответными пакетами;
- -n — не получать домены для ip адресов;
- -r — игнорировать таблицы маршрутизации и отправить пакет на указанный интерфейс;
- -s — размер одного пакета;
- -t — установить TTL вручную;
- -v — более подробный вывод.
Теперь, когда мы рассмотрели основные параметры команды ping и ее синтаксис, пришло время практики, дальше поговорим о том, как сделать ping определенного узла в Linux.
Как пользоваться Ping?
Для проверки работоспособности сети часто используется программа ping любого сайта, который всегда доступен, например, google.com или еще проще и короче ya.ru. Вам будет достаточно передать утилите в параметрах этот адрес, она сама найдет ip и сделает все нужное:
Как я и писал выше, для каждого пакета выводится уникальный идентификатор icmp_seq, количество узлов до целевого узла ttl и время, потраченное на доставку пакета time. Чтобы остановить ping нажмите сочетание клавиш Ctrl+C. В конце утилита вывела общую статистику:
- packets transmitted — отправлено пакетов;
- received — получено пакетов;
- packet loss — процент потерянных пакетов;
- time — обще время работы;
rtt min/avg/max/mdev — минимальное время/среднее время/максимальное время/квадратичное отклонение.
Если выполнение команды ping не остановить, то пакеты могут отправляться очень долгое время, это создает дополнительную нагрузку на сервер и поэтому не желательно. Вы можете сразу в вызове команды ограничить количество отправляемых пакетов с помощью опции -c:
Точно так же как мы выполняем ping для домена, можно указать ip адрес напрямую. Это позволяет проверить есть ли сеть когда неверно настроены серверы DNS. Например:
Следующий вид отправки ping сообщений, это ping флуд. С помощью таких пакетов можно выполнить нагрузочное тестирование канала или даже заглушить интернет соединение на одной из машин. Но эти функции можно использовать только с правами суперпользователя. Для организации ping флуда укажите опцию -f:
По умолчанию, в обычном режиме, каждый следующий пакет отправляется, когда получен ответ на предыдущий. Но вы можете сами установить интервал между отправкой пакетов -i:
ping -i 0.2 losst.ru
Здесь программа ping выполняет так званный, настраиваемый флуд, вы указываете с какой интенсивностью нужно отправлять пакеты. С помощью опции -D вы можете увидеть Unix Timestamp для каждого сообщения:
Выводы
В этой статье мы рассмотрели что такое команда ping в linux, как ее использовать основные параметры и методы применения. Этот очень простой инструмент можно применять для тестирования неполадок сети и их исправления. В этом плане утилита может стать незаменимой.
Источник
PING Command in Linux with examples
PING (Packet Internet Groper) command is used to check the network connectivity between host and server/host. This command takes as input the IP address or the URL and sends a data packet to the specified address with the message “PING” and get a response from the server/host this time is recorded which is called latency. Fast ping low latency means faster connection. Ping uses ICMP(Internet Control Message Protocol) to send an ICMP echo message to the specified host if that host is available then it sends ICMP reply message. Ping is generally measured in millisecond every modern operating system has this ping pre-installed.
Now let see the PING command :
PING Version:
To get ping version installed on your system.
Using PING:
To stop pinging we should use ctrl+c otherwise it will keep on sending packets.
- min: minimum time to get a response
- avg: average time to get responses
- max: maximum time to get a response
Controlling the number of pings:
Earlier we did not define the number of packets to send to the server/host by using -c option we can do so.
Controlling the size of packets send:
Earlier a default sized packets were sent to a host but we can send light and heavy packet by using
-s option.
Changing the time interval:
By default ping wait for 1 sec to send next packet we can change this time by using -i option.
Now, the ping interval will change to 2 seconds.
To get only summary:
To only get the summary about the network use -q option
To Timout PING:
To stop pingig after sometime use -w option.
This will stop pinging after 3 seconds
Flooding with PING:
To send packets as soon as possible. This is used to test network performance.
To Add Timestamp
It is current time of event recorded by a machine over a network. It works by using TS option of IP packet.
We have three option with it
- tsonly (timestamp only)
- tsandaddr (timestamp and address)
- tsprespec (timestamp pre-specified for multiple hosts)
Time to wait for response:
Sets time to wait for a response.
To fill packet with data:
We can fill data in packet using -p option. Like -p ff will fill packet with ones.
Path MTU discovery:
It is a simple protocol to find out the maximum MTU(Maximum Transmission Unit) a TCP path can take.
We use an option with -m do (prohibit fragmentation), want (do PMTU discovery, fragment locally when packet size is large), or dont (do not set DF flag).
Specify TTL(Time To Live):
It is maximum hop a packet can travel before getting discarded.A value 0 will restricty packet to same host.
Источник
The Linux Ping Command
Ping or Packet Internet Groper is a network management utility that can check the connection status between a source and destination computer/device over an IP network. It also helps you estimate the time it takes to send and receive a response from the network.
We all have our favorite websites that we visit frequently; if one of them doesn’t load, we really want to know why. Is it because we don’t have an Internet connection, or is it problems with our Internet service provider that are preventing us from accessing the website? Another reason could be the unavailability of the website itself. Whatever the reason, the Linux Ping command can give you all the answers.
Ping uses the Internet Control Message Protocol (ICMP) to send and receive echo messages to and from the host or target computers to keep us informed of network performance. An ICMP request message is sent to the target computer; if the target IP address is available, it sends an ICMP message response to the host computer. This informs us about the connectivity status of the network, such as the round-trip time – the time it takes to send and receive an information packet.
Using the Ping command
In the Linux terminal type the following command:
This is the output you will get:
Let us describe(in alphabetic order) the commonly used options that you can see above:
Option | Description |
a | Use this option for a beep sound when the peer is reachable |
b | Use this option to allow pinging a broadcast address |
B | Use this option if you do not want to allow the ping to change the source address of the probe |
c (count) | Use this option to set the number of times to send the ping request |
d | Use this option to set the SO-DEBUG option on the socket being used |
f | Use this option to flood the network by sending hundred or more packets per second |
i (interval) | Use this option to specify an interval between successive packet transmissions. The default value of interval is 1 second |
I (interface address) | Use this option to set source address to the specified interface address. This option is required when pinging IPv6 link local address. Its argument can be an IP address or name of the device. |
l (preload) | Use this option to set the number of packets to send without waiting for a reply. For selecting a value more than 3, you need to be a super user. |
n | Use this option to display network addresses as numbers rather than as hostnames |
q | Use this option to display a quiet output. It means that only the summary is displayed at startup and finish time |
T (ttl) | Use this option to set the Time To Live |
v | Use this option for verbose output |
V | Use this option to display the version and exit |
w (deadline) | Use this option to specify a timeout, in seconds, before ping exits, regardless of how many packets have been sent or received. |
W (timeout) | Use this option to set the time(seconds) to wait for a response |
Some Basic Ping functions
Here are some basic ping functions that you will be used to check the performance of your network:
Pinging the host for availability
You can check if a host is alive or not through the following ping command:
Press Ctrl+C for breaking the command
Increase/Decrease interval between ping packets
The default time interval between sending each packet is 1 second in Linux. You can increase the time interval by setting a value greater than 1 and decrease it by setting a value less than 1.
Here is an example to increase the time interval between two pings:
Here is an example to decrease the time interval between two pings:
As you can see in the following image, you need to be a superuser in order to set this time interval lesser than 0.2 seconds:
Therefore, the command should be executed with sudo. It should look like the following,
Enter the password when you are prompted and the command should work.
Change ping packet size
The default ping packet size is 56 bytes. You can change it through the following command:
Here we are setting the packet size to 100; you can see the value set to 100 in the first line of output:
Set ping to send a desired number of packets
You can set ping to send a desired number of packets as follows:
In the following example, we are setting the number of packets as 5; after that, the results will end:
Flooding the network
Ping command allows super users to send 100 or more packets per second through the following command:
Ping prints a “.” when sending a ping and “/” when receiving one.
Set ping timeout
You can set a time limit after which ping will exit; no matter how many ping packets are sent or received:
Here we are using 3 seconds as timeout:
Audible ping
The ping command can be set to play a beep to check whether the host is available as follows:
Practicing around with this tutorial will enable you to run ping commands to check your network performance in an optimal way. You can also use advanced switches to customize your requests and responses in ping.
Karim Buzdar
About the Author: Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications. As an IT engineer and technical author, he writes for various web sites. You can reach Karim on LinkedIn
Источник