Lecture_5_part_1
السلام عليكم يا شباب تعالوا نعمل محاضرة خمسة سريعا هتكلم في الpart الأولاني عن تعالوا نشوف هنتكلم في الpart الأولاني عن إيه sorry هتدي introduction to web pages هتكلم شوية عن HTTP protocol هتكلم شوية عن ال connections وزي نفتح connections ونحسب...
وقت الوقت اللي ببعت فيه ايه الدنيا او الmessage يعني او الrequest بيتبعت فيه، تمام؟ هنخلي ده part 2، هنخلي ده part 2 عشان يعني يعني يا رب يوصل لكم قبل كده.

أولا هنخش في Introduction to web page. قال لك هنا بيقول لك هنا ان الweb page يعني أنا لما بأجي أفتح صفحة بتبقى الصفحة دي consist من جوه شوية مثلا link ات ، شوية صور، شوية مثلا video يكون video، في وlinks بقى وvideo وphotos ومش عارف ايه والكلام ده
والكلام ده كله ، كل الحاجات دي كده مع بعضها بسميها ايه؟ بسميها object فالwebpage متكونة من شوية objects فأنا لما اجي اطلب webpage ، لما اجي اطلب عنوان صفحة ، أكني بطلب الobjects اللي في الصفحة دي تجيلي تعالي لي أنا عايز الحاجات دي تجيلي تمام؟ طيب. علشان الobject ده طبعا ممكن يكون HTML ده اللي احنا لسه قايلينه ممكن HTML file ممكن يكون صوره ، ممكن يكون audio وهكذا.
الـ Web Page بيتكون من الـ Base HTML File و ده اللي بيكون فيه يعني أنا عندي هذا الـ File الذي هو الـ Base HTML File اللي بيكون جواه بقى شوية الـ Objects دي بيكون محمل به شوية هذه الـ Object فأنا لما بأجي أطلب أنا كـ Client بأجي أطلب من Server أو من Web Server خاصة يعني أطلب منه Request إن أنا عايزة أفتح صفحة الـ Facebook.com.
ماشي؟ فأنا كده بأطلب ايه؟ أنا بأطلب ده الـ base HTML file بتاع الـ web page اللي أنا طالبها. طيب، الـweb page بتاعت
 الـ Facebook دي جواها ايه؟ mainly يعني included جواها شوية objects. إيه هي الـobjects؟ شوية صور على شوية audio وهكذا.
Okay؟
طيب.
كل object ليه حاجة اسمها URL
 unified resource locator ايه بقى ده ، ده اللي احنا بنكتبه ده اللي احنا بنقعد يعني مثلا نخش نكتب وليكن وليكن انا مش عارفة بيبقى في اي حاجة خلينا في المثال اللي هو مديهولنا www.someschool مثلا وليكون السيدة خديجة . education
slash كذا slash picture ده عنوان ايه يا جماعة ده أكني حرفيا
فحرفيا دخلت على الـ link جوه الـ u يعني جوه الصفحة دي، يبقى جوه هذه الصفحة أنا فتحت الـ picture دي، فالـ URL بشكل عام بيكون عبارة عن إيه؟ بيكون عبارة عن شقين: شق الـ domain، تمام، اللي هو ده، ماشي، اللي هو بيكون الـ hostname.
اللي هو الـserverاللي هو ما انت بتطلب بتطلب من الـserverيعني مثلا انا بكتب www.facebook.com، الـ facebook.com ده إيه؟ ما ده اسم الـserver، فالهوست نيم هو اسم الـserver. تمام؟ القلم راح فين؟ القلم راح فين؟ القلم راح فين؟ هو بيختفي بجد. أهو القلم.
sorry sorry. مشاكل تقنية.

أهو. الشق الثاني بيتكون من إيه؟ الشق الثاني بيبقى عبارة عن الـ path بتاع الحاجة اللي أنت طالبها جوة الصفحة دي. يبقى أنا عندي الـ URL الـ URL متكون من الـ Host Name تمام؟ وحاجة أنت طالبها جوة الصفحة دي.
تمام؟ يقول pass name يعني. قال لك الhost name is translated to IP address باستخدام حاجة اسمها الDNS. ألا وهو ال domain name system. أنا على فكرة كل يعني كل يعني يعتبر في المحاضرات الللي فاتت قلته كذا مرة. ال domain name system بياخد sorry أنا ببعت له domain name حرفيا وليكن مثلا whatsapp.com أو مثلا facebook.com ويرجع لي أو بيرجع لي الـ IP ده علشان أنا كجهاز كمبيوتر بحفظ IP هات أو بتعامل بال IP هات ما بعرفش أتعامل بال domain name.
ولكن احنا كبشر بنتعامل بالـ Domain Name هيتقال بالتفصيل في المحاضرة السادسة زي ما أنا كنت كاتبة هنا طيب الـHTTP Protocol تعالوا نتكلم عنه شوية احنا عارفين أنه هو الـ Hypertext Transfer Protocol أنا عارفة أن ده هو اللغة بتاعتي اللي أنا بتناقش بيها مع Server
مع Web Server يعني تمام Web Server مكتوبة اهي تمام؟
فأنا عارفة أنه هو اللغة يعني أو لغة التواصل مابيني أنا لما بكون بطلب صفحة Web مابيني ومابين الـserver طيب طبعاً ده الـ HTTP هو اللي شغال في الـ Application Layer و Application Layer protocol يعني شغال في الـLayer بتاع الـ Application وشغال على port كمان من ضمن المعلومات بتاعته شغال على port 80 في الـ Transport Layer يعني إيه port 80 نرجع تاني ونفتكر أنا لما باجي أفتح connection مابيني ومابين الـserver أو
لما باجي أطلب request من الـserver ، مش أنا بطلب منه على Port معينة، وأنا بخرج من Port معينة؟ ده أنا قلته المحاضرة اللي فاتت، ارجعوا للمحاضرة بقى. كنت قلت إن أنا بخرج يعني بخرج من الـ Compu من الجهاز بتاعي في الـ Transport Layer بيبقى ببقى شايلة معلومة الـ Socket. إيه الـ Socket دي؟ بيبقى عبارة عن الـ IP included معاه مين؟ بسم الله الرحمن الرحيم
 الـ port number.
