ping 172.16.1.116 Pinging host 172.16.1.116 : 172.16.1.116 ping: No reply. Time Out !! ping: No reply. Time Out !! ping: No reply. Time Out !! ping: No reply. Time Out !! Host 172.16.1.116 replied to 0 of the 4 pings ready 12:26:32 |
telnet 172.16.1.116 1830 Trying... Connected to 172.16.1.116. Escape character is '^]'. |
telnet 172.16.1.116 1830 Trying... Connected to 172.16.1.116. Escape character is '^]'. telnet> quit |
On target system (Linux) [ndav@phx-lab-lnx64 ~]$ perl tcplisten.pl -p 1830 -m 'Connection has been accepted' perl tcplisten.pl -port 1830 -message 'Connection has been accepted' On OpenVOS client stp -ttp ascii ready 12:16:34 telnet 164.152.77.155 1830 Trying... Connected to 164.152.77.155. Escape character is '^]'. Connection has been accepted Escape character is '^]'.Connection closed by forei. Ready 12:16:40 |
On OpenVOS target system perl tcplisten.pl -p 1830 -m 'made it to m16' perl tcplisten.pl -port 1830 -message 'made it to m16' On Linux client [ndav@phx-lab-lnx64 ~]$ telnet 164.152.77.128 1830 Trying 164.152.77.128... Connected to rigel.az.stratus.com (164.152.77.128). Escape character is '^]'. made it to m16 Connection closed by foreign host. [ndav@phx-lab-lnx64 ~]$ |
telnet 172.16.1.116 1830 Trying... telnet: Unable to connect to remote host: The connection was refused. ready 12:31:28 |
telnet 172.16.1.116 1830 Trying... telnet: Unable to connect to remote host: Network trying to be reached is unreac +hable. ready 12:54:34 |
telnet 172.16.1.116 1830 Trying... telnet: Unable to connect to remote host: No route to host. ready 12:55:44 |
telnet 172.16.1.116 1830 Trying... telnet: Unable to connect to remote host: The operation timed out. |
메시지
|
의미
|
---|---|
연결(배너)
|
호스트 및 응용 프로그램에 도달 할 수 있습니다
|
연결(배너 없음)
|
호스트 및 응용 프로그램에 도달 할 수 있습니다 - 아마
|
거부
|
호스트에 도달할 수 있지만 응용 프로그램에 는 도달할 수 없습니다 - 아마
|
연결할
|
호스트에 연결할 수 없습니다.
|
타임 아웃
|
호스트에 연결할 수 없습니다 - 아마
|
perl tuc.pl -i 172.16.1.116 -p 1830 Reply received on UDP socket from 164.152.77.128 message: echoed by udpecho.pl: +sent by tuc.pl at Mon Aug 30 13:31:34 2010 ready 13:31:34 |
perl tuc.pl -i 172.16.1.116 -p 1830 ICMP Destination port unreachable message received from 172.16.1.116 ready 11:40:12 |
perl tuc.pl -i 172.16.1.116 -p 1830 ICMP Destination network unreachable message received from 164.152.77.171 ready 11:43:50 perl tuc.pl -i 172.16.1.116 -p 1830 ICMP Destination host unreachable message received from 164.152.77.171 ready 11:44:54 |
perl tuc.pl -i 172.16.1.116 -p 1830 ICMP Time exceeded , TTL expired in transit message received from 164.152.77.34 ready 11:45:39 |
perl tuc.pl -i 172.16.1.116 -p 1830 No response was received from 172.16.1.116 ready 16:43:26 |
perl tuc.pl -i 172.16.1.117 -p 1830 -t 10 No response was received from 172.16.1.117 ready 12:06:26 perl tuc.pl -i 172.16.1.117 -p 1830 -t 1 No response was received from 172.16.1.117 ready 12:06:32 |
메시지
|
의미
|
---|---|
응용 프로그램 배너 메시지
|
호스트 및 응용 프로그램에 도달 할 수 있습니다
|
ICMP 네트워크/호스트 메시지
|
호스트에 연결할 수 없습니다.
|
호스트의 ICMP 포트 메시지
|
호스트에 도달할 수 있지만 응용 프로그램은 할 수 없습니다.
|
응답이 없고 응용 프로그램에서 배너 메시지를 보냅니다.
|
호스트에 연결할 수 없습니다.
|
응답이 없고 응용 프로그램에서 배너 메시지를 보내지 않습니다.
|
호스트에 연락할 수도 있거나 연락하지 못할 수도 있습니다.
|
tcplisten.pl
# tcplisten.pl begins here
# # 버전 1.00 10-07-30 # 이 스크립트는 # 오픈 VOS 17.0.2ah 실행 펄 v5.8.0 i686-vos에 대 한 내장 # 마이크로 소프트 윈도우 XP 서비스 팩 3 실행 # MSWin32-x86 멀티 스레드를 위해 제작된 액티브스테이트 펄 v5.10.0 # 레드 햇 리눅스 4AS-5.5 실행 # 펄 v5.8.5 x86_64 리눅스 스레드 멀티내장 # # IO 사용::소켓; Getopt 사용::긴; Sys::Hostname; 엄격한 사용; 내 ($result); 내 ($localPort, $message, $peerAddr); 내 ($newSock, $data); $result = GetOptions('포트='의' => $localPort, '메시지=의' => $message); (($result != 1) || 정의($localPort)) { 인쇄 "nnUse:n"; 인쇄 "tperl tcplisten.pl -포트 번호 [메시지 메시지]nn"; 종료; } (!정의($message)) { "지정된 메시지 없음 – 메시지 생성"을 인쇄합니다. $message = "tcplisten에 실행에 의해 허용 된 연결" . 호스트 이름; } "펄 tcplisten.pl -포트 $localPort -메시지 '"를 인쇄합니다. $message . "'n"; 내 $sock = IO::소켓::INET->신규( 프로토 => 'tcp', 로컬포트 => $localPort, 로컬애더 => '0.0.0.0', 듣기 => 1, ) 또는 죽는 "포트 $localPort 대한 소켓을 만들 수 없습니다 : $!n"; 동안 (1) { 내 $newSock = $sock->수락 (); 인쇄 "연결에서 허용" . $newSock->피어호스트 . " 현지 시간 () . "n"; 인쇄 $newSock $message. "n"; $newSock -> 종료(2); $sock->읽기($data, 1024); # 가까운 표시를 얻기 위해 기다립니다 */ $newSock->닫기(); } # # tcplisten.pl 여기서 끝납니다. |
tuc.pl
# tuc.pl begins here
# # 버전 1.00 10-07-30 # 이 스크립트는 # 오픈 VOS 17.0.2ah 실행 펄 v5.8.0 i686-vos에 대 한 내장 # 마이크로 소프트 윈도우 XP 서비스 팩 3 실행 # MSWin32-x86 멀티 스레드를 위해 제작된 액티브스테이트 펄 v5.10.0 # 레드 햇 리눅스 4AS-5.5 실행 # 펄 v5.8.5 x86_64 리눅스 스레드 멀티내장 # # IO 사용::소켓; IO 사용::선택; Getopt 사용::긴; 엄격한 사용; 내 ($result); 내 ($destIP, $destPort, $timeout, $result, $message, $flags); 내 ($ready, $socket); 내 ($x, $c, $icmpAlready); $result = GetOptions('ip='s' => $destIP, '포트=s' => $destPort, '시간 시간 =의' => $timeout); (($result != 1) || 정의($destIP) 및 정의($destPort)) { 인쇄 "nnUse:n"; 인쇄 "tperl tuc.pl -ip 대상 IP 주소" . "포트 목적지-포트-눔베인"; 종료; } if (!defined($timeout)) { $timeout = 5; } 엘시프 ($timeout > 15) { 인쇄 "OK,하지만" . $timeout . "비합리적으로 긴 것 같다"; } $message = "에서 tuc.pl 의해 전송 " . 현지 시간 (); 내 $sock = IO::소켓::INET->신규( 프로토 => 'udp', 피어포트 => $destPort, 피어애르 => $destIP ) 또는 죽는 "목적지 $destIP 대한 소켓을 만들 수 없습니다 : $!n"; 내 $isock = IO::소켓::INET->신규( 프로토 => 'icmp'); $sock->보내기($message) 또는 죽는 "오류 보내기: $!n"; $message = ""; 내 $read_set = 새 IO::선택(); $read_set->추가($sock); $read_set->추가($isock); ($ready) = IO::select->선택($read_set, undef, undef, $timeout); $icmpAlready = 0; $c = 0; $socket (@$ready) { $c = $c + 1; ($socket == $sock) { $x = "UDP 소켓에서 받은 회신"; $socket->recv($message, 100, $flags); ($icmpAlready == 0) { (길이($message) > 0) { print $x . $socket->peerhost . ” message: ” . $message . “n”; } else { print $x . $socket->peerhost . “n”; } } } 다른 # icmp 메시지가 수신 { $icmpAlready = 1; $socket->recv($message, 100, $flags); (길이($message) > 98) { 인쇄 "예기치 않게 긴 (". 길이 ($message) . ") "에서 ICMP 메시지 " $socket->피어호스트 . " 메시지 : " $message . "n"; } elsif (length ($message) < 52) { 인쇄 "exexpecedly 짧은 (" . 길이 ($message) . ") "에서 ICMP 메시지 " $socket->피어호스트 . "n"; } 다른 # 프로세스 icmp 메시지 { 내 $type = 성(서브스트 ($message, 20, 1)); 내 $code = 성(서브스트 ($message, 21, 1)); 내 $port = 성 (substr ($message, 50, 1)) * 256 + 오드 (서브스트스트 ($message, 51, 1)); ($port != $destPort) { 인쇄 "예기치 않은 ICMP 메시지에서 받은" . $socket->피어호스트 . " 메시지 : " 서브스트 ($message, 20) . "n"; } 다른 # icmp 메시지는 좋다 { ($type == 3) { ($code == 0) { 인쇄 "ICMP 대상 네트워크" . "에서 받은 도달 할 수없는 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 1) { 인쇄 "ICMP 대상 호스트" . "에서 받은 도달 할 수없는 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 3) { 인쇄 "ICMP 대상 포트" . "에서 받은 도달 할 수없는 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 6) { 인쇄 "ICMP 대상 네트워크" . "알 수 없는 메시지로부터 수신 " . $socket->피어호스트 . "n"; } elsif ($code == 7) { 인쇄 "ICMP 대상 호스트 알 수없는" . "로부터 받은 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 8) { 인쇄 "ICMP 소스 호스트 격리" . "로부터 받은 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 9) { 인쇄 "ICMP 네트워크 관리적으로" . "로부터 수신 금지 된 메시지 " . $socket->피어호스트 . "n"; } elsif ($code == 10) { 인쇄 "ICMP 호스트 관리" . "로부터 수신 금지 된 메시지 " . $socket->피어호스트 . "n"; } elsif ($code == 11) { 인쇄 "ICMP 네트워크에 연결할 수 없습니다" . "에서 받은 TOS 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 12) { 인쇄 "ICMP 호스트에 도달 할 수 없습니다" . "에서 받은 TOS 메시지 " $socket->피어호스트 . "n"; } elsif ($code == 13) { 인쇄 "ICMP 통신" . "행정금지 메시지로부터 수신 " $socket->피어호스트 . "n"; } 기타 { 인쇄 "예기치 않은 ICMP 메시지가 받은 유형 = " $type . ", 코드 = " $code . " 에서 " . $socket->피어호스트 . "n"; } } #if ($type == 3) elsif((($type == 11) 및 ($code ===0)) { 인쇄 "ICMP 시간을 초과, TTL은 전송 만료 " . "로부터 받은 메시지 " $socket->피어호스트 . "n"; } 기타 { 인쇄 "예기치 않은 ICMP 메시지가 받은 유형 = " $type . ", 코드 = " $code . " 에서 " . $socket->피어호스트 . "n"; } } # 다른 # icmp 메시지는 좋다 } 다른 # 프로세스 icmp 메시지 } # 다른 #icmp 메시지가 수신 } # 포지엄 $socket (@$ready) ($c == 0) { 인쇄 "응답이 수신되지 않은 경우" . $sock->피어호스트 . "n"; } # # tuc.pl 여기서 끝납니다. |
udpecho.pl
# udpecho.pl begins here
# # 버전 1.00 10-07-30 # 이 스크립트는 # 오픈 VOS 17.0.2ah 실행 펄 v5.8.0 i686-vos에 대 한 내장 # 마이크로 소프트 윈도우 XP 서비스 팩 3 실행 # MSWin32-x86 멀티 스레드를 위해 제작된 액티브스테이트 펄 v5.10.0 # 레드 햇 리눅스 4AS-5.5 실행 # 펄 v5.8.5 x86_64 리눅스 스레드 멀티내장 # # IO 사용::소켓; IO 사용::선택; Getopt 사용::긴; 엄격한 사용; 내 ($result); 내 ($localPort, $debug, $result, $message, $flags); 내 ($ready, $socket); 내 ($x, $c); $result = GetOptions('포트='의' => $localPort, '디버그' => $debug); (($result != 1) || 정의($localPort)) { 인쇄 "nnUse:n"; 인쇄 "tperl udpecho.pl -포트 로컬 포트 번호 [디버그]nn"; 종료; } if (defined($debug)) { print “local port number is ” . $localPort . “n”; } 내 $sock = IO::소켓::INET->신규( 프로토 => 'udp', 로컬포트 => $localPort ) 또는 죽는 "소켓을 만들 수 없습니다 $!n"; 내 $read_set = 새 IO::선택(); $read_set->추가($sock); $message = ""; 동안 (1) { ($ready) = IO::select->선택($read_set, undef, undef, 300); $socket (@$ready) { $socket->recv($message, 100, $flags); (정의($debug)) { 인쇄 "메시지" $socket > 피어호스트. " 메시지 : " $message . "n"; } $socket->보내기("udpecho.pl 메아리: " $message) 또는 죽는 "오류 보내기: $! +n"; } } # # udpecho.pl 여기서 끝납니다. |