Networks_Lecture_6___Principles_Of_Network_Applications
طيب يا شباب خلينا نكمل المحاضرة بتاعتنا قبل ما نبتدي المحاضرة أنا بكل حزن بنعي أستاذ أساتذة الحاسبات في مصر وأحد مؤسسي العلم والتخصص دوت في المنطقة أستاذنا استاذ دكتور محمد أديب رياض الغنيمي يمكن أنا كلمتكم عنه في
بداية الكورس بتاعنا هو الأسس أول شبكة بيانات ومعلومات في المنطقة كلها في أفريقيا والشرق الأوسط وأسس شبكة جامعات المصرية وأحد الناس اللي أسست هذا التخصص توفي إلى رحمة الله من شوية فيعني نسأل للمغفرة والرحمة ادعوله لو سمحته وربنا يكرمه ويجزيه خير
عن كل اللي قدموا للبلد وللعلم والبشرية كلها الإنترنت اللي احنا بنشتغل عليها دلوقتي هو أحد أباءها المؤسسين بأفكاره وعمله وتأسيسه لشبكة الجامعات المصرية ورقم القومي اللي في جيب كل واحد فينا كان برضو
هو من الناس اللي ساهمت في تأسيسه وتشغيله هي يعني خسارة فادحة ربنا يرحمه يا رب ويخفر له والحكمة بيعلى كير فلو سمحتوا دعولوا بالمخفرة والرحمة أستاذنا الدكتور محمد أديب رياضي اللغوني رحمة الله بكورة لها دو الله يكرمك
طيب يعني استكملاً للرسالة ورحمة الله عليه ورسالة العلم يعني احنا دايماً العلم بينتقل من واحد لواحد يعني تكريماً ليه هنكمل برضو المحاضرة بتاعتنا وننقل جزء من العلم
اللي أنا تعلمته منه الحقيقة يعني ربنا يجعله في زال حسناته هنكمل المحاضرة ان شاء الله يعني شوية كده وننهي الحالة احنا هنبتدي نتكلم على اللييرز بتاعة الناتورك وهنبتدي من اللييرز
اللي فوق خالص الابليكيشن لير الابليكيشن لير هي اللير دمرة خمسة في الموضل بتاعنا او دمرة سبعة في الـ OSI موضل دي اللي بيتم فيها الابليكيشن اللي بيران وبيسند وبيرسيف المساجز فتعالوا ندرسها ونتكلم عليها ونشوف هي بتعمل ازاي وهل في موضلز معينة لكتابة الابليكيشن
كيف تتعامل مع الـ network وهل في reference design هل في design patterns معينة ده ده من استخدام الحقيقة وده اللي هنبتدي نتكلم عنه إن شاء الله في الـ chapter الـ outlines بتاعت الـ chapter هنبتدي نتكلم هي إيه يعني إيه network applications إيه الـ principles باعتها وبعدين هنتكلم على الـ web و الـ http هنتكلم على الـ email service و الـ protocols الخاصة بيها نتكلم على الـ DNS
هنتكلم على الـ Peer-to-Peer Application وهنتكلم على الـ Socket Programming الجزء بتاع الـ Video Streaming و الـ Content Distribution Network هنقول عنه حاجات سريعة لكن مش هنخش في تفاصيله احنا هدفنا على وجهة نظر الـ Concepts يعني احنا عايزين نشوف ايه الـ Aspects المختلفة في الـ Implementation تاعت الـ Network Application
والبروتوكولز المختلفة بتاعتها هنعرف هي الابليكيشن لير بتتعامل إزاي مع اللير اللي تحتها اللي هي الترسبورت لير وإيه المودلز اللي ممكن نستخدم منها وهنتكلم على الديزاين باترنز الشهيرة للابليكيشن في الابليكيشن لير فهنتكلم على الكلين سيرفر برادايم والبير تو بير
و هنقول سريعا يعني content distribution networks وهنتعلم عن بعض البروتوكولز وعن طريق نحن نشوف بعض ال popular application level protocols زي الHTTP والSMTP والHOT3 والIMAP والDNS ويمكن الFTP وهنتعلم في الاخر زي نقدر نكتب بقى applications بتعمل network يعني بتستخدم network بتبعت مستابل messages على ال network بيستخدم حاجة اسمها
ال socket APIs ده ببساطة التفاصيل بتاعت ال chapter ده زي ما قلنا ال network application هو عبارة عن application بيبقى جوز من function and requirements بتاعته وين we send and we receive messages ودي examples على network applications زي email clients web browsers text messages
زي الواتساب وغيره الريموت لوغين نعم الريموت لوغين من جهازي على جهاز تاني البير تو بير فايل شيرينج زي مثلاً البتو رانت والحاجات اللي زي كده المالتي يوزر ناتور جيم زي الحاجات اللي بتلعبوها طول الليل ديات وتبقى صاحين بالعافية على المحاضرة الستريمينج of stored video زي اليوتيوب وهولو نتفلكس الvoice over IP application زي الاسكايب والميسنجر الريل تايم فيديو كومفرنسينج زي اللي احنا بنعمله بالوقت
الزوم ده is a real time video conferencing ال social networks , search حاجات دي كلها اسمها network applications واضح ان هي عبارة عن software programs software programs ديت بنستخدمها عشان نبعت ونستقبل بيها data والdata دي جزء اساسي من ال functionality دا
انا اين الـ network applications الحقيقة؟ network applications عبارة عن اين؟ انا بكتب program software network application بيرن on different end systems يعني الحقيقة الـ network application لو انت كتبت الـ network application وشغلته على جهاز لوحده لا معنى لهذا الـ application مش كده؟ هيكلم نفسه يعني واحد كده دخلته عد في وضع وحده وقلته يلا اتكلم هيكلم نفسه يعني هنقول عليه مجنون
فنفس الفكرة الـ Network Application لما بيشتغل على single host ده ما بانوش معنى مش هيكلم نفسه لازم أو يعني لوحده لازم يبقى فيه another application معاه على a different end system أو حتى ممكن على نفس الجهاز لكن يبعته ويستقبله messages بينه ورقمه فنفسه طبعا الـ Network Application is a distributed application by nature
بمعنى مقاومة البيانات لا يوجد مجموعة من البيانات التي تعمل لنفسه يجب أن يكون لديه أحد أمامه أو أحد أمامه أكثر يتحدث معاً كيف يتحدث معاً؟ عن طريق تبادل البيانات على المجموعة أو عن طريق مجموعة مختلفة أو بروتوكول معين يعمل على نفسه حسناً مثلاً
عندك دخل على website معين فانت بتستخدم application على الجهاز بتاعك اسمه web browser web browser software زي ايه مثلا ايه شباب الweb browsers اللي تستخدموها Google Chrome جوجل كروم الفاير فوكس الاجل سافاري ال Opera الحاجات دي كلها ده اسمه web browser حضراتك بتبتح الweb browser بتكتب فوق حاجة اسمها URL وبتدوس enter او بتكليك عنك تجو
فاللي بيحصل ايه؟ بيبتلي الـ software بتاعك بيضور عن طريق حاجة اسمها DNS على العنوان السيرفر اللي المفروض يكلمه ويبعت للسيرفر دي حاجة اسمها request حاجة اسمها HTTP request السيرفر ده عبارة عن ايه؟ عبارة عن another software software تاني موجود على جهاز تاني الـ software دوت عنده على الـ hard disk بتاعه
مجموعة من الفايلز اللي بتربيزنت specific website تمام فهو بيبتدي يقرأ الفايلز دي ويرد على البروزر بتاعك بيها الابليكيشن اللي موجود على الجهاز اللي عنده الويب سايت ده اسمه web server زي مثلاً الاباتشي أو ال IIS
ده دي دي أسامي زي ما عندنا كروم وسافاري ومش عارف إيه برضو من ناحية تانية عندنا الأباتشي ويب سيرفر وعندنا الإي آي آي آيس ويب سيرفر حقيقة مش هي دي الأبليكيشنز الوحيدة اللي بتشتغل على الناتورك دي الناتورك أبليكيشنز اللي موجودة على الأدج لكن طبعاً كل الديفايسز اللي موجودة في النص دي ما هيها كومبيوترز وعليها سوفتوير بيران عشان يعمل عملية السويتشينج والفوروردينج وعليها سوفتوير بيران عشان يعمل عملية السويتشينج والفوروردينج
فالحاجات دي كلها اللي هي موجودة على الـ network core devices دي عبارة عن applications بس الـ applications دي بتبقى pre-programmed يعني pre-loaded وموجودة على الأجهزة دي and you don't need to write software for the network core devices ده ما بيحصلش وإن كان بالوقت
في حاجة اسمها software defined network بنقدر نتحكم فيه الdevices دي بإكسترن للsoftware لكن ده مش الكلام بتاعنا على الأقل في الclassical networks اللي احنا منتكلم عليها فاستخداماتنا للكلاسيكل ناتوركس اللي موجودة دلوقتي احنا منكتب الapplications على الend systems اللي هي ال الcomputer
الموجودة على الـ Edge بيحصل طبعاً أن أنت you are running a software عندك أو على جهاز تاني أو تفضل وليكن مثلاً نحن عندنا السيرفر ده على website وعليه web server شغال هنا وليكن الـ Apache ده application طبعاً الـ web server ده على operating system ففيه transport layer و network layer و data link layer و connected with network and physics
ممكن يبقى في عندي لابتوب برضو انت بشغل عليه ويب بروزر وليكن الجوجل كروم وبرضو عليه operating system وليكن الويندوز فعندك الترانسبورت لير والنتروك لير والداتالينك لير والفيزيكا لير ممكن بشغل على موبايل الموبايل اللي مسلا وليكن ايفون عليه السفاري ويب بروزر بس برضو فيه الاي او اس فيه الترانسبورت لير والنتروك لير
و في الـ data link ليه؟ في الـ physical layer. يرزقوا لك تشتغل مع بعضها. في الآخر، اللي بيحصل إنك كأنك بتبعت message من الـ application بتاعك، يستقبلها الـ application التاني و يرد عليك. وليكن أنت فتحت website معين، فده يرد على الـ website. لو فتحت الـ website من الجهاز التاني يرد عليك. اللي أنت شايفه logically كأن الـ application بيبعت message الـ application ده في شكل كده direct. الحقيقة الـ message ما بتمشيش كده. يعني بتمشيش في الهواء كده. دي الـ message بتبتدي تتحرك من layer لـ layer عند source لحد ما تنزل وبعدين تتحرك على الـ physical layer.
في المسارات المختلفة لحد ما توصل عند الـ destination وبعدين تتحرك بقى بيه بالعكس تبتدي تتحرك من تحت الفوق لحد ما توصل للابليكيشن الأبليكيشن ده بيقرأ الـ website الـ web file الـ HTML زي ما أنتم يمكن عارفين خدت web programming مش كده ده ناس web programming يا شباب نستطيع أن أستعدم آه هتلاقوا أنت عشان تبني websites بتعملوا حاجة اسمها HTML ومش عارفين
وشوية سكريبس عن صعوم بترن على السيرفر وبعد ما ترجع تاني بنفس المصار أو مصار مختلف فهي احنا لوجيكالي كأن الابليكيشن بيبعت للابليكيشن تاني مساجي صراحة جاية باستخدام الأوامر بتاعت السند ورسيف اللي هنشوفها ان شاء الله لكن اكتوالي المساج ما بتمشيش كده المساج بتمشي through the network in a new shape يعني بتنزل كده
تتحركوا بعدين تطلعوا ثاني والعكس الحقيقة عندنا نوعين كبار أو فريطين كبار للناتورك أبليكيشن ديزاين يا بنعملوه في شكل client server يا بنعملوه في شكل peer to peer يعني ايه client server ويعني ايه peer to peer client server احنا بنقسم الأبليكيشن بطاقتنا لنوعين
الابليكيشنز بيبقى معاها فايلز وديتابيزز وبيتعمل بروسسينج ودي بنسميها سيرفر دي بنسميها سيرفر هنا عالفكرة مش الكمبيوتر سيرفر هنا السوفتوير اللي راننج على الكمبيوتر ده وده هو اللي بيقدر يجيب الديتا زي مثلاً ويب سايت زي مثلاً السيستم بتاع ال الم اس السيستم بتاع ال اس اي اس السيستم واتيفر السيستم واتيفر السيستم البنك واي حاجة من الحاجات دي
موجودة في شكل applications running على أجهزة computer معينة لكن لأن ال applications دي غالبا ما بتخدم عدد كبير من ال users في نفس الوقت فبالتالي غالبا بنحطها على أجهزة powerful أجهزة ال processor بتاعها كبير المemory بتاعها كبيرة بتقدر تprocess عدد كبير جدا من requests في نفس الوقت وبالتالي غالبا بنحطها على special hardware عشان كده جيه كلمة السيرفر بيقول لك أنا راح أشتري جهاز سيرفر
هو السيرفر مش الجهاز السيرفر هو الـ software لكن أنا أنا بقول أنا راح أشتري جهاز سيرفر ده معناه أنا بشتري computer powerful ينفع يتحط عليه server applications وتخدم عدد كبير من users في نفس الوقت وبالتالي الـ design بتاعه كهاردوير بيبقى مختلف يعني مثلاً ده بيبقى جهاز معمول حسابه انه هيشتغل على طول ما بيطفيش ما بتعمل له shutdown
فالpower supply بتاعه مثلاً اللي هو بيديله الكهرباء بيبقى معمول بشكل مختلف انه ما يسخنش وما يتحركش وبعض الحاجات بقى الكريتيكل ده الجهاز بيبقى فيه two power supplies بحيث لو واحد شغال واحد stand by بحيث لو شغالنا لو باص أحصل فيه مشكلة التاني بيخش مكانه automatic واقدر أغير power supply ال-buy إذا أشيله وأرميه وأحط واحد تاني مكانه من غير مطفي السيرفر نفس الحكاية بالنسبة للhard disk
هاردسك لو ضرب أنا ممكن أشيله وارميه و أحطه أحد ثاني بيكانه عشان كده السيرفر من غير مطف السيرفر طب إزاي؟ لأن السيرفر ده مباشر فيه هاردسك واحدة فيه حاجة اسمها ديسك أري ممكن يبقى فيه عشر هاردسكات أو خمستاشر و دايماً بيبقى فيه باكاب من الـ Operating System و من الـ Data على أكتر من هاردسك في نفس الوقت فبيبقى Designed الهاردوير بشكل معين Always on host غالباً كمان الـ IP Address اللي هو العنوان بتاعه زي ما قلنا أن أي جهاز على الـ Network لازم يبقال
عنوان ثابت زي ما أي تليفون على شبكة تليفونات ليه رقب Unique أي جهاز موجود على الناتورك لازم يبقاله رقب Unique الرقم في الحالة بتاعتنا في الحالة الـ Networks اللي هي IP Networks اللي احنا مشتغل عليه بيبقى بس بحاجة اسمها IP Address الـ Server Z IP Address بتاعتها بتبقى Permanent بتتغيرش بتبقى سابتة ما ما بتتغيرش حدس تمام؟ وغالباً ما الـ Server Z ما بتتحطش بقى في قوة عادية بتتحط في حاجة اسمها Data Center
الـ data centers هي تبقى أماكن designed أصلاً أن هي تتحط فيها server من ناحية الكهرباء بتاعتها والتكييف بتاعتها ونتو بتاعتها and so on الـ clients بقى هي عبارة عن الـ softwares التانية اللي تبقى نازلة على جهاز العادية سواء لابتوب، عربية، mobile whatever بتcommunicate مع الـ servers يعني مش بيتcommunicateوا مع بعض directly مما بيبعتوا للـ server
ممكن تبقى connected أو disconnected ال IP address بتاعها بيتغير they do not communicate directly with each other even if لو باين قدامك انهم بيكمنيكاتوا مع بعض بمعنى ايه حضراتي لما بتبعت email من جهازك لل email بتاع واحد صاحبك actually you don't send email من جهازك لجهازه انت بتسند email لل email server بتاعه وبعدين هو يلوجن على email server بتاعه ويسحب
فهو انت بتكلم السيرفر وانت بتسنده هو بيكلم السيرفر عشان يعمل رسيلة فهنا مفيش ايه مفيش direct communication ما بينكم على عكس مثلا الحاجة زي الفيسبوك Messenger مثلا حضراتك بتابعت message على الفيسبوك Messenger بتطلع من جهازك للمسنجر لا المسنجر برضو بيبقى stored
لكن خلينا نقول مثلاً الحاجات اللي هي الـ Voice مش الـ Messages حضرتك بتكلم واحد بالـ Voice Okay؟ Audio على الـ Messenger أو الـ Skype أو على الزوم زي كده لو هو مش فاتح ومش موجود معاك في نفس الوقت الـ Voice بتا حضرتك ده will be lost مش هيروح في حتة ومش هيتسكت ولو فاتح البرنامج مش هيلاقيه في الحالة دي بنقول إن إيه الـ 2
software بينهم direct communication لكن في حالة client server architecture لا ما فيش direct communication انت بتبعت من عندك للسيرفر والتاني بيخش بيقرن data من إمن السيرفر لو انت عايز تبعت data من عندك لclient تاني زي مثلاً انك تحط post على facebook وبعد كده حد يخش يقرن حالة الpeer to peer بقى لا ما بيبقاش فيه server
الـ softwares بتكلم بعض مباشرة زي ما قلنا مثلا في حالة الـ voice communication لو أنت بتكلم حد voice read time على المسنجر أو على الـ Skype أو زي ما احنا بنعمل دلوقتي على الزوم المسجز دي والـ data دي كلها ما بتتخزنش في حد لأنه ياما أنت you have to record it أو أنك يبقى الشخص الناحية التانية حاضر وإلا الحاجة هتروح منه فطبعا إحنا عندنا two architectures يا client server architecture يبير
الـ peer-to-peer architecture الاخر What is communicating هما الـ processes الـ programs اللي شغالة الـ up and running بيبعتوا ويستقبلوا البعض data دايماً في حاجة اسمها client process الـ client process هي اللي بتبتدي الـ communication هي اللي بتنشيد الـ communication الـ server process مستنية يجي لها طلبات عشان ترد عليها الـ responses بتاعتها يعني الـ web server موجود up and running وعلي الـ website لما client يخش يطلب صفحة معينة منو
بيراها من عنده من الهاردسك او بيراند بروجرام عنده و بيرجعلك الديتا في شكل web page دي الفكرة الاساسية ورا ال client server architecture او ال communication ما بين ال processes عملية ال communication دي بتتم ازاي عن طريق استخدام library معينة اسمها socket apis او socket apis ال application بتاعك بيبتدي يستخدم حاجة اسمها socket library
زي ما قلنا مثلا في الC++ لو انت عايز تستخدم الماث فونكشن زي الصين والكوزين والحاجات اللي زي كده بتستخدم حاجة اسمها الCMAS بتهاش include CMAS أو math.h لو شغل C نفس الحكاية حضرك لو عايز تبعت وتستخدم المساجز على الناتور بتستخدم API اسمها الSocket API Socket API دي كانها البوابة اللي بينك بين الابليكيشن اللي هي رو بين الترانسفورت اللي هي رو Actually when you send a message you don't send it to the network Actually you are sending it to your operating
الجزء ده بالكامل controlled by the operating system فالoperating system بتاعك أصلاً لازم يكون بي support ال networking هو في حاجة مش بتسبورت آه زمان يعني احنا على أيام زمان لما كنت أدوكو كانت ال PC بتاعتنا بتشتغل بحاجة اسمها الدوس ال disk operating system الدوس ده ما كانش بي support ال networking
ولما اتنقلنا للويندوز 3 و 3.1 و 3.11 كان من الحاجات المهمة جدا من 3.1 مش بتسابورت الناتوك يعني عشان مخش على الناتوك بصدام جهازة عليه الويندوز 3.1 كان لازم نبسطول نتوك درايفرز مش بتاع الكارت لا دا احنا نزود حاجة جوه الاوبريتنج سيستم نفسه عشان يسابورت الليارزي الليارزي ما كانتش موجودة
لا يوجد أي شيء يسمى هذا أي أنظمة تنزل بمفردها في ساعة النتوك الـ Socket API هي عبارة عن البوابة التي بينك وبين أنظمة التنظيم التي تتحدث عنها بعد الآن نعلم أن كل الكمبيوتر على النتوك يجب أن يكون
لازم يكون لي unique address زي ما قلنا ينفع شبابي على شبكة التليفونات تليفونين بنفس الرقم؟ على نفس الشبكة؟ مينفعش مينفعش لان انت لو طلبت الرقم ده مين اللي هيرن ده ولا ده مينفعش نفس الفكرة كل كمبيوتر موجود على الnetwork بتاعتي لازم يبقى له حاجة اسمها unique address الunique address غالباً بيبقى identifier وإحنا متفقين
في معظم الأحيان إن احنا بنساوي حاجة اسمها IP Address ال IP Address ده عبارة عن باينري نمبر مكون من 32 بيت مكون من كم بيت؟ 32 بيت ولازم يكون unique طيب السؤال ال IP Address ده ال Address فى ال host يعني دلوقتي الموبايل بتاعك انت معاك ال smartphone بتاعك ال smartphone بتاعك دوت
connected على ال network وليك IP address و بالتالي اي حد عايز يبعت message لبرنامج شغال عندك على ال computer بتاعك لازم يستخدم ال IP address ده ال IP address ده بزبط عامل زي ليه زي عنوان ال bid بتاعك انت عنوانك مثلا 35 شارع الصفا في مدينة مصر ماعرف شو ده موجود ولا الدور الخامس شو عملي
حتى عايز أبعتلك جواب هكتب العنوان ده طب لو الجواب ده جي وصل عندك في البيت وانت في البيت انت عايش انت واخوك واخدك والدك والدتك انتوا خمسة لو مكتوب على الجواب بس عنوان الاعمارة ورقم الدور ورقم الشقة هتعرفوا الجواب جاي الواحد فيكوا انتوا الخمسة ولا لا
انا فرضي يكون جاي الواحد من اللي منين احنا خمسة بس المين انا فرضي انا مفيش لازم يكتبوا الاسم لازم يكتبوا الاسم وبالتالي النهاردة السمارت فون بتاعك عليك نتور كابليكيشن او بامراننج دلوقتي في الحلقة
ويقول لي كده الابليكيشنز بتاعت الناتورك اللي عنده على الموبايل بتاعه هو بيستخدم فيها ناتورك يعني؟ اه ممكن زوم واتساب فيس بوك اه فيس بوك غير الويب براوزر غير الويب براوزر
ويه تاني ديس كود ميسنجر وديميل والزوم والويبكس والتيمز طيب دلوقتي جي ميسج للآي بي أدرس على جهازك يديها لمن في دول وبالتالي الآي بي أدرس الوحده مش كفاية
لازم كل بروسيس موجودة على الكمبيوتر بتاك او الهوست بتاك هم كلهم ساكنين في نفس الشقة قاعدين على نفس الهوست شغالين على نفس الكمبيوتر اللي ليه IP Address حلو قوي لكن لازم الميسج لما تيجي بمكتوب فيها يراحل مين زي ما قلنا الجواب ما ينفعش يكتب على اي عنوان الاعمارة ورقم الدور ورقم الشقة بس لازم يكتب اسم مين
اسم الشخص اللي رايح له المسج ديت وبالتالي احنا بنحتاج ان كل برنامج موجود يبقاله unique identifier زي ما الكمبيوتر او الموبايل سبارت فون اللي وصل على الناتوك ليه unique IP كل برنامج موجود على الديفايس up and running لازم يبقاله unique identifier بتسميه
Port Number بنسميه Port Number Port Number ده عبارة عن رقم مش أكتر من كده 1, 2, 3, 4, 8, 25 Whatever فمثلاً لو أنت مشغل دلوقتي HTTP Message لWeb Server عايز تجيب ويب سايت معين الWeb Server ده موجود على جهاز ال IP Address 128.119.25.12
لكن الويب سيرفر نفسه اذا صافت وير على الجهاز ده نمرته 80 البرت نمبر بتاعته 80 هو بورت نمبر ده هو السوكيت ولا فيه هارب؟ لا لا لا لا لا السوكيت ده الابي اي اللي انت حضراتي ايه اللي هي اللايبري اللي تعملها انكلود ومشتغل بيه بورت نمبر ده نمرة الابليكيشن وبالتالي اللي بيحصل بقى كل ما ابليكيشن على النتو
أو هيستخدم الناتورك يشتغل على الجهاز بتاعك أنت أول ما تفتح الجهاز بتعمل بوتينج وبتبتدي تشغل البرنامج البرنامج ده أول ما بيشتغل بيطلب من الـtransport layer اللي موجودة في الـoperating system بتاع الجهاز اللي شغل عليه unique port number يقول له لو سمحت يا transport layer أنا برنامج جديدة هو اديني رقم عشان لما يجي لي messages أنا هطلب من اللي هيبعت لي المسج أنه يبعتها لي على رقم معين وبالتالي لما تيجي المسج اديها لي
فانت بتعرف نفسك بالنسبة لترانسبورت لير برقب وفي عندي هنا اختيار من اتنين يتطلب رقب من ترانسبورت لير واللي تديهولك تاخده يتطلب رقب معين من ترانسبورت لير هنتقول لترانسبورت لير لو سمحت انا عايز احجز البرت رقب 80 انا عايز اي حد يبعتلي انا بايدفولت واقف على الرقب 80 الميزة طبعا في الطريقة التانية ان انت يدفعن يور بورت لكن العيب ان لو حد سبقك وحجز البرت دي
you cannot reserve it فالبرنامج بتاعك هيكراش يعني انت لما تيجي تشغل برنامج برنامج ده بيحجز بورت معينة اول مرة تشغله هيحجز البورت لو جيت تشغل منه another copy او برنامج تاني بيحاول يحجز نفس البورت البرنامج التاني ده هيكراش هيطفي مش هيشتغل لانه مش هينفع يحجز بورت بنفس الرقم اللي كانت محجوزة عند واحد ام اخر
زي ما قلنا أحد أهم الفروق ما بين الـ Clients و Server أن الـ Servers العناوين بتاعتها سابقة دايماً الـ Port بتاعتها بتبقى سابقة يعني دايماً لو أنا عندي جهاز هحط عليه Web Server Web Server دا بيبقى على الـ Port رقم 80 لو هحط عليه Email Server دايماً بيبقى على الـ Port رقم 25 لو هحط عليه DNS Server دايماً بيكون على الـ Port 53 لو هحط عليه FTP Server دايماً بيكون على الـ Port رقم
21 لو أنا أفتكر إياه و بالتالي كل application لازم يبقى له unique port number يا أما هو يطلبها و يحجزها برقم معين عشان الناس تعرف توصل له بسهولة يا أما بياخد next port available من الopening
الابليكيشن بتاعها هيبعت message هيبعتها في شكل ايه يعني text characters ارقام whatever هي لازم الابليكيشن او two applications اللي هيتكلموا مع بعض يبقوا متفقين يعني متفقين الابليكيشن ممتفقش. الدفيلوبرز اللي كتبوا الابليكيشن دي لو هو دفيلوبر بيكتب two applications او
لازم يبقوا بيمشوا على قواعد محددة لشكل ومحتوى المساجز اللي رايحة جاية الكلام ده لازم يكون مكتوب ومحطوب في حاجة اسمها ايه؟ Protocol Protocol ده اسمه Application Layer Protocol بيعرف ايه؟ ايه انواعيات المساجز اللي هتروح وهتيه؟ يعني هل انا بقسم المساجز دي مثلاً لRequest وResponses طب الResponses دي بقسمها لCorrect Response ولا Error Response طب الRequest بيبقى شكله عامل ازاي؟
طب طوله ازاي طب ده قسمنا انواع المساجز كل نوع بقى شكله عامل ازاي ايه الفيلز الموجودة في المساج كل واحدة فيهم ازاي مثلا انتهت او بتبتدي ازاي بتبته ازاي طولها قد ايه طيب معنى كل فيلد ايه السمنتكس بتاعته وايه الرولز بتاعت البروتوكول يعني الابليكيشن لو استقبل المساج دي مفروض يعمل ايه يتصرف ازاي يرد الانهي مساج ان سوءا كل ده في الاخر اسمه
الـ Application Layer Protocol الـ Application Layer Protocols ديت يأمّا فيه من نوعين يأمّا Open Protocols يعني Protocols موجودة زي ما شفنا في أول محاضرة دخلنا على جوجل وكتبنا HTTP Protocol لقينا Document على الـ HTTP خدناها وحملناها ودي بقى Defined في حاجة اسمها RFCs Request for Comments ومزيدتها نية بتقلّو الـ Interoperability
يعني مثلاً كل الـ websites اللي في الدنيا وكل الـ web servers كلها بتشتغل ببروتوكول اسمه HTTP protocol كل الـ emails في الدنيا بتشتغل بحاجة اسمها SMTP protocol حضراتك النهاردة لو قررت انك تعمل browser جديد أو تعمل email system جديد انت you can boot your browser النهاردة ويشتغل على الانترنت مع ان محدش يعرفه قبل كده كل اللي انت بحتاج تعمله انك تfollow HTTP protocol Hypertext Transfer Protocol تقراه كويس وتفهمه وتبرمج البرنامج بتاعك
مباشرة على هذا المستدام هناك بعض البروتوكولات المتبقية يعني العمل للصفتوير هو الذي اختر عنه البروتوكول وقفلوا على نفسه مثلا مثل السكايب كلنا نعرف أن السكايب كان من الأشياء التي نستخدمها في التواصل الصوتي أو الزوم مثلا
الحاجات دي بتبقى بروكرياتري بروتوكولز بروتوكولز دي بتبقى جوه الشركات احنا ما نعرفش عنها حاجة ما لهاش دوكومنت لو دورنا عليها على الانترنت ما نلاقيهاش الا لو حد عمل لها ريفيرس انجينيرينج وبالتالي غالبا بيبقى اللي بيحصل ايه ان البرامج اللي معمولة من الشركة دي هي بس اللي بتعرف تكلم بعضها فمثلا مثلا السكايل لازم تكلم سكايل الفيسبوك لازم تبعت لفيسبوك الواتساب لازم تبعت لواتساب انستجرام دايما الانستجرام طبعا بعد ما فيسبوك اشترت الاتنين بدأوا يفتحوا الابليكيشنز على بعض لانه معاهم
البروتوكولز المختلفة الابليكيشن ده هيرون فعليه لير يا شباب فعليه لير من الخمسة بتوعنا يعني أنا كتبت ابليكيشن قاريت البروتوكول أو عملت 디자ين لبروتوكول جديد وكتبت الابليكيشن طبقاً لهولز بتاعتين الابليكيشن ده هيرون فعليه لير من الاليراز الخمسة بتوعنا
هايب مفروض الابليكيشن لاير طيب لما الابليكيشن ده يبعت message هيبعتها لمين operating system في ال transport layer في ال operating system إذاً إنت عشان تقدر تبدل الابليكيشن لاير لازم تبقى فاهم هي ال transport layer اللي تحقيق دي
هتاخد منك ايه وتديك ايه يعني انت لازم قبل ما نتكلم يعني ماينفعش في الناتورك بقى نتكلم على الـLayer غير ما نتكلم على اللي فوقيها او اللي تحتيها مزدنا في الـApplication Layer انه مفيش حد فوقينا لكن فيه تحتينا ايه Layer اسمها ايه يا جماعة Transport Layer يبقى لازم ابقى فاهمي الـTransport Layer دي هتعمل
ترانسبورت لير الحقيقة بتعمل لي شوية حاجات أولاً إنها بتعمل لي حاجة اسمها Data Integrity بمعنى إيه؟ أنا النهاردة بعدت ديتا، الديتا دي ترانسبورت لير هي اللي هتقطعها سيجمنتس وهتبعتها مش بس كده، دي هتتأكد إن الديتا اللي تبعت وصلت ولا موصلتش
وصلت صح ولا لا ده لو كان الأبليكيشن بتاعي بيريكوير حاجة اسمها reliable data transfer بمعنى ايه انا النهاردة فتحت ايميل وكتبت كلام في الايميل المفروض الايميل يوصل زي ما هو بالزبط ولا ممكن حرف ايه يتقلب بحرف بيه
ينفع؟ يوصل زمن أول مجرد يوصل زمن أول بالضبط حرف A ده الـ ASCII كود بتاعه 65 حرف B 66 لو أول بت تاني بت من على اليمين اتقلبت من 0 الـ 1 الـ A بقت B و ده بيحصل على الـ Network بجد الـ data اللي حضرت بتبعتها على الـ Network مهي ماشية في كابلات أو ماشية في الهواء و فيه noise عارفين يعني ايه noise؟
التشويش اللي عال-ال-line اه ده التشويش ده جاي من فين؟ لان البنية حوالينا مليانة مصادر مختلفة للإشارات تمام؟ أوكي؟ طيب المصادر المختلفة للإشارات دية بتخلي في الآخر
الـ الـ الـ الـ الـ الـ data اللي ماشية أو السجنة اللي ماشية ممكن تتلغبط زي ما تيجي تفتح محط راديو كده وتسمع أي تشويش أو تتفرج التلفزيون وتلاقي صورة بتنغمش أو فيها مشكلة ده نتيجة إن في سجنة تانية دخلت على السجنة بتاعتك ونغمطتها ده طبعا في الـ network بتعمل مصيبة لأنه بتعمل حاجة اسمها Bit Flip Error ده بتعمل حاجة اسمها إيه؟ Bit Flip Error يعني 0 يبقى 1 الـ 1 يبقى 0
وبالتالي هنا تيبت بمشكلة فانا النهاردة انا عايز انقل ديتا في شكل مثلا ايميل او فايل انا محتاج الديتا توصل زي ما هي بالضبط مينفعش اعصاب ايه Flip error لانها هتطلع لي ديتا تانية بقول هنا ان انا محتاج data integrity وانا محتاج حاجة اسمها هنا Reliable data transfer طب انا اعمل الكلام ده ازاي يعني Reliable data transfer ده عارفين بيتعمل ازاي بيتعمل بحاجة بسيطة جدا
أي data عندك عند السورس بتضيف عليه حاجة اسمها check sum حاجة اسمها ايه check sum اه ايه اللي check sum ده يا جماعة check sum ده انت بتاخد ال data بتاعتك هنشوف الكلام ده بالتفصيل قدام لك تخلينا نديلكم عنها فكرة سريعة check sum دوت بيبقى عبارة عن ايه بيبقى عبارة عن حزبة معينة
بيحصل لها من الديتا اللي انت عايز تبعتها بيطلع لك رقم الراقب ده بتضيفه على الميسج فتبعت الميسج بالرقم اللي انت حسبته عند بيعمل ايه لما يستقبل الميسج يحسب نفس الحزبة بالزبط اللي احنا متفقين عليها ويشوف الرقم اللي طلع له هل هو بالزبط زي الرقم اللي انت بعتقوله ولا لا
لو الرقم اللي طلع له هو الرقم اللي انت بعدتهوله يبقى ايه؟ يبقى المسج وصلت سليمة ما حصلش فيها errors لو حصل اختلاف يبقى كده فيه errors طيب وبعدين؟ ال receiver يعمل ايه؟ ال receiver عنده حاجة من اتنين لو استقبل message سليمة المفروض يرد على اللي بعته يقوله ايه؟
المسج سليما ده بيحصل إمتى لو اللي طالب أو اللي باعت طلب إن الاستقبل يرد عليه إذا كان استقبله فهمين اللي أنا بقوله ده يعني مش قوي صح ممكن تنادي دكتور اللي أنا عملته ده بالضبط اللي أنا بشرحه أنا شرحت شوية حاجات
أي إن كان كنت بقول إيه صح كده والحاجات دي وصلت لكم بعدين قلت إيه سألتكم سألتكم قلتكم إيه قدتين حاجة أنتم فاهمين اللي أنا قلتوا واستمت إيه الرد الرد يبقى أنا طلبت acknowledgement أنا بعدتلكوا data وسألتكم هي وصلت لكم أنتم فهمتوها أنتم سامعين صوتي أنتم شايفين الpresentation اللي على الشاشة
ولو كنا في الكلسروم هتلاقوني ايه؟ انا برضو بشرح كده وتلاقي انت عادي بتهز في دماغك ده انا طلبت اكتنولوجمنت وانت ديتني اكتنولوجمنت فهمناها بقى دلوقتي؟ طب هو مين بيسأل مين بيرد وعليش شوف السندر بيسأل والرسيفر بيرد مهنة دلوقتي السندر انا اللي ببعتلكوا data وبسألكوا بقولكوا ايه فهمتوا؟
فهمتوا عن إيه؟ كده تفهمت كويس قوي يبقى دي اسمها reliable data transfer أنا بابعت الديتا وبستنى من المستقبل feedback عشان كده التدريس في الفصول أحسن من التدريس online interactive أحسن من أني أتفرج على الفيديو خلاص
صح كده؟ طيب. بعض الابليكيشنز بقى ما بتحتاجش ده. يعني مش لازم الديتا توصل صليم. ممكن حتة من الديتا ما توصلش. ده زي ايه مثلا؟ زي الاوديو. زي الكلام اللي انا بقوله لكم دلوقتي ده. الكلام اللي انا بقوله ده، الصوت بتاعي ده بيتحرك وبيلقطوا المايكروفون اللي موجود عندي في اللاب توب بتاعي.
والميكروفون دوت بيستقبل الصوت وبيحوله إلى سيجنل وبعدين بتتحول لزيروز وانز والزيروز وانز دي بتتبعت على النتوك لو أنا بتكلم على low quality audio كل ثانية بتتحول لي 3000
24000 بت 24000 بت دولت لو 5 6 10 20 بت اتقصوا ما وصلوش اتقلبوا من 0 الى 1 كده كده انت مش هتحس لان ال30 بت يمثلوا ولا حاجة ولا حاجة ده يمثلوا واحد على
يعني واحد في الألف من السانية ميلي ساكند فأنت مش هتسمع حاجة مش هتحس وفي الحالة ديت ممكن الأوديو أبليكيشنز ما تحتاجش ريلايابل ترانسفير ممكن يبقى فيها شوية توليرانس للوس وبالتالي غالباً الأوديو ما بيستخدمش فكرة الأكنولوجيمت يعني لما بيشتغل ريال تايم أوديو بابعت أوديو
messages أو أتكلم audio أو video الحاجة دي ما بحتاجش فيها الأكتراضيو باسمها data integrity بعض الapplications بقى بتحتاج timing معين يعني أنا عايز أمعى ال data والdata دي توصل صليمة أو حتة لكن أنا عايز ال data دي توصل في time محدد
ما ينفعش تتأخر عنه زي ايه الابليكيشنز اللي بتحتاج very precise timing هاي شباب online game آآآ بتقولوا عليها ايه
لما تلاقي الـ network lag اللي هو الـ lag و سعادة فيه باديتلوس بتجيسوا الـ lag ده بالـ ايه؟ بالـ MS ايوة ايه يعني بايه؟ في مصطلح كده الناس يقولك ايه؟ ميلي ساكن لا مصطلح latency الـ ايه؟ لا مش latency ده مصطلح علمي بتاعنا
الناس اللي ما بتعرفش ناتوركسولاتارو يعني ليه تنسي؟ يقولك ليه؟ التانت ها؟ البينج يقولك البينج ده عالي مش كده؟ عارفين ايه البينج ده؟ ده ايه ده سورة الديتاب توصل فيها؟ ايه اللي
البنج ده round trip time اللي احنا لسه عاملينه من شوية لما كنا بنشوف جوجل خليني let's me share الناتور البتاع ده اهي اوكي البنج ده امره www.google.com ده بيعمل ايه
بيبعت بيبعت باكت ويستنى الريبلاي يقولك التيرن التيرن around time أو time to live 113 ميلي ساكند يعني أنا ده أسف الراوند ريب تايم 74 في الأولانية 62, 73, 66 أنا بعدت 4 ايكو باكت ورجعني يقولك والله أنا بعدت 4 باكت الريسيف دي منهم 4 مفيش ولا واحدة حصلها losses
تباً round trip time 62 ms الماكسيما 74 ms ال average 68 ms ده ال total round trip time اللي هو بيمثل مجموع delay في اللي رايح واللي راجع مش كده؟ واضحة شباب؟ اه طيب ده اللي الناس بتقولك عن ليه ال bing عالي
يعني يبينجي او حد متبنج ولا واحد بتخبر ولا ايه البينجي هنا بينجي يعني ايه يعني لما بتبينجي جهاز كأنك بتبعتله بتقوله انت صحي فوقه يقولك انا صحي انت فين يقولك انا هنا تمام كأنك بتبعتله ايه message وهو يرد عليك بنفس الايه بنفس المسج دين عشان ترحله موجود وايه وايه وافلابل وبتقيس التايم من ساعة ما بعدت الحد ما رجعت خدوا بالكم انا بعدت باكت طولها 32 بايت
خدت لما راحت ورجعت 74 ميلي ساكند في الأولانية 62, 73, 66 الأرقام دي هتعتمد على الكواليتي بتاعت الناتورك أنا لو عملتها تاني دلوقتي لو بصوا هنا الدليل عالي إزاي دلوقتي الناتورك عليها congestion عليها data كتير عليها users كتير فالمرة دي الدليل عالي
بصوا الـ Average هنا كان كم؟ 68 ميلي ساكند الـ Average هنا بقى 219 ميلي ساكند ممكن أعملها تاني آه لسه عالي ظروف الـ Network دلوقتي بقت 229 ميلي ساكند هنصعد مرة كمان وهكذا اسمه Timing فبرضه من الحاجات اللي بنهتم بيها
في الـ Networked Timing. أنت ما تعملش ده في الـ Application. ده ممكن يبقى جزء من الـ Transport لك. الـ Throughput بقى. طب أنا الـ Applications بتاعتي أنا عايز أبعت بيتا بـ Rates قديم. هتلاقوا في بعض الـ Applications بحتاجة Minimum amount of Throughput. زي مثلاً إيه الـ Zoom اللي إحنا شغالين عليه ده. أنا بدأت دلوقتي Audio و Video فأنا بحتاج على الأقل تقريباً يعني عشان الدنيا تبقى شغالة.
من نص ل 1Mbps تشتغل لو انت عندك اشتراك نتفلكس يقولك ايه يقولك سرعة الـ ADSL بتاعتك لازم تقلش عن كام حد سمع الكلام يقولك ما تقلش عن 2Mbps dedicated يعني يعني انت ما دايماً ضامن على الأقل في 2Mbps عشان تستطيع تتفرج على مثلاً حاجة بتاعت الـ Standard Definition ولو عايز تروح High Definition محتاج تعلق
تجعل البيتا أعلى من كده أو الحاجات ممكن السيكيوريتي أن تصعب الـ D-Services ممكن حضرك تعملها بطريقتين يا تكتبها جوال أبليكيشن بتاعك يعني أنت ممكن تخلي الأبليكيشن بعد ما يبعت كل message يبعت يطلب acknowledgement ويستنى ال acknowledgement ممكن أنت تبعت المسج وتقيس الـ time ولما يجي لك acknowledgement تقيس الـ time فتعرف الـ timing بتاعك
ممكن لما تيجي تبعت المسج وش بيس الطايم تقسم حاجة من المسج على الطايم فتعرف الثوبوت بتاعك قد ايه ممكن لو انت مش عايز حد يطلع على المسج بتاعتك على الناتورك وما يعمل لها شي سنيفنج تعمل لها انكريبشن قبل ما تبعتها وتعمل لها دكريبشن لنحية دايل طبعا كل دا كود بتكتبه ومحنا عارفين احنا ناس كودرز فا ويكن دو all of this by the code او الحقيقة الميزة بقى ان transport layers اللي موجودة في الoperating systems ممكن تديني حاجات من الاربعة دول جاهزين
أستخدم أي شيء أضعه على حسب احتياجاتي على حسب الـ requirements في الـ application مثلاً لو أنا أعمل الـ application بين الفايلز بأضلود و دونلود فايلز هذا لا يمكن أن يكون هناك data loss لا يمكن هذا لا يوجد loss لكن الـ throughput له elastic يعني والله الممكن أن أعمل على 1M 50M 0.5M 1K مش هتفرق
الفرق كله هيخد وقت قديم وطبعاً هو مش time sensitive at all الإيميل نفس الحكاية الweb document نفس الحكاية لكن الreal audio video real time audio video زي ما احنا بنعمل في الوقت الاخير بنعمل audio video بيننا وبين بعض ده loss tolerant ممكن حتة الطاقة في النص مش مهمة لكن لو انا بتكلم على audio انا بحتاج من 5Kbps ل 1Mbps لو انا بتكلم على video بتكلم من اول 10Kbps لحد 5Mbps لو انا بتكلم في الحاجات بتاعت الحيوانات
الـ Time Sensitivity الـ Delays مبين الحاجة وبعضها في حدود الـ 100 ميلي ساكند ممكن يبقى في حدود الـ 100 ميلي ساكند لان ده معقول ده ممكن مينفعش في الـ Games الـ Games ممكن تبقى محتاجة delays اقل من كده طب لو stored audio video يبقى نفس الحكاية loss tolerant ونفس الحكاية بالنسبة الـ Audio video بس طبعا الـ stored ده ممكن يقف في النص ويعمل streaming ويكمل فالـ delays ممكن تبقى اكبر شوية الـ Interactive games
loss tolerant لكن و بتحتاج بدون ويتس قليلة لكن طبعا ال time sensitivity بتاعتها مختلفة عن ال real time audio video and so on فطبعا كل system ليه بتاعتها مترحل فدي فوق وهنا ال hundreds of milliseconds
بتاعة الـ Interactive Games وبعدين Text Messaging ممكن قاقوة اكتشف حاجة انه لنا النهاردة ان احنا Transport Layers اللي available لنا النهاردة في الـ Operating Systems اللي موجودة على الكمبيوتر والسمارت فونز والإمبادت سيستمز بتقدم لي نوعين من السيرفسز يا TCP Service يا UDP Service الـ Transfer Control Protocol Service دي فيها هي اوتوماتيكا بتعمل الـ Reliable Transport بتعمل فكرة الـ Checks
وتستنى اكتنالوجمنت وبتعمل flow control بحيث انها ما بيبعتش ديتا اكتر من اللي يقدر يستعملها السيرفر الـ other peer في نفس الوقت بتعمل حاجة اسمها congestion control بتتحكم في حجم الديتا اللي خارجها بحيث ما وقعش ال routers اللي في المصر it does not provide timing ولا minimum throughput ولا security it is a connection oriented ببعضنا
البرنامج بتاعي لو تو software عايزين يبعتوا لبعض message باستخدام TCP لازم ال software الأولاني يفتح connection مع ال software التاني وال software التاني يوافق ع ال connection يعني لازم الأولاني جايندها أمر اسمه connect والطرف التاني جايندها أمر اسمه accept وبعدين يبعتوا لبعض ال data وبعد ما يخلصوا يعملوا close loop connection ده موديل الموديل التاني اسمه user data gram protocol surface ده اسمه transfer protocol TCP التاني اسمه user data gram
protocol. ده فكرة وإيه؟ ده أخف بكتير من ده لأنه مش بيقدم data transfer فما بيضفش checksum وما بيستناش acknowledgement لكن طبعا ممكن يحصل إيه؟ بيحصل فيه losses ولا بيعمل flow control ولا congestion control ولا محتاج connection أصلا. It's not connection oriented يعني ممكن provide الـ data مباشرة بتستخدم الأوامر بتاعت send و receive قبل ومتعمل connection. طبعا الميزة هنا في الconnection أنت قبل ما تبعت data بتتطمن أن الطرف الداني اللي أنت عايز تستخدمه.
موجود وقاطر نرانك واستعد يكلمك مش مشغول في حاجة تاني لكن الـ UDP انت ممكن تبعت ديتا لـ software مش موجود أصلاً أو لـ computer crashed أو الـ network مقطوعة فطبعاً ده الفرق الأساسي مع الـ NTCB وليه طب الـ UDP ده حاجة زفت يعني يعني مفهوش حاجة كتير هل هو ملوش مزايا؟ لا الحقيقة ليه مزايا؟ أهم ميزة فيه أنه very light
خفيف جداً. الـ Processing بتاعه سريع جداً. ما بيحطش Overheads كتيرة. ما بخدش Spares كتيرة. وبالتالي باخد وقت قلق for sending and receiving data. أنا هقف هنا النهاردة يا شباب. وخلينا أسأل كده قبل ما أخلص. حد عنده أي أسئلة أو في حاجة عائزة.
دكتور هو احنا كنا بنعمل ريكورد لللكتورس؟ اه انا بعمل ريكورد طبعا وهرفعها لكم على الاقل ما يسألون بس اتخذت شوية كده معتاد دكتور اسلام بيرفع الريكورد بتاعتكم حضراتكم بس انا بعمل حاجة لبعض حد عنده اي مشكلة شباب؟ حد عنده اي اسئلة؟
كلام ده مفهوم كويس اه تمام شكرا جزيلا واشوفكم ان شاء الله في اللابس انتوا لابس تاكوا 3 ولا 4 انا اقول انتوا الاربع مش ال3 انا الاربع شوفكم الاربع ان شاء الله في اللابس شكرا يا شباب السلام عليكم