الـ port number. تمام؟ ده كده على بعضه اسمه الـ socket. فأنا عارفة أنا خارجة منين من جهازي، يعني أنا لما ببعت الـ request، أنا خارج منين؟ ولما أروح للـ server، أنا رايحة لأني server بالظبط؟ طب لما الـ server يرد عليا، يرد على أنهي برنامج أو أنهي process شغال عندي على الجهاز؟ تمام؟ طيب، أديني أنا راجعت عليها سريعًا.
اهو. HTTP message من client بيقول لي هنا الـ HTTP message، الـmessage ات اللي بيبعتها الـprotocol ده في الـ client server model في الغالب يا بتكون request يا بتكون response. في أنواع تانية احنا مالناش دعوة بيهم دلوقتي، احنا بنتكلم عن الـ request والـ response. هنرجع تاني ونطنش أي حاجة بتحصل في إيه؟ في الـ background عندنا، مش مهم.
تمام. ماشي. فكنا بنتكلم عن الـ client request، قلت إن هو بيقول لك إن الـ browser يعني بيـ request طلب وبيستقبل response. يعني الـ browser بتاعك ما أنت الـ client، تمام؟ فالـ browser بتاعك بيـ request
 HTML page وبيـ respond
 Web Server.
بياخد الـ response من الـ web server تمام؟ وبيعرض أو بيتعرض عنده الـ web object اللي انت طلبتها يعني يا جماعة أنا طلبت الـ facebook.com أنا طلبت فأنا عملت request و استقبلت بقى الرد اللي جالي من الـ server وعرضته كمان عندي كل ده بيحصل في ايه؟ في الـ client request يعني بيكون mainly دي الـ activities اللي بتحصل جواه
طبعًا كل ده بيتم إيه يا جماعة؟ بجد القلم عمال بيتوه، هو مش نقصاه. اهو. Using الـ HTTP protocol. يعني دي اللغة اللي إحنا بنتناقش بيها دلوقتي، تمام؟ طيب، الـ server response إيه اللي بيحصل فيه؟ اللي بيحصل إن الـ Web Server بيبعت لي الـ يعني أنا هو جاله دلوقتي طلب، تمام؟ هو استقبل مني طلب.
هيبعت لي بقى الـ response. فهو قال لك الـ Web Server بيـ send الـ object تمام، اللي أنا طلبتها دي من عن طريق الـ HTML base file in response to the client request كرد على طلبي أنا. طبعًا باستخدام مين؟ باستخدام الـ HTTP protocol اهو. تمام؟

طيب اللي بعده. طيب، بيقول لك بقى علشان تعمل connection، علشان أعمل connection ما بيني وما بين الـ server، فأنا بعمل يعني الطريقة اسمها 3-way handshake. أمثلها لكم كده بمثال
مثال خفيف. أنا لو قابلت حد في الشارع أعرفه، ورحت رافع إيدي. automatic الشخص اللي قدامي هيعمل إيه؟ شافني مجرد ما شافني، هيرفع إيده back يعني، اللي هو رفعت إيدي bye bye هيروح الشخص ده رافع إيده وهيعمل bye bye. كده عمل إيه؟ أنا بعت message، يعتبر بعت message، ماشي، كـ client.
لحد معين، تمام؟ والحد المعين ده لما شافني راح رادد عليا. تمام؟ فأنا مثلاً رحت ابتسمت. الابتسامة دي message أخرى إن إيه؟ تمام، يعني أنا اللي هو استقبلت الرد. ده اللي بيحصل بالظبط حرفيًا ما بين الـ يعني الـ client أنا والـ server.
اللي بيحصل إيه؟ علشان يبقى فيه connection ما بيننا، فأنا حاجة اسمها الـ 3-way handshake. اسمها ليه 3-way handshake؟ لأن هي حرفيًا 3-way handshake. أنا ببعت request أو يعني ببعت message كده. مش عارفة الدكتور قالتها ولا لأ بس أنا لقيت نفسي كاتباها فمش عارفة كاتباها بناءًا على معلومات عندي ولا الدكتور كانت قالتها في المحاضرة. ولكن ما دام مش موجودة في الـ slide ما تاخدوش الـnote ورايا. اسم الـ
اسم الـ message يعني اسمها synchronize. مش إحنا قلنا الـ messages ليها أسماء كتيرة، فمن ضمن اسم الـ message دي اسمها synchronize message. بيروح باعت رد عليا الـ server بإيه؟ يقول لي والله وصلني الـ synchronize بتاعتك، خد واحدة synchronize لأن إيه؟
يعني أنا بعت له قلت له إيه؟ عايزين نفتح connection. رحت أنا قلت له وصلني الـ message بتاعتك، يلا نفتح connection. هيروح مأكد لي إنه إنه هو وصله الإيه؟ الـ synchronize دي. تمام؟ أول ما أكد لي كده خلاص الـ connection فتحت، اتفتحت في إيه؟ اتفتحت في 3-way handshake.
فتعالوا نقرأ الـ slide. 
Client initiate TCP connection ماشي؟ to server على port 80. أول حاجة بتفتح connection يعني بتـ create socket يعني بيخرج من عنده ماشي بـ IP address رايح لـ port معينة، الـ port دي هي مين؟ port 80، فهو كده فتح الـ connection، والـ server بيـ accept الـ connection دي من الـ client.
ماشي، خلاص هم اتفقوا إن هم يتكلموا بلغة الـ HTTP وخلاص الـ connection اتعملت. الـ HTTP message بقى بيتم بيحصل لها exchanging ما بين الـ browser اللي هو الـ HTTP client بتاعك أنت and الـ Web Server بتاعه هو هناك اللي هيرد عليك. الـ messages بتتبعت. الـ messages دي اللي أنا لسه قايلاها اللي هي الـ synchronize والـ acknowledgement.
مش مش مكتوبة ما تاخدوهاش كـ note يعني. تمام؟ بس أعتقد دي اتقالت في الـ lab يعني، أنا الدنيا بتدخل عندي في بعضها. ماشي؟ طيب الـ HTTP is stateless ليه؟ ليه stateless؟ لأن أنا لو فتحت دلوقتي لو فتحت دلوقتي Google وكتبت عليها wikipedia.com أنا كده عملت connection ما بيني وما بين Wikipedia.
قفلت Wikipedia ورحت فتحتها تاني. كده أنا فتحت connection تاني ما بيني وما بين Wikipedia. يعني إيه؟ يعني Wikipedia ماعرفش من المرة اللي فاتت إن أنا ما زلت نفس الجهاد اللي فتحت كمان مرة يعني ماعرفش كده. هو ده بالنسبة له شخص جديد تمامًا. فتحت مرة فتحت مرتين فتحت 10، اقفلني على قد ما تقفلني في كل مرة تقفلني فيها هفتح connection.
فهو stateless يعني ماعندوش information، ماعندوش معلومات. نقعد بقى ندور بقى احنا طول الإيه؟ المحاضرة على القلم. فين القلم؟ اهو. قال لك هنا has no information عن الـ past client request. مالوش دعوة بالـ request اللي أنت بعته قبل كده. مهما بعت هيقعد يفتح connection من أول وجديد، مجرد ما قفلت الـ connection يعني. تمام؟
طيب، ماشي. تعالوا بقى احنا عمالين نتكلم عن بنفتح connection ومش عارف إيه، طيب إحنا إحنا حرفيًا ما بناخدش بالنا من كل ده يا جماعة. إحنا إحنا مجرد ما بنكتب ولو النت شغال يعني سريع وكده، مثلاً whatsapp.com sorry،  WhatsApp web مثلاً، بيجي في ثانية بيفتح على طول يعني. ما بياخدش وقت إلا لو مثلاً بقاله فترة وبيحمل الـ messages. فـ
لكن في الطبيعي لا بيتفتح على طول هو وأي Web page يعني. طيب، مش ده فيه time في الموضوع؟ طيب، عايزين بقى نتطور في مرحلة حساب الـ time. تمام؟ طيب، تعالوا بقى نعرف قال لك الـ time اللي أنا هحسبه هنا حاجة اسمها الـ Round-Trip Time. إيه بقى الـ RTT ده؟ قال لك ده عبارة عن الوقت.
for small bucket عشان تتحرك من عند الclient للـserver 
and back من عند الclient للـserver
 and back تمام؟ طيب ده معناه إن الـ RTT ده هو الزمن بعد ما الـ hand check يخلص يعني أنا بعت عشان أفتح connection
