الغانمي

Multicasting تجاوز الراوتر

14 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته

تحية طيبة لكل أخواني وأخواتي في المنتدى ,

عندي نقطة لم أفهمها من كتاب أستاذنا فادي عبد القادر

-----------------------------------------------------------------------------------------------------------

Chapter 9

Advanced Multicasting

Systems

التخصص 224.0.0.1 ويستخدم في جميع الشبكات الملحية فقط حيث لا يتم تمريره إلى شبكة أخرى عبر الـ Router .أما إذا أردنا التمرير إلى شبكات أخرى عبر الـ Router فنستخدم التخصيص 224.0.0.2 ولكن بشرط استخدام نفس الـ Subnet في الشبكات الأخرى .

-----------------------------------------------------------------------------------------------------------

السؤال هو : ماذا تقصد بالـ Subnet

هذا الشرط غير واضح لأنه على حد علمي أنه لكل شبكة Subnet خاص فيها ،

لأنه إذا كان لشبكتين نفس الـ Subnet هذا معناه أنهما شبكة واحدة وليس شبكتين منفصلتين .

أنا الآن أحاول أعمل برنامج لإرسال رسالة نص على سبيل المثال من شبكة إلى شبكة أخرى عبر الـ Router .

يا ليت أحد يساعدني ولو بمثال .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اهلا بيك اخي العزيز

في البداية اشكر لك ملاحظتك الهامة بخصوص هذا الموضوع

ولكن بشرط استخدام نفس الـ Subnet في الشبكات الأخرى

في هذه النقطة يوجد لبس في المعنى ويبدو انه خطأ مني في التعبير عنه, إذ كان المفروض وضع كلمة Scope mulicasting ip بدلا من subnet multicasting ip ويبدو انها فهمت على انها لنفس الـsubnet الخاص بالشبكة وهذا امر غير صحيح فالذي كنت اقصده هو ان يكون الـIP Multicasting في الطرف الآخر بنفس الـRange للـIP Multicasting بحيث يمكنه الإنضمام إلى المجموعة والإستقبال

شكرا على هذه الملاحظة واعتذر عن عدم توضيح هذه النقطة في الكتاب

أنا الآن أحاول أعمل برنامج لإرسال رسالة نص على سبيل المثال من شبكة إلى شبكة أخرى عبر الـ Router .

يا ليت أحد يساعدني ولو بمثال .

السؤال هو هل يمكنك الوصول إلى الشبكة الآخرى وهل الشبكتان من خلال الإنترنت ام انهما شبكتان محليتان يفصلهما راوتر في نفس الموقع

على اي حال في هذا الموضوع يوجد لديك اكر من حل يمكنك اتباعه

1- اما عمل الـConfiguration اللازمة للـMulticasting في الـRouter بحيث ان يرسل اي multicast message يصله إلى الـInterface المقابل في الشبكة الأخرى

2- أو استخدام تقنية الـReflector والتي وفرتها Microsoft في مشروعها الخاص بالـConferenceXP بحيث انك تقوم بتثبيته على احدى الأجهزة في كل شبكة ويقوم بدوره بإستقبال الـMulticasting و إرساله إلى الشبكة الأخرى وايضا استقبال الرسالة من الشبكة الأخرى كـUnicast Message و إرساله إلى الشبكة الداخلية لبقية الأجهزة كـMulticast message وهذه التقنية توفر عليك موضوع الـConfiguration للـrouter

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي فادي على الرد

أخي العزيز هنا سؤال يحيرني

أنا عندي برامج شات مثل ( Paltalk و Skypeو MSN وغيرها...) وهي تقوم بإرسال رسائل Text من شبكة إلى شبكة أخرى عبر الإنترنت بغض النظر أنها تستخدم Server أو أنها Peer to peer ، وهذه البرامج لم تتطلب ولم تحتاج إلى أني أعمل ـConfiguration للـ Router الموجود عندي حتى تجعل رسائل الـ Text تتجاوز الراوتر وتذهب إلى الشبكات الأخرى ، وأيضاً لم تتطلب ولم تحتاج إلى IP address ثابت .

الرسالة التي أريد إرسالها من شبكة إلى شبكة أخرى هي عن طريق الأنترنت مثل برنامج( Paltalk و Skype)

وهل هذا يختلف عن أرسالة رسالة من شبكة إلى شبكة أخرى ليست مربوطة بالإنترنت .

أريد مثال يوضح طريقة الارسال والاستقبال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي العزيز

