{"id":371905,"date":"2024-05-21T04:59:31","date_gmt":"2024-05-21T04:59:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=371905"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=371905","title":{"rendered":"<span>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0442\u0438\u043b\u0438\u0442\u044b ping \u0432 Linux<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u041e\u0421 Linux. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 ping \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438.<\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 ping \u0441\u0442\u043e\u0438\u0442 \u0432 Linux \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0430\u0439\u043f\u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 google.com \u0438\u043b\u0438 173.194.73.138):<\/p>\n<pre><code>user@mycomputer:~$ ping google.com PING google.com (173.194.73.138) 56(84) bytes of data. 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=1 ttl=56 time=23.8 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=2 ttl=56 time=23.2 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=3 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=4 ttl=56 time=23.5 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=5 ttl=56 time=23.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=6 ttl=56 time=23.1 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=7 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=8 ttl=56 time=25.4 ms ^C --- google.com ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7013ms rtt min\/avg\/max\/mdev = 23.119\/23.877\/25.436\/0.728 ms<\/code><\/pre>\n<p>\u041d\u043e \u0447\u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u0435\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d? \u041a\u043e\u043c\u0430\u043d\u0434\u0430 ping \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u0441\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 (google.com), \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442. \u0421\u043f\u0440\u0430\u0432\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 time, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>time = 23.8 ms<\/code><\/pre>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 time \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0437\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0445\u043e\u0434\u044f\u0442 \u0434\u043e google.com \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ping, \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0433\u0443\u0433\u043b\u0430 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0437\u0430 23.8 \u043c\u0441. \u0410 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0430\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c OSI:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"4\">\n<p align=\"center\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\u0423\u0440\u043e\u0432\u0435\u043d\u044c<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0422\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">7. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439<\/p>\n<\/td>\n<td rowspan=\"3\">\n<p align=\"center\">\u0414\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c<\/p>\n<\/td>\n<td>\n<p align=\"center\">HTTP, FTP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">6. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"center\">ASCII<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">5. \u0421\u0435\u0430\u043d\u0441\u043e\u0432\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0430\u043d\u0441\u043e\u043c \u0441\u0432\u044f\u0437\u0438<\/p>\n<\/td>\n<td>\n<p align=\"center\">RPC, PAP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">4. \u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0421\u0435\u0433\u043c\u0435\u043d\u0442\u044b \/ \u0414\u0430\u0442\u0430\u0433\u0440\u0430\u043c\u043c\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u044f\u043c\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c  <\/p>\n<\/td>\n<td>\n<p align=\"center\">TCP, UDP, SCTP, \u041f\u043e\u0440\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">3. \u0421\u0435\u0442\u0435\u0432\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0430\u043a\u0435\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"center\">IP, IPv6, ICMP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">2 .\u041a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0411\u0438\u0442\u044b \/ \u041a\u0430\u0434\u0440\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f  <\/p>\n<\/td>\n<td>\n<p align=\"center\">Ethernet, ARP, \u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">1. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0411\u0438\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0440\u0435\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438  <\/p>\n<\/td>\n<td>\n<p align=\"center\">USB, RJ<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0441\u0435\u043c\u0438\u0440\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u0430\u043c\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u0412\u0430\u0448 \u0440\u043e\u0443\u0442\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u0431\u0438\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c \u0438 \u043e\u043f\u0442\u043e\u0432\u043e\u043b\u043e\u043a\u043e\u043d\u043d\u044b\u043c \u043a\u0430\u0431\u0435\u043b\u044f\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439. \u041f\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c (\u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445) \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0443\u0436\u0435 \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u0430\u0431\u0435\u043b\u044c, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u041d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u0436\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u043c\u044b \u0435\u043c\u0443 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b. \u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 IP-\u0430\u0434\u0440\u0435\u0441: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c ICMP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u043d\u0430 \u043d\u0435\u043c \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0430\u0434\u043e\u0435\u043b\u043e \u043f\u0440\u043e \u043d\u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c) &#8212; \u0441\u0430\u043c\u044b\u0439-\u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. 80% \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e TCP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443. \u0422\u0443\u0442 \u0443\u0436\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u044b: \u043d\u0430 \u043d\u0438\u0445 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c \u0432\u0441\u0435\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ping \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u0430\u043a\u0435\u0442\u044b? \u041f\u043e ICMP. \u0414\u043b\u044f ICMP \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442, \u043b\u0438\u0448\u044c IP-\u0430\u0434\u0440\u0435\u0441. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 ICMP \u043f\u0430\u043a\u0435\u0442\u0430 \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 ICMP \u043f\u0430\u043a\u0435\u0442 &#8212; \u0437\u043d\u0430\u0447\u0438\u0442, \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c! \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 ping. \u041e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f vping (\u043e\u0447\u0435\u043d\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e).<\/p>\n<pre><code>user@mycomputer:~\/osi\/ping\/vping$ sudo .\/vping google.com [sudo] password for user: PING sending to 173.194.73.139 Data was sent... ttl = 104, seq = 1, time=19ms Data was sent... ttl = 104, seq = 2, time=20ms Data was sent... ttl = 104, seq = 3, time=20ms Data was sent... ttl = 104, seq = 4, time=92ms Data was sent... ttl = 104, seq = 5, time=20ms Data was sent... ttl = 104, seq = 6, time=19ms Data was sent... ttl = 104, seq = 7, time=20ms Data was sent... ttl = 104, seq = 8, time=52ms Data was sent... ttl = 104, seq = 9, time=24ms Data was sent... ttl = 104, seq = 10, time=24ms Data was sent... ttl = 104, seq = 11, time=24ms Data was sent... ttl = 104, seq = 12, time=22ms<\/code><\/pre>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435, \u043f\u043e\u0447\u0442\u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435! \u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">#include &lt;netinet\/ip_icmp.h> #include &lt;netinet\/in.h> #include &lt;sys\/socket.h> #include &lt;arpa\/inet.h> #include &lt;sys\/time.h> #include &lt;stdbool.h> #include &lt;stdlib.h> #include &lt;string.h> #include &lt;unistd.h> #include &lt;stdint.h> #include &lt;stdio.h> #include &lt;netdb.h>  typedef uint64_t u64; typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t  u8;  typedef int64_t i64; typedef int32_t i32; typedef int16_t i16; typedef int8_t  i8;<\/code><\/pre>\n<p>\u0414\u0430, \u0438\u0445 \u043d\u0435 \u043c\u0430\u043b\u043e. Typedef&#8217;\u044b \u044f \u0434\u0435\u043b\u0430\u044e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e main:<\/p>\n<pre><code class=\"cpp\">int main(int argc, char *argv[]) {   if (argc &lt; 2) {     fputs(\"Too few arguments!\\n\", stderr);     return -1;   }   ...<\/code><\/pre>\n<p>\u042f \u0432\u044b\u0432\u043e\u0436\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0439\u043f\u0438 \u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d. \u0417\u0430\u0442\u0435\u043c \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u043e\u043a\u0435\u0442:<\/p>\n<pre><code class=\"cpp\">  int fd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);   if (fd == -1) {     puts(\"Run with sudo!\");     return -1;   }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u043e\u043a\u0435\u0442 \u0441 \u0442\u0438\u043f\u043e\u043c SOCK_RAW. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 &#171;\u0441\u044b\u0440\u044b\u0435&#187; \u0441\u043e\u043a\u0435\u0442\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e TCP \u0438\u043b\u0438 UDP \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u043e\u0439, \u043a\u0430\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f! \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u0440\u0430\u0432 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u043f\u043e\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 sudo. \u042f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b IPPROTO_ICMP \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 ICMP \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u0442\u0438\u043f\u043e\u043c sockaddr_in, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0443\u0433\u043b\u0430):<\/p>\n<pre><code class=\"cpp\">  struct sockaddr_in dest;   fill_sockaddr_in(&amp;dest, argv[1]);<\/code><\/pre>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e argv[1] &#8212; \u044d\u0442\u043e IP-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 fill_sockaddr_in:<\/p>\n<pre><code class=\"cpp\">void fill_sockaddr_in(struct sockaddr_in *addr, char *ip) {   reset(*addr);   addr->sin_family = AF_INET;   int inet_ptoned = inet_pton(AF_INET, ip, &amp;addr->sin_addr.s_addr);   if (!inet_ptoned) {     char *new_ip = getipbydom(ip);     inet_pton(AF_INET, new_ip, &amp;addr->sin_addr.s_addr);     printf(\"PING sending to %s\\n\", new_ip);   } else if (inet_ptoned == -1) {     puts(\"IP isn't correct!\");     exit(-1);   } else {     printf(\"PING sending to %s\\n\", ip);   } }<\/code><\/pre>\n<p>\u041b\u0430\u0434\u043d\u043e, \u0442\u0443\u0442 \u0443\u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u043f\u0435\u0440\u0432\u0430 \u043c\u044b \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 reset. Reset &#8212; \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441:<\/p>\n<pre><code class=\"cpp\">#define reset(buf) memset(&amp;buf, 0, sizeof(buf))<\/code><\/pre>\n<p>\u0412 \u0441\u0442\u0440\u043e\u043a\u0435 3 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">  addr->sin_family = AF_INET;<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c AF_INET \u0438\u043b\u0438 PF_INET, \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u044b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0430\u0439\u043f\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">  ...    int inet_ptoned = inet_pton(AF_INET, ip, &amp;addr->sin_addr.s_addr);   if (!inet_ptoned) {     char *new_ip = getipbydom(ip);     inet_pton(AF_INET, new_ip, &amp;addr->sin_addr.s_addr);     printf(\"PING sending to %s\\n\", new_ip);   } else if (inet_ptoned == -1) {     puts(\"IP isn't correct!\");     exit(-1);   } else {     printf(\"PING sending to %s\\n\", ip);   } }<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u043a\u0430\u0437\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0439\u043f\u0438 (173.194.73.139) \u0434\u043e\u043c\u0435\u043d (google.com), \u0442\u043e \u043e\u043d\u0430 \u0435\u0433\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 sockaddr_in.<\/p>\n<p>\u0412 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getipbydom \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0432\u044b \u0438 \u0441\u0430\u043c\u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>\u0423\u0440\u0430, \u043c\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 sockaddr_in! \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0439\u043f\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f. \u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 &#8212; \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b ICMP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0438\u043f\u044b ICMP \u043f\u0430\u043a\u0435\u0442\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"right\">\u0422\u0438\u043f<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">0<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Echo Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">3<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Destination Unreachable<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">4<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Source Quench<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">5<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Redirect<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">8<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Echo<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">11<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Time Exceeded<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">12<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Parameter Problem<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">13<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Timestamp<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">14<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Timestamp Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">15<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Information Request<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">16<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Information Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0442\u0438\u043f\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432: Echo, Timestamp, Information Request. \u0412 \u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 Echo Reply, Timestamp Reply, Information Reply. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0430\u0437\u0430\u0434 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 Destination Unreachable, \u043d\u043e \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043b\u0430\u0442\u044c Echo \u043f\u0430\u043a\u0435\u0442, \u0442\u0430\u043a\u0438\u0435 \u0448\u043b\u044e\u0442 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043b\u044f Echo:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">Type<\/p>\n<\/td>\n<td>\n<p align=\"center\">Code<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">Checksum<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"175,0\" width=\"175\">\n<p align=\"center\">Identifier<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">Sequence Number<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\" data-colwidth=\"175,0,0,0\" width=\"175\">\n<p align=\"center\">Data (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0438\u043f \u0441\u0442\u0430\u0432\u0438\u043c 8 (\u0441\u043c. \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443). \u041a\u043e\u0434 \u0442\u043e\u0436\u0435 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c (\u043d\u0430\u043c \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0435\u043d). \u0427\u0435\u043a\u0441\u0443\u043c\u043c\u0443 \u043c\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c (\u0447\u0435\u043a\u0441\u0443\u043c\u043c\u0430 &#8212; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u0430). \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e getpid, \u043d\u0443 \u0430 Sequance (\u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e seq) \u0441\u0442\u0430\u0432\u0438\u043c \u0442\u043e\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c.<\/p>\n<p>\u0412\u043e\u0442 \u044d\u0442\u0430 \u043c\u0430\u043a\u0440\u043e\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 ICMP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a:<\/p>\n<pre><code class=\"cpp\">#define fill_icmphdr(icmph)                            \\   do {                                                 \\     icmph->type = 8;                                   \\     icmph->code = 0;                                   \\     icmph->checksum = 0;                               \\     icmph->un.echo.sequence = rand();                  \\     icmph->un.echo.id = getpid();                      \\     icmph->checksum = checksum(icmph, sizeof(*icmph)); \\   } while (0)<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0441\u043f\u0435\u0440\u0432\u0430 \u0447\u0435\u043a\u0441\u0443\u043c\u043c\u0443 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0436\u0435 \u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c. \u041b\u0438\u043d\u0443\u043a\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u043e\u0431\u043d\u0443\u043b\u0438\u043c.<\/p>\n<p>\u041e\u043f\u044b\u0442\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0437\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u043f\u0435\u0440\u0432\u0430 seq \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 1, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442 \u043f\u0430\u043a\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b seq \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438.<\/p>\n<p>\u0427\u0435\u043a\u0441\u0443\u043c\u043c\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">u16 checksum(void *b, i32 len) {     u16 *buf = b;     u32 sum = 0;      for (;len > 1; len -= 2)         sum += *(buf++);     if (len == 1)         sum += *(u8*) buf;      return ~((sum >> 16) + (sum &amp; 0xffff) + \\     (((sum >> 16) + (sum &amp; 0xffff)) >> 16)); }<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c ICMP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">  char buf[64];   reset(buf);    struct icmphdr *icmph = (struct icmphdr*) buf;   fill_icmphdr(icmph);<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0432\u044b\u0432\u043e\u0434 \u0443\u0442\u0438\u043b\u0438\u0442\u044b ping&#8230;<\/p>\n<pre><code>user@mycomputer:~$ ping google.com PING google.com (173.194.73.138) 56(84) bytes of data. 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=1 ttl=56 time=23.8 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=2 ttl=56 time=23.2 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=3 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=4 ttl=56 time=23.5 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=5 ttl=56 time=23.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=6 ttl=56 time=23.1 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=7 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=8 ttl=56 time=25.4 ms ^C --- google.com ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7013ms rtt min\/avg\/max\/mdev = 23.119\/23.877\/25.436\/0.728 ms<\/code><\/pre>\n<p>&#8230;\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u0441 \u0435\u0449\u0435 \u0438 \u043e seq (\u043d\u043e\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430), \u0438 \u043e ttl. \u041d\u043e \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 ttl? \u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a Time To Life, \u0438 \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0435\u0441\u0442\u044c \u0443 IP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430. \u041f\u0440\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u043e\u043d \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 64 (\u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f), \u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043f\u0430\u043a\u0435\u0442, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 1. \u041a\u043e\u0433\u0434\u0430 ttl \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c 0, \u043e\u043d \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442\u0441\u044f. \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0430\u0434\u043e? \u0427\u0442\u043e\u0431\u044b \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u043d\u0435 \u0431\u043b\u0443\u0436\u0434\u0430\u043b\u0438 \u0432\u0435\u0447\u043d\u043e.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 ttl = 56. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e, \u0434\u043e\u0445\u043e\u0434\u044f \u0434\u043e google.com, \u0443 \u043f\u0430\u043a\u0435\u0442\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f ttl = 56.<\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c ttl? \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u043d\u044b\u0439 ICMP \u043f\u0430\u043a\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0435\u043c IP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u0435 ttl:<\/p>\n<pre><code class=\"cpp\">int get_ttl(int fd) {   unsigned char buf[1024];   struct sockaddr_in reply;   socklen_t reply_len = sizeof(reply);   ssize_t read_bytes = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr *) &amp;reply, &amp;reply_len);   if (read_bytes &lt;= 0) {     return -1;   }    struct iphdr *iph = (struct iphdr*) buf;   return iph->ttl; }<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0448\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441 \u043d\u0438\u0445 ttl, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0432\u0440\u0435\u043c\u044f:<\/p>\n<pre><code class=\"cpp\">  ...     int seq = 1, ttl;   struct timeval start, end;   long mtime, seconds, useconds;    for (;;) {     gettimeofday(&amp;start, 0); \/* \u043d\u0430\u0447\u0430\u043b\u043e \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 *\/      send_pkt(fd, buf, icmph, dest);     ttl = get_ttl(fd);      gettimeofday(&amp;end, 0); \/* \u043a\u043e\u043d\u0435\u0446 \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 *\/      seconds = end.tv_sec - start.tv_sec;     useconds = end.tv_usec - start.tv_usec;     mtime = (seconds * 100 + useconds \/ 1000.0) + 0.5; \/* \u0440\u0430\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 *\/      printf(\"ttl = %d, seq = %d, time=%ldms\\n\", ttl, seq++, mtime);     usleep(1000000); \/* 1 second *\/   }    close(fd);   return 0;<\/code><\/pre>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e! \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 ping, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 ICMP, \u043a\u0430\u043a \u043e\u0442\u043e\u0441\u043b\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u043c\u0443 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 ttl.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0430, \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u043d\u0430 <a href=\"https:\/\/github.com\/valixxx1\/vping\" rel=\"noopener noreferrer nofollow\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<p><a href=\"https:\/\/github.com\/valixxx1\/vping\" rel=\"noopener noreferrer nofollow\">\u0422\u0430\u043c \u0436\u0435<\/a> \u043c\u043e\u0436\u0435\u0442\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/803149\/\"> https:\/\/habr.com\/ru\/articles\/803149\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u041e\u0421 Linux. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 ping \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438.<\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 ping \u0441\u0442\u043e\u0438\u0442 \u0432 Linux \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0430\u0439\u043f\u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 google.com \u0438\u043b\u0438 173.194.73.138):<\/p>\n<pre><code>user@mycomputer:~$ ping google.com PING google.com (173.194.73.138) 56(84) bytes of data. 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=1 ttl=56 time=23.8 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=2 ttl=56 time=23.2 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=3 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=4 ttl=56 time=23.5 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=5 ttl=56 time=23.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=6 ttl=56 time=23.1 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=7 ttl=56 time=24.3 ms 64 bytes from lq-in-f138.1e100.net (173.194.73.138): icmp_seq=8 ttl=56 time=25.4 ms ^C --- google.com ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7013ms rtt min\/avg\/max\/mdev = 23.119\/23.877\/25.436\/0.728 ms<\/code><\/pre>\n<p>\u041d\u043e \u0447\u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u0435\u043b\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d? \u041a\u043e\u043c\u0430\u043d\u0434\u0430 ping \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 \u0441\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 (google.com), \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442. \u0421\u043f\u0440\u0430\u0432\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 time, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>time = 23.8 ms<\/code><\/pre>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 time \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0437\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u0445\u043e\u0434\u044f\u0442 \u0434\u043e google.com \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u043a\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ping, \u0434\u043e\u0448\u0435\u043b \u0434\u043e \u0433\u0443\u0433\u043b\u0430 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0437\u0430 23.8 \u043c\u0441. \u0410 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0430\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c OSI:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"4\">\n<p align=\"center\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">\u0423\u0440\u043e\u0432\u0435\u043d\u044c<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0422\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">7. \u041f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439<\/p>\n<\/td>\n<td rowspan=\"3\">\n<p align=\"center\">\u0414\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0441\u043b\u0443\u0436\u0431\u0430\u043c<\/p>\n<\/td>\n<td>\n<p align=\"center\">HTTP, FTP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">6. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"center\">ASCII<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">5. \u0421\u0435\u0430\u043d\u0441\u043e\u0432\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0430\u043d\u0441\u043e\u043c \u0441\u0432\u044f\u0437\u0438<\/p>\n<\/td>\n<td>\n<p align=\"center\">RPC, PAP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">4. \u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0421\u0435\u0433\u043c\u0435\u043d\u0442\u044b \/ \u0414\u0430\u0442\u0430\u0433\u0440\u0430\u043c\u043c\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0440\u044f\u043c\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c\u0438 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c  <\/p>\n<\/td>\n<td>\n<p align=\"center\">TCP, UDP, SCTP, \u041f\u043e\u0440\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">3. \u0421\u0435\u0442\u0435\u0432\u043e\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041f\u0430\u043a\u0435\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"center\">IP, IPv6, ICMP<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">2 .\u041a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0411\u0438\u0442\u044b \/ \u041a\u0430\u0434\u0440\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f  <\/p>\n<\/td>\n<td>\n<p align=\"center\">Ethernet, ARP, \u0421\u0435\u0442\u0435\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"center\">1. \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0411\u0438\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"center\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0440\u0435\u0434\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438, \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 \u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438  <\/p>\n<\/td>\n<td>\n<p align=\"center\">USB, RJ<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u0441\u0435\u043c\u0438\u0440\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u0430\u043c\u044b\u0439 \u043d\u0438\u0436\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0439. \u0412\u0430\u0448 \u0440\u043e\u0443\u0442\u0435\u0440 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u0431\u0438\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0430\u043c \u0438 \u043e\u043f\u0442\u043e\u0432\u043e\u043b\u043e\u043a\u043e\u043d\u043d\u044b\u043c \u043a\u0430\u0431\u0435\u043b\u044f\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u044d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c &#8212; \u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439. \u041f\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c (\u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u043c \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043d\u043d\u044b\u0445) \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0443\u0436\u0435 \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043a\u0430\u0431\u0435\u043b\u044c, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443. \u041d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u0436\u0435 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u043c\u044b \u0435\u043c\u0443 \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b. \u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 IP-\u0430\u0434\u0440\u0435\u0441: \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c ICMP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (\u043d\u0430 \u043d\u0435\u043c \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0430\u0434\u043e\u0435\u043b\u043e \u043f\u0440\u043e \u043d\u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u044c) &#8212; \u0441\u0430\u043c\u044b\u0439-\u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. 80% \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e TCP \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443. \u0422\u0443\u0442 \u0443\u0436\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u044b: \u043d\u0430 \u043d\u0438\u0445 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u044b \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c \u0432\u0441\u0435\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ping \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u0430\u043a\u0435\u0442\u044b? \u041f\u043e ICMP. \u0414\u043b\u044f ICMP \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442, \u043b\u0438\u0448\u044c IP-\u0430\u0434\u0440\u0435\u0441. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 ICMP \u043f\u0430\u043a\u0435\u0442\u0430 \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 ICMP \u043f\u0430\u043a\u0435\u0442 &#8212; \u0437\u043d\u0430\u0447\u0438\u0442, \u0441\u0435\u0440\u0432\u0435\u0440 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d.<\/p>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c! \u042f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 ping. \u041e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f vping (\u043e\u0447\u0435\u043d\u044c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e).<\/p>\n<pre><code>user@mycomputer:~\/osi\/ping\/vping$ sudo .\/vping google.com [sudo] password for user: PING sending to 173.194.73.139 Data was sent... ttl = 104, seq = 1, time=19ms Data was sent... ttl = 104, seq = 2, time=20ms Data was sent... ttl = 104, seq = 3, time=20ms Data was sent... ttl = 104, seq = 4, time=92ms Data was sent... ttl = 104, seq = 5, time=20ms Data was sent... ttl = 104, seq = 6, time=19ms Data was sent... ttl = 104, seq = 7, time=20ms Data was sent... ttl = 104, seq = 8, time=52ms Data was sent... ttl = 104, seq = 9, time=24ms Data was sent... ttl = 104, seq = 10, time=24ms Data was sent... ttl = 104, seq = 11, time=24ms Data was sent... ttl = 104, seq = 12, time=22ms<\/code><\/pre>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435, \u043f\u043e\u0447\u0442\u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435! \u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438:<\/p>\n<pre><code class=\"cpp\">#include &lt;netinet\/ip_icmp.h> #include &lt;netinet\/in.h> #include &lt;sys\/socket.h> #include &lt;arpa\/inet.h> #include &lt;sys\/time.h> #include &lt;stdbool.h> #include &lt;stdlib.h> #include &lt;string.h> #include &lt;unistd.h> #include &lt;stdint.h> #include &lt;stdio.h> #include &lt;netdb.h>  typedef uint64_t u64; typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t  u8;  typedef int64_t i64; typedef int32_t i32; typedef int16_t i16; typedef int8_t  i8;<\/code><\/pre>\n<p>\u0414\u0430, \u0438\u0445 \u043d\u0435 \u043c\u0430\u043b\u043e. Typedef&#8217;\u044b \u044f \u0434\u0435\u043b\u0430\u044e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e main:<\/p>\n<pre><code class=\"cpp\">int main(int argc, char *argv[]) {   if (argc &lt; 2) {     fputs(\"Too few arguments!\\n\", stderr);     return -1;   }   ...<\/code><\/pre>\n<p>\u042f \u0432\u044b\u0432\u043e\u0436\u0443 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0437\u0430\u0431\u044b\u043b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0439\u043f\u0438 \u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d. \u0417\u0430\u0442\u0435\u043c \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u043e\u043a\u0435\u0442:<\/p>\n<pre><code class=\"cpp\">  int fd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);   if (fd == -1) {     puts(\"Run with sudo!\");     return -1;   }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u043e\u043a\u0435\u0442 \u0441 \u0442\u0438\u043f\u043e\u043c SOCK_RAW. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 &#171;\u0441\u044b\u0440\u044b\u0435&#187; \u0441\u043e\u043a\u0435\u0442\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e TCP \u0438\u043b\u0438 UDP \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u043e\u0439, \u043a\u0430\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f! \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u0440\u0430\u0432 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u043f\u043e\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 sudo. \u042f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b IPPROTO_ICMP \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 ICMP \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0441\u043e\u0437\u0434\u0430\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u0442\u0438\u043f\u043e\u043c sockaddr_in, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e IP-\u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0443\u0433\u043b\u0430):<\/p>\n<pre><code class=\"cpp\">  struct sockaddr_in dest;   fill_sockaddr_in(&amp;dest, argv[1]);<\/code><\/pre>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e argv[1] &#8212; \u044d\u0442\u043e IP-\u0430\u0434\u0440\u0435\u0441 \u0438\u043b\u0438 \u0434\u043e\u043c\u0435\u043d, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 fill_sockaddr_in:<\/p>\n<pre><code class=\"cpp\">void fill_sockaddr_in(struct sockaddr_in *addr, char *ip) {   reset(*addr);   addr->sin_family = AF_INET;   int inet_ptoned = inet_pton(AF_INET, ip, &amp;addr->sin_addr.s_addr);   if (!inet_ptoned) {     char *new_ip = getipbydom(ip);     inet_pton(AF_INET, new_ip, &amp;addr->sin_addr.s_addr);     printf(\"PING sending to %s\\n\", new_ip);   } else if (inet_ptoned == -1) {     puts(\"IP isn't correct!\");     exit(-1);   } else {     printf(\"PING sending to %s\\n\", ip);   } }<\/code><\/pre>\n<p>\u041b\u0430\u0434\u043d\u043e, \u0442\u0443\u0442 \u0443\u0436\u0435 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u043f\u0435\u0440\u0432\u0430 \u043c\u044b \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 reset. Reset &#8212; \u044d\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441:<\/p>\n<pre><code class=\"cpp\">#define reset(buf) memset(&amp;buf, 0, sizeof(buf))<\/code><\/pre>\n<p>\u0412 \u0441\u0442\u0440\u043e\u043a\u0435 3 \u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">  addr->sin_family = AF_INET;<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c AF_INET \u0438\u043b\u0438 PF_INET, \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u044b \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0430\u0439\u043f\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"cpp\">  ...    int inet_ptoned = inet_pton(AF_INET, ip, &amp;addr->sin_addr.s_addr);   if (!inet_ptoned) {     char *new_ip = getipbydom(ip);     inet_pton(AF_INET, new_ip, &amp;addr->sin_addr.s_addr);     printf(\"PING sending to %s\\n\", new_ip);   } else if (inet_ptoned == -1) {     puts(\"IP isn't correct!\");     exit(-1);   } else {     printf(\"PING sending to %s\\n\", ip);   } }<\/code><\/pre>\n<p>\u041f\u0440\u0438\u0447\u0435\u043c \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u043a\u0430\u0437\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0439\u043f\u0438 (173.194.73.139) \u0434\u043e\u043c\u0435\u043d (google.com), \u0442\u043e \u043e\u043d\u0430 \u0435\u0433\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0432 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 sockaddr_in.<\/p>\n<p>\u0412 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getipbydom \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0432\u044b \u0438 \u0441\u0430\u043c\u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>\u0423\u0440\u0430, \u043c\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 sockaddr_in! \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0439\u043f\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044f. \u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 &#8212; \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b ICMP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0438\u043f\u044b ICMP \u043f\u0430\u043a\u0435\u0442\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"right\">\u0422\u0438\u043f<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">0<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Echo Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">3<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Destination Unreachable<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">4<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Source Quench<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">5<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Redirect<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">8<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Echo<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">11<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Time Exceeded<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">12<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Parameter Problem<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">13<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Timestamp<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">14<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Timestamp Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">15<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Information Request<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043b\u0438\u0435\u043d\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"right\">16<\/p>\n<\/td>\n<td data-colwidth=\"234\" width=\"234\">\n<p align=\"left\">Information Reply<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0442\u0438\u043f\u0430 \u043f\u0430\u043a\u0435\u0442\u043e\u0432: Echo, Timestamp, Information Request. \u0412 \u0443\u0434\u0430\u0447\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 Echo Reply, Timestamp Reply, Information Reply. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0439\u0442\u0438 \u043d\u0430\u0437\u0430\u0434 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 Destination Unreachable, \u043d\u043e \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043b\u0430\u0442\u044c Echo \u043f\u0430\u043a\u0435\u0442, \u0442\u0430\u043a\u0438\u0435 \u0448\u043b\u044e\u0442 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u043b\u044f Echo:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<td>\n<p align=\"center\">1 \u0431\u0430\u0439\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"center\">Type<\/p>\n<\/td>\n<td>\n<p align=\"center\">Code<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">Checksum<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\" data-colwidth=\"175,0\" width=\"175\">\n<p align=\"center\">Identifier<\/p>\n<\/td>\n<td colspan=\"2\">\n<p align=\"center\">Sequence Number<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\" data-colwidth=\"175,0,0,0\" width=\"175\">\n<p align=\"center\">Data (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0422\u0438\u043f \u0441\u0442\u0430\u0432\u0438\u043c 8 (\u0441\u043c. \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443). \u041a\u043e\u0434 \u0442\u043e\u0436\u0435 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c (\u043d\u0430\u043c \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0435\u043d). \u0427\u0435\u043a\u0441\u0443\u043c\u043c\u0443 \u043c\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c (\u0447\u0435\u043a\u0441\u0443\u043c\u043c\u0430 &#8212; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u043a\u0435\u0442\u0430). \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044e getpid, \u043d\u0443 \u0430 Sequance (\u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e seq) \u0441\u0442\u0430\u0432\u0438\u043c \u0442\u043e\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c.<\/p>\n<p>\u0412\u043e\u0442 \u044d\u0442\u0430 \u043c\u0430\u043a\u0440\u043e\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 ICMP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a:<\/p>\n<pre><code class=\"cpp\">#define fill_icmphdr(icmph)                            \\   do {                                                 \\     icmph->type = 8;                                   \\     icmph->code = 0;                                   \\     icmph->checksum = 0;                               \\     icmph->un.echo.sequence = rand();                  \\     icmph->un.echo.id = getpid();                      \\     icmph->checksum = checksum(icmph, sizeof(*icmph)); \\   } while (0)<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043c\u044b \u0441\u043f\u0435\u0440\u0432\u0430 \u0447\u0435\u043a\u0441\u0443\u043c\u043c\u0443 \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u0436\u0435 \u0435\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c. \u041b\u0438\u043d\u0443\u043a\u0441 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u043e\u0431\u043d\u0443\u043b\u0438\u043c.<\/p>\n<p>\u041e\u043f\u044b\u0442\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0437\u0438\u0442\u044c, \u0447\u0442\u043e \u0441\u043f\u0435\u0440\u0432\u0430 seq \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u043e\u0432\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 1, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442 \u043f\u0430\u043a\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u044b seq \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438.<\/p>\n<p>\u0427\u0435\u043a\u0441\u0443\u043c\u043c\u0430 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">u16 checksum(void *b, i32 len) {     u16 *buf = b;     u32 sum = 0;      for (;len > 1; len -= 2)         sum += *(buf++);     if (len == 1)         sum += *(u8*) buf;      return ~((sum >> 16) + (sum &amp; 0xffff) + \\     (((sum >> 16) + (sum &amp; 0xffff)) >> 16)); }<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c ICMP<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-371905","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371905"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/371905\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}