LAN'da Uyandırma (WoL) bilgisayarın bir ağ mesajıyla açılmasını veya uyandırılmasını sağlayan bir Ethernet veya token ring bilgisayar ağı standardıdır.
- Mesaj genellikle hedef bilgisayara, akıllı telefon gibi aynı yerel alan ağına bağlı bir cihazda çalıştırılan bir program tarafından gönderilir.
- Alt ağa yönelik yayınlar veya WOL ağ geçidi hizmeti kullanılarak mesajın başka bir ağdan başlatılması da mümkündür.
- Eşdeğer terimler, WAN'da uyandırma uzaktan uyandırma gücünü açma, LAN ile açma, LAN ile devam ettirme, LAN'da LAN'ı devam ettirme ve LAN'da uyandırmayı içerir.
Çalışma prensibi
- Yerel Ağda Uyandırma ('WOL'), sihirli paket adı verilen ve aralarında uyandırılacak bilgisayarın da bulunduğu ağdaki tüm bilgisayarlara gönderilen özel olarak tasarlanmış bir paket kullanılarak uygulanır.
- Sihirli paket, hedef bilgisayarın MAC adresini (her bir ağ arayüz kartında ('NIC') veya bilgisayardaki diğer ethernet aygıtlarında yerleşik olarak bulunan ve ağda benzersiz bir şekilde tanınmasını ve adreslenmesini sağlayan tanımlayıcı bir numarayı içerir.
- Yerel Ağda Uyandırma özelliğine sahip, kapatılmış veya kapatılmış bilgisayarlar, sistem kapalıyken gelen paketleri düşük güç modunda 'dinleyebilen' ağ aygıtlarını içerecektir.
- Cihazın MAC adresine yönlendirilen sihirli bir paket alınırsa, NIC, bilgisayarın güç kaynağına veya anakartına, güç düğmesine basıldığında olduğu gibi sistemi uyandırma işlemini başlatması için sinyal verir.
- Sihirli paket, veri bağlantı katmanı (OSI modelinde 2. katman) üzerinden gönderilir ve gönderildiğinde ağ yayın adresini kullanarak belirli bir ağdaki tüm bağlı cihazlara yayınlanır; IP adresi (OSI modelinde katman 3) kullanılmaz.
Yerel Ağda Uyandırma özelliğinin çalışabilmesi için ağ arayüzünün bazı bölümlerinin açık kalması gerekir. Bu, normal çalışma gücünden çok daha az miktarda bekleme gücü tüketir. İhtiyaç duyulmadığında LAN'da uyandırma özelliğinin devre dışı bırakılması, bu nedenle, kapalı ancak hala bir elektrik prizine bağlı olan bilgisayarlarda güç tüketimini biraz azaltabilir.
Sihirli Paket Yapısı
Sihirli paket, yükünün herhangi bir yerinde 255 baytın 6 baytını (onaltılık sistemde FF FF FF FF FF FF) ve ardından hedef bilgisayarın 48 bitlik MAC adresinin toplam 102 baytın on altı tekrarını içeren bir yayın çerçevesidir.
Sihirli paket yalnızca yukarıdaki dize için tarandığından ve aslında tam bir protokol yığını tarafından ayrıştırılmadığından, herhangi bir ağ ve taşıma katmanı protokolü olarak gönderilebilir, ancak genellikle bir UDP datagramı olarak bağlantı noktası 0 7 veya 9'a veya doğrudan Ethernet üzerinden EtherType 0x0842 olarak gönderilir.
Standart bir sihirli paket aşağıdaki temel sınırlamalara sahiptir:
- Hedef bilgisayarın MAC adresini gerektirir (aynı zamanda bir SecureOn şifresi de gerektirebilir).
- Teslimat onayı vermeyin.
- Yerel ağ dışında çalışmayabilir.
- Hedef bilgisayarda Wake-On-LAN'ın donanım desteğini gerektirir.
- Çoğu 802.11 kablosuz arabirimi, düşük güç durumlarında bağlantıyı sürdürmez ve sihirli paket alamaz.
Yerel Ağda Uyandırma uygulaması çok basit olacak ve ağ arayüz kartında bulunan devre tarafından minimum güç gereksinimiyle hızlı bir şekilde işlenecek şekilde tasarlanmıştır. Yerel Ağda Uyandırma, IP protokol katmanının altında çalıştığı için MAC adresi gereklidir ve IP adreslerini ve DNS adlarını anlamsız hale getirir.
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; }
Çıkış:
np.mean
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).
Referans:
https://en.wikipedia.org/wiki/Wake-on-LAN