( Paltalk و Skypeو MSN وغيرها...)

السؤال والجواب كان في الـMulticasting و لا تستخدم تلك البرامج الـMulticasting وإنما لكل منها بروتوكول خاص تعمل على اساسه وجميعها تستخدم طريقة النقل كـunicast, على اي حال الموضوع بشكل عام يتلخص في مشكلة الإستقبال من خلف Router والذي تتصل منه بالإنترنت باستخدام الـNAT اود ان اوضح نقطة هامة هنا

1- الـNAT يستخدم لمشاركة Public IP واحد على مجموعة من الأجهزة الموجودة خلف هذا الـRouter ويملك كل منها Private IP بمعنى انه لو كان لديك 50 جهاز تتصل بالإنترنت من خلال الـRouter فالـ50 جهاز يتشاركون في Public IP وحيد أي ان Packet المرسل من جميع اأجهزة والتي ستخرج من الـ Router ستحتوي في جزء الـSource IP على عنوان واحد وهو الـPublic IP إذا السؤال هنا كيف يميز الـRouter عند استقبال الـResponse ان هذا الـPacket لذلك الجهاز . الحل الوحيد هنا هو استخدام الطبقة الأخرى لتميز وهي الـTransport والتي تحتوي في مكوناتها على Port المصدر وهذا البورت سيكون في الأغلب Dynamic بمعنى ان توليده سيكون من قبل نظام التشغيل عند الإرسال وسيتغير عند مروره من الراوتر ويضع الراوتر جدول يبين كل Port مستخدم بما يقابلها من عنوان ومن هنا يميز الراوتر عند استقبال الـPacket ان هذه البيانات لذلك الجهاز من خلال فحص الـPort Number , اردت ان اقول كل ذلك لأوضح نقطة هامة وهي

(لا يمكن ان يمرر الـRouter بيانات إلى جهاز موجود خلفه إلا في حالة انك قمت بإرسال الطلب اولا بحيث يعرف الـRouter في جدول الـNAT على عنوان جهازك والبورت الذي تستخدمه للستقبال) وهذا يعني ان جميع تلك البرامج لا يمكن ان تتصل مع بعضها بشكل Peer-to-Peer بدون وجود Service ترسل الطلب اليها بمعنى ان المرسل لا يمكنه ان يرسل رسالة إلى الجهاز الآخر بدون ان يتم إضافة الـPort والـIP في الـNAT Table والتي تتم بصورة اوتوماتيكية عند قيام الجهاز الآخر أي المستقبل بالإتصال مع الـService اولا.

وخلاصة هذا الحديث ان عملية الإتصال في تلك البرامج والتي قيل انها تستخدم peer-to-peer لن تتم قبل ان تتصل اولا من خلال server وذلك لتعريف الـNAT Table في الراوتر ثم يمكن الإرسال والإستقبال مباشرة بين الطرفين.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
السؤال والجواب كان في الـMulticasting و لا تستخدم تلك البرامج الـMulticasting وإنما لكل منها بروتوكول خاص تعمل على اساسه وجميعها تستخدم طريقة النقل كـunicast, على اي حال الموضوع بشكل عام يتلخص في مشكلة الإستقبال من خلف Router والذي تتصل منه بالإنترنت باستخدام الـNAT اود ان اوضح نقطة هامة هنا

1- الـNAT يستخدم لمشاركة Public IP واحد على مجموعة من الأجهزة الموجودة خلف هذا الـRouter ويملك كل منها Private IP بمعنى انه لو كان لديك 50 جهاز تتصل بالإنترنت من خلال الـRouter فالـ50 جهاز يتشاركون في Public IP وحيد أي ان Packet المرسل من جميع اأجهزة والتي ستخرج من الـ Router ستحتوي في جزء الـSource IP على عنوان واحد وهو الـPublic IP إذا السؤال هنا كيف يميز الـRouter عند استقبال الـResponse ان هذا الـPacket لذلك الجهاز . الحل الوحيد هنا هو استخدام الطبقة الأخرى لتميز وهي الـTransport والتي تحتوي في مكوناتها على Port المصدر وهذا البورت سيكون في الأغلب Dynamic بمعنى ان توليده سيكون من قبل نظام التشغيل عند الإرسال وسيتغير عند مروره من الراوتر ويضع الراوتر جدول يبين كل Port مستخدم بما يقابلها من عنوان ومن هنا يميز الراوتر عند استقبال الـPacket ان هذه البيانات لذلك الجهاز من خلال فحص الـPort Number , اردت ان اقول كل ذلك لأوضح نقطة هامة وهي