و جا لي الرد على أن الـ connection ما عنديش مشكلة أن أنا أفتحها و أنا خلاص يعني بعتله أن أنا يعني بعتله acknowledgement و بتقول آه أنا جا لي ردك فكده أنا خلاص فتحت الـ connection فالـ RTT ده جماعة وقت ما بفتح يعني وقت ما بيكون الـ connection اتفتحت خلاص الزمن اللي الـ connection فيه بتكون اتفتحت بعت الـrequest
جالي جالي الـ response يعني هنا هو طبعًا بعت لي الـ response وأنا استقبلته يعني هنا أنا استقبلت الـ response بتاعه. فالوقت الزمن ده بسميه إيه؟ بسميه زمن الـ RTT الـ Round Trip Time. الـ RTT بيتحسب إزاي؟ القانون بتاعه 2 في الـ propagation time. اتكلمنا عن الـ propagation time مش هقولها تاني.
طيب الـ Total Transmission Time بقى أنا هنا أنا هنا اتكلمت عن إيه؟ اتكلمت عن الحتة دي بس. طب هو ده بس اللي بيحصل؟ لا. لا، مش ده بس اللي بيحصل. أنا بعد ما جالي إن هو إن الـ server موافق على إن هو يفتح connection وأنا استقبلت الرد ده المفروض أنا ببعت له acknowledgment وهو بيروح رادد عليا بمين بقى؟
الله ينور بالـ HTTP-based file الـ HTML يا جماعة وعادي كده موافقين ع الكلام لا طبعًا الـ HTML-based file. بيبعت لي الصفحة والمفروض محملة بالـ Object صح؟ ما ده اللي أنا طالبه، بما أنك أنت وافقت ع الـ connection ما يلا بقى تبعت لي الـ Page. طيب، ما يلا بقى تبعت لي الـ Page دي تعالوا نعرف إزاي بنحسبها.
قال لك الـ Total Transmission Time هو عبارة عن أنا مش عارفة زوري بيوجعني وقت ما باجي أسجل. الـ Total Transmission Time هو الـ initial request اللي أنا الـ initial request time 
plus الـ web page object transmission time. إيه الموضوع ده؟
عايزة أمسح بس فوق كده عشان إيه نلخص الموضوع ده بشكل بسيط كده هنسهل على نفسنا قراية بقية المحاضرة يعني بقية محاضرة بقية part 1. أنا بفتح connection. تمام؟ الثابت في الموضوع إن الـ connection ده الـ initial request يا ربي ع القلم وسنين القلم.
صبرك يارب ها. أهو. الـ initial request الثابت بتاعه الـ initial request transmission time اللي هو ده يا جماعة بيكون دايماً 2 RTT
2 RTT ليه؟ هنعرف دلوقتي. واحدة.
للكلام للأنا لسه قايلاه ده واحدة للـ Three Way Handshake اللي هو يعني نفتح connection. الـ Three Way Handshake مش لازم أكتبها كلها يعني احنا إيه عارفين.
التانية التانية هتكون عبارة عن الرد بتاع الـ server بتاعي للـ HTML BASE FILE
يعني الـ HTML base file ده بيتبعت لي في في one RTT. تمام؟ يبقى هنا عشان يبعت لي الـ HTML إيه؟ base file.
بس كده؟ لا ده لسه في شوية objects جاية في الطريق، يعني مش ده الوقت مش ده كل الوقت، يعني أنا كل ده بقول لكم إن الثابت في الـ connection في وقت الـ connection
أو في وقت الطلب يعني بمعنى أصح، اللي هو الـ Total Transmission Time يعني بمعنى بمعنى أشمل، هو عبارة عن اتنين RTT ثابتين دايماً. ليه ثابتين دايماً؟ لأن أنا عشان أفتح أي connection في الحياة، محتاجة أعمل حاجتين: محتاجة أعمل الـ Three-Way Handshake مع الـ server، والـ server يروح رادد عليا بالـ HTML base file. طيب، رد عليا بالـHT يعني عمل كل الصحنوكيات دي، كده حصل إيه؟ كده حصل اتنين RTT ثابت.
طيب، غير كده؟ غير كده في شوية objects هتجيلي محملة. طيب، الشوية objects دي بقى ليها حسبة بقى تانية. يعني هتبقى حسب إيه بقى؟ هقولكو دلوقتي. هتبقى حسب نوع الـ connection اللي أنا فتحتها. Mainly أنا عندي نوعين. يعني two category. أنا عايزة هو للأسف دي المكان صعب أوي يعني.
مشكلة أنا مش محضرة حتة اكتب فيها بصراحة. يعني الواحد مفيش وقت.
طيب ماشي، إحنا هنشوفها في الـ slide. طيب، حلو. تعالوا نعملها هنا في فراغ تحت. بس يعني كده أنتوا فهمتوا إن الجزء الأولاني بتاع الـ initial request اللي هو دايما ثابت، أهو حتى هو قايلها لكو تحت هنا أهو، الـ initial request transmission time باتنين RTT. واحد للـ TCP connection، اللي هي الـ three-way handshake، 
and one for the HTML base file. تمام؟ الجملة الكلام ده جميل؟ الكلام ده جميل.
محتاجين إحنا دلوقتي ندور على إيه؟ على الجزء التاني اللي هو الـ web page object transmission time. ده اللي إحنا هنتـ targe عليه دلوقتي، إزاي نحسبه؟ تمام؟ مسألته لذيذة جداً فوق ما تتخيلوا، إفهموا بس التفريعة بتاعتها وبجد تحفة يعني.

