рдпреВрдбреАрдкреА рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рддрд░рдг рд╕рдорд╕реНрдпрд╛

рдЫрд╡рд┐
рдиреАрдЪреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ udp рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдЕрдиреБрд╡рд╛рджрдХ рдиреЗ рдЦреБрдж рдХреЛ рдЙрджрд╛рд╣рд░рдг рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА: рд╕реНрд░реЛрдд рдкрд╛рда рдореЗрдВ, рдЕрдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрддреЗ рдФрд░ рд░реВрдмреА рдХреЛрдбред рдЕрдиреБрд╡рд╛рдж рдиреЗ рдореЛрддреА рдкрд░ рдПрдХ рд╕рд░рд▓ рд▓рд┐рдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ (рдХреЛрд╖реНрдардХ рдореЗрдВ, рдЗрдЯреИрд▓рд┐рдХ рдореЗрдВ) рдЬреЛрдбрд╝реА рдЧрдИрдВред
рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ " learnyousomeerlang.com " рдХреЗ рдкрд╛рда рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рд▓реНрдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдХрдбрд╝реА рдореЗрд╣рдирдд



рдХрднреА-рдХрднреА рдРрд╕рд╛ рд▓рдЧрдиреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЙрд╕ рдкреВрд░реА рдЧрдбрд╝рдмрдбрд╝реА рдХреЛ рд╕рд╣реА рдирд╣реАрдВ рдард╣рд░рд╛рддреЗ рдЬреЛ рд╡реЗ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдЬрдм рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рдЬрдм рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд░реЛрдз рд╡рд╛рд▓рд╛ рдпреВрдбреАрдкреА рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЙрд░реНрдл рдпрд╛ рдорд╛рдзреНрдпрдорд┐рдХ рдЖрдИрдкреА) рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдИрдкреА рдкрддреЗ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ eth1 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ:
$ ip a add 192.168.1.235/24 dev eth1 && ip a ls dev eth1 2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:30:84:9e:95:60 brd ff:ff:ff:ff:ff:ff inet 192.168.1.47/24 brd 192.168.1.255 scope global eth1 inet 192.168.1.235/24 scope global secondary eth1 inet6 fe80::230:84ff:fe9e:9560/64 scope link valid_lft forever preferred_lft forever 


рдЖрдорддреМрд░ рдкрд░ udp рджреНрд╡рд╛рд░рд╛ рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЧреВрдВрдЬ рд╕рд░реНрд╡рд░ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдПрдХ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:
echo_server.pl
 #!/usr/bin/perl use IO::Socket::INET; # flush after every write $| = 1; my ($socket,$received_data); my ($peeraddress,$peerport); $socket = new IO::Socket::INET ( MultiHomed => '1', LocalAddr => $ARGV[0], LocalPort => defined ($ARGV[1])?$ARGV[1]:'5000', Proto => 'udp' ) or die "ERROR in Socket Creation : $! \n"; print "Waiting for data..."; while(1) { $socket->recv($recieved_data,1024); $peer_address = $socket->peerhost(); $peer_port = $socket->peerport(); chomp($recieved_data); print "\n($peer_address , $peer_port) said : $recieved_data"; #send the data to the client at which the read/write operations done recently. $data = "echo: $recieved_data\n"; $socket->send("$data"); } $socket->close(); 



рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдореЛрддреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ udp рдкреИрдХреЗрдЯ рдХрд┐рд╕рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдкреИрдХреЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ, рдФрд░ рдкреИрдХреЗрдЯ рдХреЛ рдкреНрд░реЗрд╖рдХ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрддрд╛ рд╣реИред рдХрд╣реАрдВ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЕрдм рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдВ:
 $ ./echo_server.pl Waiting for data... 

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рд╕реБрдирддрд╛ рд╣реИ:
 $ netstat -unpl | grep perl udp 0 0 0.0.0.0:5000 0.0.0.0:* 9509/perl 

рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рд╛рдердорд┐рдХ рдЖрдИрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдореЛрдЯ рдорд╢реАрди рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
 -bash-3.2$ nc -u 192.168.1.47 5000 test1 echo: test1 test2 echo: test2 

рдпрд╣ рд╣рдорд╛рд░реА рдорд╢реАрди рдкрд░ tcpdump рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдЗрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП):
 -bash-3.2$ tcpdump -i eth1 -nn port 5000 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 17:41:00.517186 IP 192.168.3.11.44199 > 192.168.1.47.5000: UDP, length 6 17:41:00.517351 IP 192.168.1.47.5000 > 192.168.3.11.44199: UDP, length 12 17:41:02.307634 IP 192.168.3.11.44199 > 192.168.1.47.5000: UDP, length 6 17:41:02.307773 IP 192.168.1.47.5000 > 192.168.3.11.44199: UDP, length 12 

рдмрд╕ рд╢рд╛рдирджрд╛рд░ - рдореИрдВ рдкреИрдХреЗрдЬ рднреЗрдЬрддрд╛ рд╣реВрдВ рдФрд░ рдкреИрдХреЗрдЬ рд╡рд╛рдкрд╕ рд▓реЗрддрд╛ рд╣реВрдВред рдиреЗрдЯрдХреИрдЯ рдореЗрдВ, рд╣рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк "рддреАрд░" рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдкреНрд░рднрд╛рд╡)ред

рдФрд░ рдЕрдм рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рджреНрд╡рд┐рддреАрдпрдХ рдкрддреЗ рдХреА рдмрд╛рдд:
 -bash-3.2$ nc -u 192.168.1.235 5000 test1 test2 

рдЗрд╕ рдмрд╛рд░ tcpdump рдореЗрдВ рдпрд╣ рдкрд╛рдЧрд▓рдкрди рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ:
 -bash-3.2$ tcpdump -i eth1 -nn port 5000 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 17:48:32.467167 IP 192.168.3.11.34509 > 192.168.1.235.5000: UDP, length 6 17:48:32.467292 IP 192.168.1.47.5000 > 192.168.3.11.34509: UDP, length 12 17:48:33.667182 IP 192.168.3.11.34509 > 192.168.1.235.5000: UDP, length 6 17:48:33.667332 IP 192.168.1.47.5000 > 192.168.3.11.34509: UDP, length 12 


рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рднреА рд╕реНрд╡рд╛рднрд┐рдорд╛рдиреА рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рдкрддреЗ рд╕реЗ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдкреЛрд░реНрдЯ рд╕рд╣реА рд╣реЛрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрднреА рднреА рд░рд┐рдЯрд░реНрди рдкреИрдХреЗрдЯ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рдпрд╣ рд╕реЛрдЪреЗрдЧрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЬреЛ рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рдмрдХрд╡рд╛рд╕ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рддреНрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджреЛрд╖ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпреВрдбреАрдкреАред рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рд╕реЙрдХреЗрдЯ рдХрд┐рд╕реА рднреА рдкрддреЗ рдкрд░ рд╕реБрдирддрд╛ рд╣реИ (рдЦрд╛рд▓реА рд▓реЛрдХрд▓ рдПрдбреНрд░реИрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ "0.0.0.0" рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реЙрдХреЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдХреЛрдИ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛ, рдЬреЛ рд╕реЙрдХреЗрдЯ рдХреЛ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдкрддреЗ рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред рдФрд░ рдирд╣реАрдВ, рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рдЬ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЬрдм рд╣рдо рд╕реЙрдХреЗрдЯ-> recv () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рдХреЛ рдХрд┐рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкреИрдХреЗрдЬ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдерд╛ (рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╣реИ)ред рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдХрд░реНрдиреЗрд▓ рд╕реЙрдХреЗрдЯ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХрд░реНрдиреЗрд▓ рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдЧрд╛), рдЬрдм рдкреИрдХреЗрдЯ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╕рднреА рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЯ рдХреЛ рдХрд╣рд╛рдВ рднреЗрдЬрдирд╛ рд╣реИред (рдореЛрддреА рдореЗрдВ, рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдХреЗ рдкреНрд░реЗрд╖рдХ рдХрд╛ рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ $ рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреЙрд▓ рдХреЙрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдкрд╣реЗрд▓реА рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрдм рд╣рдо рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдкрддреЗ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ: рдХрд░реНрдиреЗрд▓ рдкреНрд░реЗрд╖рдХ рдпрд╛ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдмрд┐рдирд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЬрдм рд╕реЗ рд╣рдо "рдХрд┐рд╕реА рднреА" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЙрд╕ рдкрддреЗ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдЯреЗ рдмреНрд▓реИрдВрдЪ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ "рдкрд╕рдВрдж" рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрд╕рдХрд╛ рдореБрдЦреНрдп рдкрддрд╛ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред (рджрд░рдЕрд╕рд▓, рдкрддрд╛ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ - рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рдиреЛрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрддрд╛ RFC1122, 3.3.4.2 "рдорд▓реНрдЯреАрд╣реЛрдорд┐рдВрдЧ рд░рд┐рдХреНрд╡рд╛рдпрд░рдореЗрдВрдЯреНрд╕" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) ред рддреЛ "рдПрдХ рдкрддреЗ - рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП - рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧрддреА рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рд╕реЙрдХреЗрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЗ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВред рдФрд░ рдЗрди рд╕реЙрдХреЗрдЯ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЯ рднреЗрдЬреЗрдВ: рдХрд░реНрдиреЗрд▓ рдХреЛ рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкрддреЗ рд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛? рдареАрдХ рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдХрд┐рд╕реА рднреА рд╕рдордЭрджрд╛рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдХрд┐, рд╣реБрд╣? рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд░реВрдмреА рдореЗрдВ рдпреВрдбреАрдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рдмрдХрд╡рд╛рд╕ рд╣реИ (рдореВрд▓ рдореЗрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдорд╛рдгрд┐рдХ рдореЗрдВ рд╣реИ, рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ;) ред рдпрд╣реА рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рд╣реА рд╕реЛрдЪрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗрддрд╛ред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд░реВрдмреА рдХреЗ рдпреВрдбреАрдкреАрдПрд╕рдХреЗрдЯ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд╕рд╛рде рдпреБрджреНрдз рдХреЗ рд░реБрдмрд┐рдХрди рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдирдПрдордкреАрдбреАред рдЙрдмрдВрдЯ рдореЗрдВ рдиреЗрдЯ-рд╕реНрдиреИрдореНрдк рдкреИрдХреЗрдЬ рд╕реЗ рдбреЗрдорди рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдзреАрди рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ рдКрдкрд░ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдирдИ рд░реЗрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдФрд░ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдмрд┐рдЦрд░реЗ рд╣реБрдП рд╣реИрдВред
рддреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рд░ рдХреЛрдИ рдПрдХ рд╣реА "рдмреАрдорд╛рд░реА" рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реЛрддрд╛ рд╣реИред "рд╣рд░ рдХреЛрдИ" рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХреБрдЫ рдпреВрдбреАрдкреА рд╕рд░реНрд╡рд░ред" рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЙрдкрдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИред рдмрд┐рдВрдж рддреБрд░рдВрдд рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдирдЯреАрдкреА рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ? рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕реЗрд╡рд╛рдПрдБ рдХреБрдЫ рд╣рдж рддрдХ "рд╕реНрдорд╛рд░реНрдЯ" рд╣реИрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рдкрддреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдБрдзрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдБрдз:
 $ netstat -lun |grep :53 udp 0 0 192.168.1.47:53 0.0.0.0:* udp 0 0 192.168.1.47:53 0.0.0.0:* udp 0 0 127.0.0.1:53 0.0.0.0:* 

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЕрдкрд╡рд╛рдж рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдбреЗрдорди рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдирд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред Bind рдПрдХ рдирдпрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдВрджрд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдкрд░ рдЗрд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЪрдпрди () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред) рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрдИ рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрд╕рд▓реА рд╕рдорд╕реНрдпрд╛ "рдбреЗрдореЙрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкрддреЗ рди рдЬреЛрдбрд╝реЗрдВ" рдирд┐рдпрдо рд╣реИред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрдИрдкреА рдкрддреЗ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдФрд░ рдкрддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рдПрдЧреАред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рднреА рд╣реИред рдпрд╣рд╛рдБ рд╣рдо ntpd рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рдЬрд┐рди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
 $ netstat -nlup | grep 123 udp 0 0 192.168.1.235:123 0.0.0.0:* udp 0 0 192.168.1.47:123 0.0.0.0:* udp 0 0 127.0.0.3:123 0.0.0.0:* udp 0 0 127.0.0.1:123 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp6 0 0 fe80::230:84ff:fe9e:123 :::* udp6 0 0 ::1:123 