(لا يمكن ان يمرر الـRouter بيانات إلى جهاز موجود خلفه إلا في حالة انك قمت بإرسال الطلب اولا بحيث يعرف الـRouter في جدول الـNAT على عنوان جهازك والبورت الذي تستخدمه للستقبال) وهذا يعني ان جميع تلك البرامج لا يمكن ان تتصل مع بعضها بشكل Peer-to-Peer بدون وجود Service ترسل الطلب اليها بمعنى ان المرسل لا يمكنه ان يرسل رسالة إلى الجهاز الآخر بدون ان يتم إضافة الـPort والـIP في الـNAT Table والتي تتم بصورة اوتوماتيكية عند قيام الجهاز الآخر أي المستقبل بالإتصال مع الـService اولا.

وخلاصة هذا الحديث ان عملية الإتصال في تلك البرامج والتي قيل انها تستخدم peer-to-peer لن تتم قبل ان تتصل اولا من خلال server وذلك لتعريف الـNAT Table في الراوتر ثم يمكن الإرسال والإستقبال مباشرة بين الطرفين.

كلام رائع

لكن هل يمكن عم ذلك برمجيا ب vb.net

أقصد ان برنامج يتصل من خلال server وذلك لتعريف الـNAT Table في الراوتر

وذلك لحل المشكلة العويصة التي واجهة الكثيرين و هي الاتصال من خلف راوتر

دون تغيير اعدادات الراوتر

والغريب ان الكثير من البرامج العالمية كبرامج الماسنجر و برامج المشاركة p2p تتصل من خلف الراوتر دون اي مشكلة

ولا اعرف السبب

عذرا للاطالة

مع تيحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اهلا بك اخي العزيز

بكل بساطية يمكن تجازو هذا الأمر وكمثال بسيط جدا قم بإنشاء ويب سيرفس تحتوي على دالتين الأولى ترسل الرسالة إلى السيرفر والثانية تقرأ الرسالة من السيرفر بحيث ان العملية ستكون عبارة عن Request و Response بين الـClients والـServer سنفترض مثلا ان عملية الدردشة ستكون بين مجموعة من المستخدمين سنعرف الدالتين كما يلي كمثال

// Send Text Messages
[WebMethod]
public void Send_Text(string txt, string Group)
{
try
{
Application.Set("Text-" + Group, txt);

}
catch (Exception) { Application.Add("Text-" + Group, txt);}
}
[WebMethod]
public object Get_Text(string Group)
{
string msg = string.Empty;
try
{
msg = (string) Application.Get("Text-" + Group);
}
catch (Exception) { }

return msg;
}

في برنامج الدردشة الخاص بالـClient قم بعمل ما يلي

1- الإتصال بالويب سيرفس

2- اي ربط Textbox لإدخال الرسالة وارسالها من خلال الدالة الموجودة في الويب سيرفس

3- انشاء Timer كمثال لجلب الرسائل الجديدة المرسلة من قبل الـClients

هذا مثال لبرنامج دردشة بسيط جدا يعمل من خلال الـWeb Service والـHTTP Protocol

