2012-07-11 3 views
6

가능한 중복 : TCP/IP 원시 소켓에 MSDN 기사에서
Why does ping work without administrator privileges?어떻게 ping이 Windows에서 관리자 권한을 필요로하지 않습니까?

:

... 유형의 몇 가지 소켓을 이해하는 것이 중요합니다 SOCK_RAW는 많은 예기치 않은 데이터 그램을 수신 할 수 있습니다. 예를 들어, PING 프로그램은

이 구절은 ICMP 핑을 수행하기 위해, 하나는 Windows에서 원시 소켓을 사용해야 함을 시사한다 .... ICMP 에코 요청을 보내고 응답을받을 수있는 타입 SOCK_RAW의 소켓을 만들 수 있습니다 플랫폼. 그러나 동일한 기사는 말한다 :

참고 :가 SOCK_RAW는 관리자 권한이 필요 타입의 소켓을 사용합니다. 원시 소켓 을 사용하는 Winsock 응용 프로그램을 실행하는 사용자는 로컬 컴퓨터에서 Administrators 그룹의 구성원이어야합니다. 그렇지 않으면 원시 소켓 호출이 WSAEACCES라는 오류 코드와 함께 실패합니다. Windows Vista 이상에서는 원시 소켓에 대한 액세스가 소켓 생성시 적용됩니다. 이전 버전의 Windows에서는 원시 소켓에 대한 액세스가 다른 소켓 작업 중에 적용됩니다.

나는 확실히 ping 다른 호스트의 관리자 일 필요가 없습니다. ping.exe도 특별한 대우를 받습니까? 원시 소켓을 사용합니까? 아니면 내가 놓친 다른 것이 있습니까?

+3

아마도'ping'이 원시 소켓을 사용하고 있지 않습니까? –

+0

"이 절은 ICMP 핑을 수행하기 위해 Windows 플랫폼에서 원시 소켓을 사용해야 함을 의미합니다. -- 아니 그렇지 않아. – tenfour

+0

@tenfour 네 말이 맞아, * 의미가 너무 강하다. – Tibor

답변

5

Uwe가 언급했듯이 ping은 원시 소켓을 사용하지 않습니다. IcmpSendEcho 또는 IcmpSendEcho2이라는 에코 요청을 보내는 특정 API를 사용합니다.

Dependency Walkerc:\windows\system32\ping.exe에 직접 표시 할 수 있습니다.

+2

나는 진짜 이유가 역사라고 기대한다. 유닉스 기반 시스템에서 ping은 종종 사용자가 특수한 그룹에 있어야하거나 더 일반적으로 ping 프로그램이 그 그룹으로 실행하기위한 특별한 비트를 가지고있다 (그러나 내부적으로 일반 사용자가 핑 홍수를 생성하는 것을 허용하지 않는다). Windows는 사용자 계정이나 권한의 개념이없는 이전 Windows 버전을 상속하므로 사용자들 사이에서 핑이 작동해야한다는 기대가 있습니다. –

관련 문제