NTPd рдкреНрд░рддреНрдпреЗрдХ рдкрддреЗ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдХрд┐рд╕реА рднреА рдкрддреЗ рдкрд░ рд╕реБрдирддрд╛ рд╣реИред рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкрддреЗ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реБрдирддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдБрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк ntpd рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдкрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ udp-echo рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдХрд┐рд╕реА рднреА" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реБрдирдиреЗ рд╕реЗ рдХреЛрдИ рдкреНрд▓рд╕ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ ntpd рдХреЛ рдмрд┐рдВрдж рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдЬрдм рдЖрдк рдмрд┐рдВрдж рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝реЗ рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдПрдХ рдкреИрдХреЗрдЯ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╕ рдЖрдкрдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ)ред Ntpd рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдПрдХ рдЧрд▓рдд рдкрддреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИред (рд▓реЗрдХрд┐рди рдЖрдк рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХ рдкрддреЗ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреБрд╡рд╛рджрдХ рдХреЛ рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдлрд┐рд▓рд╣рд╛рд▓, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рдВрдж рдФрд░ ntpd рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ рдФрд░ ntpd рд╕реЗ "рдлрд╝реЛрдХрд╕" рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рднреА рдкрддреЗ рд╕реБрдиреЗрдВ: рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ 0.0.0.0 рддрдХ рд╕реБрдиреЗрдВред рдЙрд╕реА рд╕рдордп, рдЕрдЧрд░ рдореБрдЭреЗ 0.0.0.0 рдкрд░ рдПрдХ рдкреИрдХреЗрдЯ рдорд┐рд▓рд╛, рддреЛ рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкрддреЗ рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдмрд╛рдВрдзрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ (рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣рд▓ рдХрд░реЗрдВ рдЬреЛ рд╕рдВрднрд╡рддрдГ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдПрдВрдЧреЗ)ред рдореЗрд░реА рд╢реБрднрдХрд╛рдордирд╛рдПрдВред рджрд░реНрдж рдФрд░ рдкреАрдбрд╝рд╛ рдХреА рдЪреАрдЦ рдЬреЛ рдЖрдк рд╕реБрдирддреЗ рд╣реИрдВ (рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рд╣реИрдВ) рд╢рд╛рдпрдж рдореЗрд░реА рд╣реИрдВред

UPD: рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ Quasar_ru рд╕реЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡реНрдпрд╛рдЦреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреАред рд╕рднреА рд╕рдорд╛рди, рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдпреВрдбреАрдкреА рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╢реБрджреНрдз рд╕реА рдореЗрдВ, рдЖрдк рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкрддреЗ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд╛рдн рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрднрд╡ рд╣реИред

Source: https://habr.com/ru/post/In146922/


All Articles