WoL(Wake-on-LAN) 컴퓨터가 네트워크 메시지에 의해 켜지거나 깨어날 수 있도록 하는 이더넷 또는 토큰 링 컴퓨터 네트워킹 표준입니다.
- 메시지는 일반적으로 스마트폰과 같이 동일한 근거리 통신망에 연결된 장치에서 실행되는 프로그램에 의해 대상 컴퓨터로 전송됩니다.
- 서브넷 지향 브로드캐스트나 WOL 게이트웨이 서비스를 사용하여 다른 네트워크에서 메시지를 시작하는 것도 가능합니다.
- 동등한 용어로는 WAN에서 깨우기 LAN으로 원격 깨우기 전원 켜기 LAN으로 전원 켜기 LAN으로 재개 LAN에서 재개 및 LAN에서 깨우기 등이 있습니다.
작동 원리
str을 int로
- Wake-on-LAN('WOL')은 깨어나려는 컴퓨터 중 네트워크에 있는 모든 컴퓨터로 전송되는 매직 패킷이라는 특별히 설계된 패킷을 사용하여 구현됩니다.
- 매직 패킷에는 대상 컴퓨터의 MAC 주소, 각 네트워크 인터페이스 카드('NIC') 또는 컴퓨터의 기타 이더넷 장치에 내장된 식별 번호가 포함되어 있어 네트워크에서 고유하게 인식되고 주소가 지정될 수 있습니다.
- Wake-on-LAN이 가능한 전원이 꺼졌거나 꺼진 컴퓨터에는 시스템 전원이 꺼진 동안 저전력 모드에서 들어오는 패킷을 '수신'할 수 있는 네트워크 장치가 포함됩니다.
- 장치의 MAC 주소로 전달되는 매직 패킷이 수신되면 NIC는 컴퓨터의 전원 공급 장치나 마더보드에 신호를 보내 전원 버튼을 누르는 것과 동일한 방식으로 시스템 깨우기를 시작합니다.
- 매직 패킷은 데이터 링크 계층(OSI 모델의 계층 2)에서 전송되며, 전송되면 네트워크 브로드캐스트 주소를 사용하여 특정 네트워크에 연결된 모든 장치에 브로드캐스트됩니다. IP 주소(OSI 모델의 계층 3)는 사용되지 않습니다.
Wake-on-LAN이 작동하려면 네트워크 인터페이스의 일부가 켜져 있어야 합니다. 이는 정상 작동 전력보다 훨씬 적은 양의 대기 전력을 소비합니다. 따라서 필요하지 않을 때 Wake-on-LAN을 비활성화하면 전원이 꺼져 있지만 여전히 전원 소켓에 연결되어 있는 컴퓨터의 전력 소비를 약간 줄일 수 있습니다.
매직 패킷 구조
매직 패킷은 페이로드 내에서 전체 255개(16진수로 FF FF FF FF FF FF)의 6바이트와 그 뒤를 이어 대상 컴퓨터의 48비트 MAC 주소를 16번 반복하여 총 102바이트를 포함하는 브로드캐스트 프레임입니다.
매직 패킷은 위의 문자열에 대해서만 스캔되고 전체 프로토콜 스택에 의해 실제로 구문 분석되지 않기 때문에 일반적으로 포트 0 7 또는 9에 UDP 데이터그램으로 전송되거나 EtherType 0x0842로 이더넷을 통해 직접 전송되지만 네트워크 및 전송 계층 프로토콜로 전송될 수 있습니다.
숨겨진 앱
표준 매직 패킷에는 다음과 같은 기본 제한 사항이 있습니다.
- 대상 컴퓨터 MAC 주소가 필요합니다(SecureOn 비밀번호도 필요할 수 있음).
- 배송 확인을 제공하지 마세요.
- 로컬 네트워크 외부에서는 작동하지 않을 수 있습니다.
- 대상 컴퓨터에서 Wake-On-LAN에 대한 하드웨어 지원이 필요합니다.
- 대부분의 802.11 무선 인터페이스는 저전력 상태에서 링크를 유지하지 않으며 매직 패킷을 수신할 수 없습니다.
Wake-on-LAN 구현은 매우 간단하고 최소한의 전력 요구 사항으로 네트워크 인터페이스 카드에 있는 회로에 의해 신속하게 처리되도록 설계되었습니다. Wake-on-LAN은 IP 프로토콜 계층 아래에서 작동하기 때문에 MAC 주소가 필요하며 이로 인해 IP 주소와 DNS 이름이 의미가 없게 됩니다.
C// C program to remotely Power On a PC over the // internet using the Wake-on-LAN protocol. #include #include #include #include #include #include #include #include int main() { int i; unsigned char toSend[102]mac[6]; struct sockaddr_in udpClient udpServer; int broadcast = 1 ; // UDP Socket creation int udpSocket = socket(AF_INET SOCK_DGRAM 0); // Manipulating the Socket if (setsockopt(udpSocket SOL_SOCKET SO_BROADCAST &broadcast sizeof broadcast) == -1) { perror('setsockopt (SO_BROADCAST)'); exit(EXIT_FAILURE); } udpClient.sin_family = AF_INET; udpClient.sin_addr.s_addr = INADDR_ANY; udpClient.sin_port = 0; //Binding the socket bind(udpSocket (struct sockaddr*)&udpClient sizeof(udpClient)); for (i=0; i<6; i++) toSend[i] = 0xFF; // Let the MAC Address be ab:cd:ef:gh:ij:kl mac[0] = 0xab; // 1st octet of the MAC Address mac[1] = 0xcd; // 2nd octet of the MAC Address mac[2] = 0xef; // 3rd octet of the MAC Address mac[3] = 0xgh; // 4th octet of the MAC Address mac[4] = 0xij; // 5th octet of the MAC Address mac[5] = 0xkl; // 6th octet of the MAC Address for (i=1; i<=16; i++) memcpy(&toSend[i*6] &mac 6*sizeof(unsigned char)); udpServer.sin_family = AF_INET; // Broadcast address udpServer.sin_addr.s_addr = inet_addr('10.89.255.255'); udpServer.sin_port = htons(9); sendto(udpSocket &toSend sizeof(unsigned char) * 102 0 (struct sockaddr*)&udpServer sizeof(udpServer)); return 0; }
산출:
This program will power on the switched-off PC
whose MAC Address is used in this program (the
PC and the Host computer must be connected over
LAN).
참조 :
https://en.wikipedia.org/wiki/Wake-on-LAN
문자열을 정수로 변환하는 방법 java퀴즈 만들기