logo

برنامج لتشغيل جهاز كمبيوتر عن بعد عبر الإنترنت باستخدام بروتوكول Wake-on-LAN.

ويك أون لان (وول) هو معيار شبكة كمبيوتر Ethernet أو Token Ring الذي يسمح بتشغيل الكمبيوتر أو إيقاظه بواسطة رسالة شبكة. 

  • يتم عادةً إرسال الرسالة إلى الكمبيوتر المستهدف عن طريق برنامج يتم تنفيذه على جهاز متصل بنفس الشبكة المحلية مثل الهاتف الذكي.
  • من الممكن أيضًا بدء الرسالة من شبكة أخرى باستخدام عمليات البث الموجهة للشبكة الفرعية أو خدمة بوابة WOL.
  • تتضمن المصطلحات المكافئة التنشيط على شبكة WAN، وتشغيل الطاقة عن بعد بواسطة شبكة LAN، وتشغيل الطاقة عن طريق استئناف LAN، واستئناف LAN على شبكة LAN، والتنبيه على شبكة LAN.

مبدأ التشغيل  

  • يتم تنفيذ Wake-on-LAN ('WOL') باستخدام حزمة مصممة خصيصًا تسمى الحزمة السحرية والتي يتم إرسالها إلى كافة أجهزة الكمبيوتر الموجودة في الشبكة، ومن بينها الكمبيوتر الذي سيتم إيقاظه.
  • تحتوي الحزمة السحرية على عنوان MAC للكمبيوتر الوجهة ورقم تعريف مدمج في كل بطاقة واجهة شبكة ('NIC') أو أجهزة إيثرنت أخرى في جهاز كمبيوتر تمكن من التعرف عليها بشكل فريد ومعالجتها على الشبكة.
  • ستحتوي أجهزة الكمبيوتر التي تم إيقاف تشغيلها أو إيقاف تشغيلها والقادرة على Wake-on-LAN على أجهزة شبكة قادرة على "الاستماع" إلى الحزم الواردة في وضع الطاقة المنخفضة أثناء إيقاف تشغيل النظام.
  • في حالة تلقي حزمة سحرية يتم توجيهها إلى عنوان MAC الخاص بالجهاز، ترسل بطاقة واجهة الشبكة (NIC) إشارة إلى مصدر طاقة الكمبيوتر أو اللوحة الأم لبدء تنبيه النظام بنفس الطريقة التي يحدث بها الضغط على زر الطاقة.
  • يتم إرسال الحزمة السحرية على طبقة ارتباط البيانات (الطبقة الثانية في نموذج OSI) وعندما يتم إرسالها يتم بثها إلى جميع الأجهزة المتصلة على شبكة معينة باستخدام عنوان بث الشبكة؛ لا يتم استخدام عنوان IP (الطبقة 3 في نموذج OSI).

لكي يعمل Wake-on-LAN، يجب أن تظل أجزاء من واجهة الشبكة قيد التشغيل. وهذا يستهلك كمية صغيرة من الطاقة الاحتياطية أقل بكثير من طاقة التشغيل العادية. وبالتالي فإن تعطيل Wake-on-LAN عند عدم الحاجة إليه يمكن أن يؤدي إلى تقليل استهلاك الطاقة بشكل طفيف على أجهزة الكمبيوتر التي تم إيقاف تشغيلها ولكنها لا تزال متصلة بمقبس الطاقة.



هيكل الحزمة السحرية  
الحزمة السحرية عبارة عن إطار بث يحتوي في أي مكان ضمن حمولته على 6 بايت من إجمالي 255 (FF FF FF FF FF FF بالنظام الست عشري) متبوعًا بستة عشر تكرارًا لعنوان MAC ذو 48 بت للكمبيوتر المستهدف بإجمالي 102 بايت. 
نظرًا لأنه يتم فحص الحزمة السحرية فقط بحثًا عن السلسلة أعلاه ولا يتم تحليلها فعليًا بواسطة مجموعة بروتوكولات كاملة، فقد يتم إرسالها كأي بروتوكول شبكة وطبقة نقل على الرغم من أنه يتم إرسالها عادةً كمخطط بيانات UDP إلى المنفذ 0 7 أو 9 أو مباشرة عبر Ethernet كـ EtherType 0x0842.

تحتوي الحزمة السحرية القياسية على القيود الأساسية التالية:   

  1. يتطلب عنوان MAC للكمبيوتر الوجهة (قد يتطلب أيضًا كلمة مرور SecureOn).
  2. لا تقدم تأكيد التسليم.
  3. قد لا تعمل خارج الشبكة المحلية.
  4. يتطلب دعم أجهزة Wake-On-LAN على الكمبيوتر الوجهة.
  5. لا تحتفظ معظم الواجهات اللاسلكية 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
 

إنشاء اختبار