فتعالوا هنا نفرعها أهو. قال لك: في عندك connection ببقى بسميه non-persistent
وحدة بسميها persistent طيب دي ايه ودي ايه قالك الـ connection دي هي
 الـ connection بفتحها يعني انا بفتحها مرة وحدة لكل object جاي بمعنى لو انا عندي خمسة object يعني مثلا صور ولا حاجة خمس صور في الصفحة في الـ HTML file
فأنا فتحت أو معايا اتنين RTT ثابتين للـ connection مع الـ base file 
plus هعمل لكل object من دول هما خمسة صح لكل واحدة من دول هعمل لها كام يا جماعة هعمل لها RTTـهيا لوحدها يبقى تاني
لكل object بفتح لها connection 
for each object we have to create a new connection 
طيب والله يا جهاد انت لسه قايلة ان اصلا عشان ا create
new connection فانتي بتاخدي 1 RTT يعني كده انت عايزة تقولي ان انا باخد 1 RTT في حالة الـ non-persistent
 1 RTT لكل object بالظبط ده اللي انا عايزة اقوله
بمعنى أنا لو عندي خمسة Object أنا لو عندي خمسة Object في الصورة في الـ HTML file أو في الـ Web page اللي أنا طلباه دي ، طلباه ده فمحتاجة واحد RTT لكل صفحة 
لكل Object
يبقى كده total الـ RTT بتاعي هيكون كام 2 أساسيين عشان أفتح الـ Connection وعشان أجيب الـ Base HTML File و 5 RTT تانين لكل Object تاية موجودة جوه هذا الـ HTML Base File كده أنا فين؟ أنا في الـ Non-persistent HTTP Connection كده الـ Connection اللي أنا فاتحاه اسمه non-persistent
بس دي كده يا جماعة الطريقة البدائية جدا الناس رجعت قالت ايه ما تيجوا نحاول نحسن الموضوع شوية فراحوا عملوا يعني جوا الـ non-persistent جوا الـ non عملوا ايه قالك ما تيجي نعمل parallel connection
parallel parallel connection
 و و اللي هي non-parallel هي اسمها non-parallel و parallel صح؟ و without و with. ماشي. parallel connection وهنا without و without. طيب.

يعني إيه parallel connection؟ طبعاً الـ without هو اللي إحنا لسه شارحينه ده. يعني هما كانوا عايزين يحسنوا الـ without فعشان كده إيه؟ تطرقنا للـ parallel connection
لو أنا جيت قولتلكوا، لو أنا جيت قولتلكوا أنا الـ connection دي عملت فيها شوية مواسير. تمام؟ عملت فيها شوية مواسير. كل ماسورة أو الـ object دي هتتوزع على المواسير دي وتتبعت في نفس الوقت. إيه اللي هيحصل؟ بدل ما كنت محتاجة، بدل ما كنت محتاجة one RTT لكل object-اية، دلوقتي...
أكني مثلا، لو أنا قلت مثلا خمس، أنا على فكرة قلت خمس مواسير، ويعني كده بدل ما الـ object، بصوا يا جماعة، بدل ما الـ object هتكون ماشية في مصورة واحدة، objectية ورا التانية وراء التالتة ورا الرابعة ورا الخمسة، وكل واحدة منهم هتاخد لها one RTT ، الموضوع ما بقاش كده، ده الموضوع بقت ماسورة ، التانية.
التالتة الرابعة الخامسة وكل كل objectاية كل objectاية أدي object one two three four five كل objectاية من دول هتعدي في الماسورة في نفس الوقت عارفين يعني إيه في نفس الوقت؟ الناس لقطتها الحمد لله يعني إيه بقى؟ يعني هحسب الوقت الماسورة الواحدة وبارك الله فيما رزق طب الماسورة الواحدة بتعدي كم object؟ أنا هنا عرفت أنها بتعدي objectاية واحدة
تمام؟ يبقى وقت الـobject اية الواحدة هو الوقت اللي أنا هحتاجه هنا.