في حالة نقل الصوت فالعملية لابد ان تتم اولا من خلال بروتوكول يقوم بعملية انشاء الإتصال واضافة الـIP/Port NAT Record في الـNAT Translation Table ومن الأمثلة على هذه البروتوكولات الـSIP Protocol والـH.323 ... ولمعرفة ذلك قم مثلا بتشغيل برنامج الـEthereal إثناء محادثة صوتية من خلال الماسنجر ستجد ان هنالك Public IP للمرسل بالإضافة إلى Port Number تم إضافته الى الـPacket عند خروجه من الـRouter وهذا البورت هو الـIdentification االذي يمكن الـRouter من معرفة ان هذا Packet يجب تمريره للجهاز الموجود خلفه, وفي حالة كنت تريد مثلا اختراق الجهاز المقابل قم بعمل برنامج بسيط يعمل تصنت على ذلك الـPort وتشغيله في الجهاز المقابل وتمرير اوامر معينة له ستتمكن من تمرير ما تريد طالما ان الإتصال بين ذلك الـClient والـServer قائم وهذا يعني انك تستطيع الإتصال بذلك الجهاز واستخدام ذلك الـPort لدخول على الجهاز وكأنك في شبكته المحلية , ويجب انعاش الإتصال بين الـClient والـServer كل فترة بسيطة وذلك للأبقاء على وجود الـRecord في الـNAT Table وفي حالة فصل الإتصال عن الـServer سيقوم الـRouter بعد فترة بسيطة بحذف ذلك الـRecord من الـNAT Table مما لا يمكنك من تمرير Packets الصوت إلى الجهاز الأخر وبالتالي انقطاع الإتصال...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
في حالة نقل الصوت فالعملية لابد ان تتم اولا من خلال بروتوكول يقوم بعملية انشاء الإتصال واضافة الـIP/Port NAT Record في الـNAT Translation Table ومن الأمثلة على هذه البروتوكولات الـSIP Protocol والـH.323 ... ولمعرفة ذلك قم مثلا بتشغيل برنامج الـEthereal إثناء محادثة صوتية من خلال الماسنجر ستجد ان هنالك Public IP للمرسل بالإضافة إلى Port Number تم إضافته الى الـPacket عند خروجه من الـRouter وهذا البورت هو الـIdentification االذي يمكن الـRouter من معرفة ان هذا Packet يجب تمريره للجهاز الموجود خلفه, وفي حالة كنت تريد مثلا اختراق الجهاز المقابل قم بعمل برنامج بسيط يعمل تصنت على ذلك الـPort وتشغيله في الجهاز المقابل وتمرير اوامر معينة له ستتمكن من تمرير ما تريد طالما ان الإتصال بين ذلك الـClient والـServer قائم وهذا يعني انك تستطيع الإتصال بذلك الجهاز واستخدام ذلك الـPort لدخول على الجهاز وكأنك في شبكته المحلية , ويجب انعاش الإتصال بين الـClient والـServer كل فترة بسيطة وذلك للأبقاء على وجود الـRecord في الـNAT Table وفي حالة فصل الإتصال عن الـServer سيقوم الـRouter بعد فترة بسيطة بحذف ذلك الـRecord من الـNAT Table مما لا يمكنك من تمرير Packets الصوت إلى الجهاز الأخر وبالتالي انقطاع الإتصال...

يا اخي وين كنت كل هذه المدة؟؟؟

وانا ابحث في المنتديات العربية و الأجنبة ولم اكن اصل لأي نتيجة واضحة

أما الآن فبدأت الفكرة تتوضح

والمهم انك فهمت مشكلتي

على كل حال جوابك لازمه تركيز لأني لم افهم الفكرة 100/100 و خصوصا الـSIP Protocol

إن شاء الله لدي أسئلة اخرى لكن ليس الآن

لاني يجب ان استفيد من محترف مثلك وأظل اسأل حتى اصل للمطلوب ان شاء الله

على كل حال شكرا جزيلا لردك

مع تحياتي

مع تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

معلش يا اخ فادي لو انا عندي شبكتين يعملان بنظام الNat واريد تشغيل server application علي جهاز في الشبكه الاولي والclient application علي جهاز اخر ولكن في الشبكه الثانيه وليس لي اي تحكم في الconfiguration بتاعت الRouter اللي مابينهم ازاي اخلي الclient يرسل ويستلم رسائل من اال server

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي الكريم

في حالتك لا يمكن اجراء الإتصال إلا بإضافة NAPT Record إلى اعدادات الراوتر الذي خلفه السيرفر على الأقل بحيث تخصص بورت معين لتمرير الداتا إلى السيرفر من الراوتر ولن تحتاج إلى اجراء اي تعديلات من جانب الكلينت. فالحل اما ان يملك السيرفر Public IP او بتمرير الداتا القادمة من الراوتر اليه من خلال إضافة الـNAPT Record ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مجرد مداخلة اسمحوا لى بها

برامج المحادثة الفورية Instant Messaging تستخدم 3 انواع من الخدمات (او السيرفرات كما يحلو للبعض التسمية)

1 - Identity Servers : و هى تستخدم لعملية الاتصال بالسيرفر و عمل ال Authentication

2 - Discovery Servers : و ربما تكون اصعب مرحلة حيث يتم البحث عن الاجهزة الاخرى المرتبطة بالسيرفر

3 - Notification Servers : حيث يتم ارسال التنبيه بوجود جهاز مضاف لقائمة اصدقائك اونلاين او خروجه Offline و او التنبيه بوصول رسالة جديدة لك و ما شابه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكرا جزيلا اخي طارق