يبقى أنا عشان أعمل يعني يبقى أنا علشان أعمل connection non-persistent 
non-persistent أه، non-persistent parallel الموضوع هيختلف، بقى عندي اتنين RTT أساسيين أصلاً عشان أفتح الـ connection.
هزود عليهم زمن الإيه؟ الماسورة الواحدة، الماسورة الواحدة بيعدي فيها objectاية واحدة، فهو 1 RTT في إيه؟ في الـobjectاية الواحدة. هيديني كام؟ اتنين RTT أساسيين plus 1 يديني كام؟ تلاتة. تمام؟ طيب، ده جميل، الكلام ده جميل جدا. طبعاً ده with parallel. 
Without parallel زي ما إحنا قلناها، تمام؟ طيب، إيه هو بقى الـ persistent؟ الـ persistent
قال لك بص يا سيدي، أنا بفتح، راح القلم تاني. أهو. أنا بفتح، قال لك إن كل الـ object، يعني أنا أنا فتحت connection، تمام؟
ومثلاً مثلاً وليكن الصفحة دي فيها تمانية object. بجيبهم مرة واحدة في الـ connection الواحدة، يعني في الـ connection اللي أنا فتحتها دي.
بجيب الـ objects دي كلها مرة واحدة. يعني إيه بجيب الـ objects دي كلها مرة واحدة؟ يعني بتاخد one RTT فقط. فاهم يعني فاهمين الفكرة؟ يعني إيه؟ يعني بصوا يا جماعة: عندي دلوقتي الـ client أهو وادي الـ server أهو، تمام؟ في ما بينهم هنا أهو الإيه؟ وليكن دي كده إيه؟ حاجة زي جدار كده، يعني wall ماشي؟
كنت هقول إيه؟ اه، كنت بتكلم في الـ persistent. في الـ persistent. أنا فتحت connection ما بيني وما بين هذا الـ server أهو. مش عارفة إيه يعني إيه لازمة الـ wall في الموضوع بس ما علينا. أنا فتحت جدار أهو ما بيني وما بين الـ server، وفضل مفتوح، يعني فضل مفتوح، وهو ده اللي هيعدي كل الـ objects.
تمام؟ فعشان كل object مرة واحدة يعني أنا مش محتاج كل ما أجي أبعت object أفتح connection يعني تاني يعني إيه الكلام ده؟ يعني أنا مش محتاج 1 RTT لكل object؟ لا أنا محتاجة 1 RTT فقط لكل الـ objects تمام؟ فكده يعني ده الكلام اللي متقال هنا
يادي النيلة على القلم، سنين القلم. أهو. In which all objects، آدي الـ persistent HTTP، in which all objects. أنا حاسة إن أنا أجيب الـ laser أحسن يعني، بدل الـ بدل الـ توهان ده. In which كل الـ objects بتتبعت باستخدام one opened connection من الـ source للـ destination.
بـ connection واحد. طيب. ده كده اختلافها عن الـ non-persistent. طيب. حتى الـ persistent فيها تحسين. الـ persistent فيها تحسين. قالك أنا ممكن أستخدم without pipeline حاجة اسمها without pipeline. كل دي يا جماعة انواع connection. متقلقوش هعمل recap سريع بعد ما أخلصه عشان وأنحل مثال والدنيا تبقى لذيذه وهتتبسطوا جدا.
. without pipeline و ده with pipeline. With pipeline.
إيه بقى الموضوع ده؟ تعالوا نقرأه من الـ slide، هنرجع لها تاني لا تقلقوا.
آدي الـ non-pipeline وادي الـ pipeline.
قال لك لو أنا من غير pipeline
فأول حاجة أنا بفتح connection ودي اللي بتاخد الاتنين RTT يعني أنا كده كده بفتح connection دي بتاخد اتنين RTT وبرجع قالك وبعد كده أنا ببعت كل الـ object التانية في connection واحدة أنا ببعت كل الـ الـ objects التانية في connection واحدة يبقى أنا كده فتحت connection مرة دي الـ connection one أهي.
علشان إيه؟ يتبعت لي من خلالها، من خلال هذه الـ connection يعني. يا جماعة اعتبروا 
الـ connection دي لما لما آجي أتكلم أو أقول كلمة connection، أكنّي كده حرفياً مثلاً إيه؟ عملت كوبري. تمام؟ عملت كوبري عشان أتكلم مع الـ server. ورحت هدمته بعد ما خلصنا كلام. فأنا دلوقتي بقول لك: من غير ما أستخدم الـ pipeline.
فالـ connection اللي أنا فتحته ده فأنا هفتح connection مرتين المرة الأولانية علشان أصلا أتكلم مع السيرفر ويبعتلي الـ html base file المرة التانية علشان يبعتلي كل الـ objects مرة واحدة تمام فهو ده الكلام اللي بيقوله الـ non-pipelint
 take two RTT then sorry we send all
  الـobjects
using one RTT لكل الobject. 
فالـ TCP Connection 
for each object is not required
بيقولك لكل object يعني لكل object-اية object-اية أنا مش محتاج connection-اية connection-اية. لا، يعني مش كل شوية هفتح connection عشان يتبعت لي صورة، مش كل شوية هفتح connection عشان لا خالص. هي connection واحدة هتتبعت هتتفتح.
كوبري واحد هبنيه وهقعد أحمل منه من عند السيرفر يعني الإيه؟ الـ object واحدة واحدة هتجيلي بقى في السكة. تمام؟ طيب، ماشي. طب أُومال إيه بقى التحسين بتاع الـ pipeline؟ قال لك أنت محتاج one RTT لكل الـ object اللي في الحياة.
وحدة بس يعني ايه تعالوا نعملها على صورة على الصورة دي عشان في ناس عندها مشاكل مع الصور بدون ذكر اسمها اسمها سيام إبراهيم بص يا سيام أنا هنا بتكلم عن مين أنا هنا هكون بتكلم عن الـpersistent عامة مرة without الـ pipelining ومرة with الـ pipelining
ماشي، مش أنا قلت لو أنا بعمل connection هو دلوقتي هعتبره إن ده الـ client بتاعي، واللي عمال يوصل له من الناحية التانية ده الـ server بتاعي، ماشي؟ طيب، أنا هنا واقف أهو، بعت إيه؟ بعت الـ request. إترد عليا، وبعد كده هبعت عشان يجيلي الـ base الـ base file
وجالي الـ base file. أنا وقفت عند هنا خلاص كده جالي الـ base file. حصل إيه؟ أخدت اتنين RTT مرة عشان أفتح الـ connection ومرة علشان يجيني الـ base file. الله ينور ماشي؟ ده كده كده ده شيء أساسي. طيب بعدين أنا قلت أنا بفتح connection واحدة لكل الـ objects لكل الـ objects اللي جاية بعد كده.
صح؟ بيجيلي فيها الـ object يعني مش محتاجة ان انا افتح connection و ساعتها يعني كده يا جماعة يعني مش محتاجة ان انا افتح connection و ساعتها يجيلي يعني كل object يجيلي مع فتح الـ connection لا فقال لك هنا اهو الـ first object انا بعت request عشان اجيبه كده خلاص الـ connection اتفتحت عامة مش هفتح حاجة تانية خلاص
فالـ first object هبعت أجيبه هيتبعت لي خلاص أخد RTT. الـ second object هبعت أجيبه هيتبعت لي كده خلاص أخد كمان RTT. ده مين؟ ده في الـ persistent without the pipelining.

طيب، في الـ persistent مع الـ pipelining بصوا كل الـ objects بتيجي بـ one RTT واحد.
يعني كده كده احنا متفقين على الاتنين RTT الأساسيين يا جماعة بتوع الـ connection الأساسية تمام؟ إن أنا عندي connection  واحدة كده كده هتتفتح هنا وكده كده هتتفتح هنا تمام؟ يعني مش هحتاج لكل object من دول أفتح connection جديدة لا مش محتاج ده طيب إيه الفرق ما بين ده وده؟
إن لا، هنا الـ object بيجي لوحده، يعني هما بييجوا واحدة واحدة يعني واحدة ورا واحدة في خلال الـ connection أو في خلال الكوبري اللي اتبنى ده. لكن هنا لا، أنا ببعتهم كلهم مرة واحدة، دفعة واحدة بيتحركوا كل الـ objects يعني. تمام؟ تعالوا تعالوا نفصل ده بمثال أكتر. بس قبل ما نفصله بمثال تعالوا نقرأه من الـ slides يعني عشان نستوعب الدنيا أكتر.
وكثر وكثر. احنا خلاص كده قلنا الconnections عندي منلي حاجتين non-presistant و-presistant خلاص اتكلمنا عن دي تعالوا كنا بنردش في ال-presistant. طيب طبعا ده non-presistant تاني وزاوة الparallel connection ده احنا قلناه وقلناه بالتفصيل ومفروض نهو تفاهم يعني. حسب تقنيب ضميري ان انا ما قررتش السلايد مش عارف.
طيب عشان ما كروتش بيقول لي هنا كل بس لا عايزة ادخل الدنيا في بعضها معلش معلش حقكم علي نقرأ دي قال لك احنا قرأنا دي خلاص تعالوا ناخد الـ advantage بتاعت الـ persistent وبعد كده نرجع ناخد العيوب والمميزات بتاعة الـ non persistent.
ايه ميزة الـ persistent في الموضوع؟ قالك هو بياخد lower CPU and memory usage لانك انت بتبعت الـ objects كلها مرة واحدة. يعني انت مش محتاج يعني بصوا يا جماعة كتر الـ requestات بيحمل عالـ CPU بيعمل ضغط. فكل ما كتر كل ما هتعمل connection كل ما تفتح connection ما بينك وما بين الـ server علشان تستلم object او عشان يجي لك object معين دي كلها requestات رايحة و.
. respond، request و respond، 
كل ده load وحتى load في الـ network نفسها.
فقال لك هنا، من من مميزات الـ persistent إن هو بيوفر لي أو بيبقى فيه lower CPU و memory usage، علشان فيه أقل عدد من الـ connections. تمام؟ كلام بديهي.
 Reduced network congestion اللي هو يا جماعة الـ traffic يعني أو الازدحام قصدي...
علشان مافيش requestات رايحة جاية كتير. طيب،
 Reduced latency in subsequent requests مافيش handshaking كتير، ما هو
 الـ handshaking ده أنت حرفياً 3 messages. واحدة رايحة، التانية جاية، واحدة رايحة. يعني كل دي request respond، request وهكذا.
تمام؟ فما فيش الكلام ده كله. المفروض إن أنتوا كده استنتجتوا إن كل الـ advantages دي هتكون عيوب هناك عند الـ non-persistent. ليه؟ لأن الـ non-persistent بيطلب كل يعني لكل object بيفتح connection، صح؟ ده معناه إن هو بيعمل congestion في الشبكة، ده معناه إن هو محتاج CPU أو يعني بيستهلك CPU. ده معناه إن هو بيعمل handshaking كتير، صح ولا إيه؟
فمميزات الـPersistent هي عيوب الـNon-Persistent طيب إيه هي بقى عيوب 
الـNon-Persistent؟ قالك إن الـNetwork Resources
 may be kept occupied even when not needed and may not be available to other
 يعني إنت ممكن تفتح مثلا Web page وما تلاقيش الحاجة تبعتت لك لو الـConnection اللي اتفتح ما بينكم وبين السيرفر كان Persistent
ليه؟ لأن أنت بتطلب الـ objects كلها مرة واحدة في connection واحد. لو الـ connection ده عمل fail أو مثلاً حصل أي حاجة، الـ objects كلها مش مش هتتبعتلك، كلها مرة واحدة، أنتم متخيلين؟ ده على عكس الـ على عكس الـ non-persistent. من ضمن مميزاته إن أنت بتطلب object-اية object-اية، فممكن تلاقي صورة حملت.
فيديو حمل، اللينك ده مثلا قام يعني قام خلاص بالسلامة وحمل هو كمان لان انت بتطلب object object فده من ضمن مميزات الـ non-persistent ولكنه عيب عند الـ persistent. تمام طيب سريعا كده الadvantages بتاعت الـ non-persistent هتلاقوا نفس الكلام اللي احنا قلناه حرفيا انا هنا ما بـ waste-يش الnetwork resources علشان الconnection بتفتح فقط لما يكون فيه some data يعني هنا بصوا بيقولك انا
يعني بفتح الـ connection لما انا هبعت الـ photos. يعني لما الصورة هتكون بتتبعت لكن هناك في الـPersistent انا هفتح الـ connection كده كده يعني كده الـ connection هتفضل مفتوحة ما بيني وما بين الـ server. ليه؟ عشان يحمل الصور والـ photos او الـ Objects بشكل عام. الـ photos والصور بشكل عام. فكده كده  الـ connection هتفضل مفتوحة. اقول لك هنا بقلت انا بفتح  الـ connection في حالة بس اني طلبت obj-
في حالة أن في الـ Object ده هيتبعت لي. فما بـ waste-يش الـ Network Resources. طيب الميزة التانية زي ما احنا قلنا قالك ده more secure. مفيش connection مفتوحة. أي حد ممكن يدخل الـ connection دي ويخترق ويبدأ إن هو يبعت لي أنا requestات. يعني فالموضوع secure. لأ ده أنا بفتح connection في اللحظة بس اللي أنا عايز أفتح فيها عشان أستلم مثلا الصورة دي وأقفل على طول.
لكن الـ connection هناك بيفضل مفتوح زي ما انتو شايفين زي ما كنتو شايفين قصدي في الرسمة الـ connection بيفضل مفتوح لحد ما الـ objects كلها توصل يعني تمام؟ طيب الdisadvantages بتاعة الnon-persistent قالك الـ connection محتاج greater CPU وده بيبقى overhead في transmission data بيحصل overload يعني أو
congestion يعني في الـ network وهكذا، ده اللي إحنا قلناه. قال لك معظم 
الـ modern browser زي الـ Chrome يعني and Firefox
 use the persistent connection. تمام؟ وادي الرسمة عشان سهام. وده كده خلاص قلناه، وده كده كان إيه؟ اختصار آه، comparison 
comparison لطيف ما بين الـ HTTP connection 
non-persistent منه والـ persistent.
تعالوا كده نعمل overview سريع علشان ما أكونش أ scroll-يت في في الصور اللي فاتت فكنت توهتكوا. أنا عندي نوع بيحتاج إن أنا أفتح connection لكل object لكل object نفتح connection نفتح connection.
 وعندي نوع تاني لا، بفتح connection، connection واحد one...
connection وده اللي هيتبعت فيه كل الـ object. تمام؟ طيب في الـ non persistent قلنا في ايه ؟ parallel وده اللي بيقللي الوقت صح ولا ايه؟ وكان في الـ non parallel
sorry الـ without يعني الـ without parallel
الـ persistent كان فيه pipeline.
وده المحسن يعني وكان فيه without الـpipeline تمام؟ طيب ماننساش انو ال parallel كنا ساعتها بنشوف عدد يعني كام object هيتحرك جوا الماسورة الوحدة واضربه في الواحد اللي هو 1 RTT يعني انو كل object عايز له RTT هاية
ما ننساش ده. طيب، وبالـ logic كده بالفهم، تمام؟ طيب. فهنا بقى بيقول لك إيه؟
 at most one object sent over TCP connection. 
يعني إيه at most one؟ يعني بالكتير أوي واحد، يعني يا إما هبعت يا إما ما هبعتش. بس على يعني، بس في واحد هيتبعت في خلال الـ connection دي.
يعني من الاخر مش بفتح connection عشان ابعت اتنين مستحيل هو بس واحد ياما مبعتش خالص تمام؟ القلم.. ماشي
 downloading multiple objects required multiple connections
 علشان ا-download objects كتيرة بحتاج connections كتيرة ده كلام عرفناه بقى خلاص suitable for pages with multiple objects قالك ده مفيد للـpages
اللي هي بـ multiple objects، اللي عندها objects كتيرة قوي. ليه؟ لأن أنا لو في، لو في web page يا جماعة عنده objects كتيرة جدا، صعب قوي عليا أنا إن أنا أروح طالبهم كلهم مرة واحدة. لأن هم لو حصل لهم fail هيحصل لهم كلهم fail مرة واحدة. فده صعب عليا يعني. فالأدق يعني والأحسن إن أنا أستخدم الـ non-persistent في حالة -
أن أنا عندي web page فيها objects كتيرة يعني. ماشي؟ طيب الـ persistent قال لك multiple objects can be sent over single TCP connection.
 هي connection واحدة اللي بفتحها يتيمة، وببعت فيها كل حاجة في الحياة. ماشي؟ يا إما
 بـ display كل الـ pages يا إما لا. يا بعرضهم كلهم يا معرضش خالص.
تعالوا نحل سؤال ونشوف قد إيه الدنيا لذيذة. بيقول لك
 assume that you have file، أنت عندك file، أنت بتطلب file أهو، تمام؟ الـ file ده فيه تلاتين embedded image، يبقى أنا عندي تلاتين object. ماشي. أنت عايز إيه؟ قال لك 
images and base file are small enough to fit in one TCP connection.
ماشي. يعني دي معلومة لمعلوماتنا يعني إنه الـ objects والحاجات صغيرة لدرجة إنها عادي ممكن تـ fit في إيه؟ في one TCP connection، مفيش مشكلة.
 How many RTT are required to retrieve the base file؟ 
محتاج كام RTT علشان أستقبل الـ base file والصور؟
في اتباع الـconditions دي. لو الـconnection بتاعي كان non-persistent، أقف. أقف.
 يعني إيه non-persistent؟ يعني باخد connection واحد one connection ،
 لكل for each
object. طيب يبقى تعالوا نبدأ تاني السؤال الثاني بيقول هنا أنا عايز
 non persistent connection يعني انا بفتح connection لكل object الـ connection لكل object بيكلفني اتنين RTT ، منساش الموضوع.
ده، تمام؟ قال لك ده وكمان من غير parallel connection. يعني أنا مش هقلل عدد حتى الوقت بتاعي. يبقى أنا كده كده معايا اتنين RTT للـ connection الأولاني، اللي هو أنا برجع فيه الـ base HTML file وبفتح فيه أصلا connection ما بيني وما بين الـ server. 
وبعد كده أنا عندي هفتح connection لكل object. يعني إيه connection لكل object؟ يعني كل object.
object عايزله اتنينRTT اتنين في عدد الـ object بتاعي اللي هو التلاتين ما هو كل object ايه محتاجة اثنين. فاتنين في تلاتين بستين وplus الاتنين فيها كام؟ اتنين و ستين. 
أنا بس عايزه أصلح معلومة وبعتذر جدا يعني. الكلام اللي أنا قلته ده هنا هو اللي صح. ليه؟ لأن أنا قلت هفتح connection لكل object. الـ connection بتكلفني أصلا اتنينRTT
أنا هنا وأنا بكلمكم عن الـ non-persistent 
without الـ parallel connection، قلت لكم بفتح يعني بعمل one لكل RTT، لا sorry، لكل object. لا هو مش one، هو فعليًا بيكون اتنين. ليه اتنين؟ اتنين لأن الـ connection أنا لسه قايلة إن الـ connection بتكلفني اتنين RTT.
تمام؟ فـ فاتمنى تكون الحتة دي الحتة دي ما توهتكوش فيها. مش مش عايزة أزود عدد يعني وقت الفيديو أكتر من كده يعني. تمام؟ طيب. نيجي تاني على نيجي على اللي تحتها 
non-persistent connection with عشرة parallel connections.
عشرة parallel connections، تعالوا بقى نشوف. يبقى أنا عندي تلاتين تلاتين object ماشي؟ من واحد لحد تلاتين. تلاتين object. التلاتين دول هيمشوا في كام؟ في عشرة في عشر مواسير. تعالوا نعرف الماسورة الواحدة هتمشي كام object؟ هنقول إيه؟ التلاتين object على عشرة. فاكتشفت إن الماسورة الواحدة هتمشي لي كام؟ تلاتة object. يبقى في تلاتة object هنا هيتحركوا في الماسورة دي. يبقى أنا لو جبت الـ time بتاع الماسورة الواحدة، يبقى أنا كده جبت الـ total time بتاع مين؟ اللي الـ object ده هيتحركه.
وأنا كده كده معايا أصلاً الثابت مين؟ معايا الثابت وقت اللي أنا فتحته للـ connection الأولانية اتنين RTT، زائد أنا عايز أحسب دلوقتي الوقت اللي أخده الـ objects. طيب، الوقت اللي أخدته 
الـ objects قد إيه؟ قال لك أنا هنا هيبقى عدد الـ objects بتاعتي اللي هتتحرك تلاتة في كل واحدة محتاجة لها اتنين RTT، يعني محتاجة لها connection.
فتضرب في اتنين. اثنين في تلاتة بستة و اتنين تمانية.
تمام؟ كده جميل، كده أنا حسبت أول اتنين. أتمنى يعني الموضوع يكون بسيط. قال لك بقى عايز أحسب الـ RTTهات بتاعتي لو أنا persistent connection من غير الـ pipelining
persistent من غير إيه؟ الـ pipelining.
طيب، يعني إيه persistent؟ يعني هي connection واحدة اللي هتتفتح. 
تمام؟ طيب. وبعدين، يعني إيه connection واحدة هتتفتح؟ Without pipelining يعني إحنا قلنا إن من غير الـ pipeline يعني أنا محتاجة لكل object
كل object يحتاج one RTT بس يعني انا هفتح one connection وكل object هطلبه محتاج له one RTT
one RTT ماشي لكل object صح ولا ايه فالـ connection بتاخد اتنين RTT ومعايا one RTT.
لكل object وهنا عدد الobjects بتاعتي تلاتين صح ولا؟ فاتنين في واحد، واحد في تلاتين بتلاتين و اتنين فيفها الكام؟ اتنين وتلاتين ده عشان ايه؟ 
عشان انا معايا persistent connection من غير الـ pipelining طب لو بـ pipelining ده انا عايزة one RTT
لكل الـ object كلها وده من الرسمة يا جماعة بصوا الـ first object جيه في one RTT
 الـ second object  جيه في one RTT وكده كده بـplus عليهم مين؟ بـplus عليهم الاتنين RTT اللي هما دولت الاتنين RTT الأساسيين اللي فتحت بيهم الـ connection المفروض أن أنتوا يا جماعة بناء على الرسمة دي قادرين تتخيلوا رسمة الـ non-persistent
Persistent. أنتوا عارفين إن الـ connection دي هتتفتح لكل object تحت؟
 يعني قبل كل object من دولت في الـ non-persistent هيتفتح لها بسم الله الرحمن الرحيم هيتفتح لها connection بـاتنين RTT. 
فحاولوا تربطوا الرسمة كده. يبقى الـ persistent أنا أنا قلتها كذا مرة عشان صحابي يزعلوا.
تعالوا هنا أهو، ففي السؤال الأخير persistent connection with pipelining أنا محتاجة RTT لكل الـ object ات
أهي، كل الـ objects هي one RTT واحدة. تمام؟ فبقول اتنين RTT ده للـ connection الأساسية، ما لناش دعوة بيها أو يعني ده كده كده أساسي.
و one RTT فقط. إحنا كده كام؟ تلاتة. تمام؟ طبعًا مش ملوش لازمة إن أنا أقول ده دلوقتي، بس يعني كنتوا حاولوا تـpause وا الفيديو وتحلوا السؤال يعني، قبل ما ما أحله أنا يعني. أدي الأولاني اتنين وستين.
و التاني تمانية، التالت اتنين وتلاتين، التالت تلاتة، الحمد لله. 
يلّا يا جماعة ده Part 2 إن شاء الله.