بخصوص الخدمات الثلاث التي ذكرتها فهي عملية تنظيمية و ممكن ان يتم فصل كل خدمة على سيرفر منفصل لتحسين الأداء العام لنظام

بخصوص الخدمة الثانية Discovery فيمكن ان نلخص اهم العمليات الخاصة بها

1- البحث عن متصلين ويمكن ان يتم فيها البحث عن متصلين من سيرفرات اخرى كما في حالة الياهو التي تمكن من التحدث مع حسابات في الـMSN ...

2- تعريف الـServer Components والتي يتم فيها انشاء الإتصال بين المتصل أو المتصلين وتسجيلهم في الـGateway الخاص بالخدمة كما تم توضيحها سابقا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
Chapter 9

Advanced Multicasting

Systems

التخصص 224.0.0.1 ويستخدم في جميع الشبكات الملحية فقط حيث لا يتم تمريره إلى شبكة أخرى عبر الـ Router .أما إذا أردنا التمرير إلى شبكات أخرى عبر الـ Router فنستخدم التخصيص 224.0.0.2 ولكن بشرط استخدام نفس الـ Subnet في الشبكات الأخرى .

224.0.0.2 لا يتم تمريره بعد الـRouter.

224.0.0.x مخصص للـlocal network فقط ولا يتعدى أي راوتر.

http://www.iana.org/assignments/multicast-addresses

الـ IP 224.0.0.1 مخصص لجميع الـhosts. يعني إذا packet تم ارساله على هذا الـIP فهو موجه لجميع الـhosts.

الـ 224.0.0.2 IP مخصص للراوترز في تلك الشبكة _المحلية_ فقط. يعني إذا packet تم ارساله على الـIP هذا فهو موجه للراوترز في تلك الـbroadcast domain والراوترز المستقبلة _لن_ تقوم بإرساله إلى أي interface أخرى. فهذا فقط في الـbroadcast domain.

مثال تطبيقي على ماتم ذكره بالأعلى هو IGMP

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
224.0.0.x مخصص للـlocal network فقط ولا يتعدى أي راوتر.

شكرا على هذا التصحيح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
اهلا بك اخي العزيز

بكل بساطية يمكن تجازو هذا الأمر وكمثال بسيط جدا قم بإنشاء ويب سيرفس تحتوي على دالتين الأولى ترسل الرسالة إلى السيرفر والثانية تقرأ الرسالة من السيرفر بحيث ان العملية ستكون عبارة عن Request و Response بين الـClients والـServer سنفترض مثلا ان عملية الدردشة ستكون بين مجموعة من المستخدمين سنعرف الدالتين كما يلي كمثال

// Send Text Messages
[WebMethod]
public void Send_Text(string txt, string Group)
{
try
{
Application.Set("Text-" + Group, txt);

}
catch (Exception) { Application.Add("Text-" + Group, txt);}
}
[WebMethod]
public object Get_Text(string Group)
{
string msg = string.Empty;
try
{
msg = (string) Application.Get("Text-" + Group);
}
catch (Exception) { }

return msg;
}

في برنامج الدردشة الخاص بالـClient قم بعمل ما يلي

1- الإتصال بالويب سيرفس

2- اي ربط Textbox لإدخال الرسالة وارسالها من خلال الدالة الموجودة في الويب سيرفس

3- انشاء Timer كمثال لجلب الرسائل الجديدة المرسلة من قبل الـClients

هذا مثال لبرنامج دردشة بسيط جدا يعمل من خلال الـWeb Service والـHTTP Protocol

استاذى العزيز فادى عبدالقادر

لى وقت طويل ابحث عن حل لهذا الموضوع وللاسف انا مش فاهم هذا الحل

مثال

انا ارسلت رسالة من الكلاينت الى السيرفر وقام السيرفر باستقبال الرساله وعرف البورت الذى تم ارسال الرساله منه

كيف سيجعل البرنامج الذى عند الكلاينت يقوم بالتصنت على هذا البورت ولقد حاولت ذلك الا انه اعطانى خطأ

Only one usage of each socket address (protocol/network address/port) is normally permitted

رغم انه هو نفسه نفس البرنامج الذى يستخدم نفس البورت

المشكله اننا لا نعلم البورت الذى سيعطيه الراوتر قبل ارسال الرساله

ولو ارسلنا الرساله لا نستطيع التصنت على نفس البورت

ارجو من حضرتك توضيح أكثر لكيفية حل هذه المشكله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .