';function Lazy(){if(LazyAdsense){LazyAdsense = false;var Adsensecode = document.createElement('script');Adsensecode.src = AdsenseUrl;Adsensecode.async = true;Adsensecode.crossOrigin = 'anonymous';document.head.appendChild(Adsensecode)}}
أخر الاخبار

احترف برمجة الشبكات وبروتوكول — TCP/IP With Microsoft Visual #cالسي شارب#

احترف برمجة الشبكات وبروتوكول  — TCP/IP
With Microsoft Visual  #cالسي شارب#
Chapter 1 TCP/IP Layers & Message
Encapsulation Overview & Introduction to
Network Programming

الدرس الاول TCP/IP Layers Encapsulation Overview : 1.1
من المعروف أن الشبكة هي مجموعة من الأجهزة متصلة مع بعضها عبر وسيلة اتصال معينة
ومن هنا سيندرج لدينا التقسيم المعروف لمنظمة OSIلعملية الاتصال والتي تمر بسبعة
طبقات لكل طبقة منها وظيفة معينة يتم إضافتها آـ  Headersعلى البيانات المرسلة.وتم
اختصارها إلى خمسة طبقات في برتوآول  TCP/IPوتبين الصورة المرفقة هذه الطبقات:  



تبدأ عملية توليف الرسالة المرسلة في الـ  Application Layerووظيفتها هنا التعامل مع
الرسالة نفسها وتحويلها من صيغة نصية إلى  Dataيمكن إرسالها عبر الشبكة ، ففي
برمجيات الدردشة  Chatيتم تحويل النص المكتوب إلى  ASCII Codeثم إلى مجموعة من
 Binary Codeأو الـ  Bitsتوضع في مصفوفة لتجهيزها وإرسالها عبر  Socketوالذي يربط طبقة
 و يوضح الشكل التاليInternet Layer  أو الـNetwork Layer  مع الـTransport Layer الـ
طبيعة عمل الـ: Socke:


Network  فيDestination IP  معTransport Layer  المحدد فيPortحيث يربط رقم الـ
 Layerويقوم الـ Serverبالطرف المقابل بالموافقة على طلب الـ Clientوتقتصر وظيفة
الـ Socketفي الـ Serverعلى ربط رقم الـ Portمع الـ  Socket Optionالتي يتم تحديدها ثمالبدء بعملية التصنت على الـ Portالذي تم تحديده ، ويمكن في هذه المرحلة وضع شروط
معينة لقبول الجلسة مثل عمليات التحقق الـ  Authenticationأو ما شابه أو الموافقة بشكل
مباشر:
في نموذج  OSIتم تقسيم الـ  upper Layersإلى ثلاثة طبقات:
 Application  :لتعامل مع البرنامج نفسه أو ما يسمى User Interface
 Presentationتمثيل البيانات المرسلة وهي آما ظهرت سابقا بتحويل البيانات إلى
الـ ASCIIأو استخدام أساليب لضغط البيانات أو تشفيرها ، في الدوت نيت تتم عملية تمثيل
الرسالة بالـ Binaryباستخدام الــ ASCIIEncoding Classآما يلي:
C#:
String str=Console.ReadLine();
ASCIIEncoding asen= new ASCIIEncoding();
byte[] ba=asen.GetBytes(str);
  Session  :وفيها البدء بعملية التخاطب بين الجهازين و التعريف ببعضهم البعض) فتح
الجلسة( …
أما في بروتوآول الـ  TCP/IPفكتفا بوجود طبقة  Application Layerوالتي تقوم بعمل
الطبقات الثلاث الأولى في  ، OSIفي  Session Layerيتم التعرف وفتح الجلسة بعدة خطوات
وهي آما يلي :
 -1إجراء الاتصال المبدئي بالـ  Serverعبر الـ  IPو الـ  Portالمحدد وذلك بعد تحديد عملية
الاتصال سواء عبر  UDPأو عبر .TCP
 -2التعريف بنفسه وعمل الـ  Authenticationإذا تطلب الـ Serverذلك
 -3قبول أو رفض الجلسة ويتم ذلك بإرسال الموافقة على فتح الجلسة أو رفضها
 -4بدأ الجلسة وقيام الـ Serverبعمل  Listeningعلى الـ Portالخاص بالبرنامج
وهنا مثال يوضح عمل هذه الطبقة باستخدام ال : TCP Protocol
C#:
TcpClient tcpclnt = new TcpClient("192.168.0.2",8001);

عندما يتم الموافقة على فتح الجلسة والبدء بعملية التخاطب يقوم جهاز المرسل Client
بتحميل الرسالة إلى الطبقة الأخرى وهي هنا طبقة  Transportوفي هذه الطبقة يتم تحديد
UDP - Connectionless  أو عبر الـTCP - Connection Protocol طبيعة الاتصال سواء عبر
 Protocolففي البروتوآول الأول يتم تحديد طرفين وهما المرسل والمستقبل و Portالاتصال
أما الـ  UDPفيمكن أن يكون الطرف المستقبل آل الأجهزة  Broadcastوهذا يعني أن أي
شخص يقوم بتصنت عبر هذا الـ  Portيستطيع استقبال الرسالة ، آما يمكن من عمل
 فيPort مع رقم الـMulticast IP أو الـBroadcast IP ، ويتم ذلك بوضع الـMulticastingالـ
... Socketالـ
ولإرسال الرسالة عبر الشبكة عبر الـ TCPنستخدم في الدوت نت  Classجاهز يقوم بهذه
العملية ويسمى  NetworkStreamوهو المسئول عن التعامل مع وسيلة الاتصال وإرسال
الرسالة إلى الطرف المعني بشكل  ، Stream Dataأو باستخدام ال  Socketنفسه وآمثال
على ذلك:
C#:
NetworkStream mynetsream = tcpclnt.GetStream ();
StreamWriter myswrite = new StreamWriter (mynetsream);
myswrite.WriteLine("Your Message");
myswrite.Close ();
mynetsream.Close ();
tcpclnt.Close ();

وبعد ذلك تسلم إلى  Network Layerإذ تتم عنونة الرسالة ووضع عنوان المرسل
والمستقبل عليها وتسلم إلى الطبقة الأدنى ليتم إرسالها عبر ال  Physical Tunnelومن
... IP,IPv6,ARB-Address Resolution Protocol الأمثلة عليها
أما بنسبة للجهاز المستقبل ال  Serverفيقوم بالمرور على نفس الطبقات ولكن بالعكس
حيث يستلم آرت الشبكة ال  Bitsلتحول إلى  Data linkثم  Networkثم  Transportثم
 Applicationومنها تحول من  Binaryإلى  ASCIIومن  ASCIIإلى  .. Textوهذا الكود يوضح
مبدأ عمل ال : Server
C#:
TcpListener myList=new TcpListener(5020);
myList.Start();
Socket s=myList.AcceptSocket();
NetworkStream myns = new NetworkStream (mysocket);
StreamReader mysr = new StreamReader (myns);
Console.Write (mysr.ReadLine());
s.Close();
بعد إجراء عملية العنونة يقوم المرسل بسؤال عن عنوان الـ MAC Addressالخاص بالـServer
وتتم هذه العملية عبر بروتوآول الـ ARP-Address Resolution Protocolويقوم هذا البروتوآول
بالتحقق من وجود الـ MAC Addressفي الـ MAC Tableوفي حالة عدم وجوده يقومبإرسال ARB Broadcast Message Requestإلى آل الشبكة يسأل فيها عن صاحب الـ IP
 Addressالمراد الإرسال له فإذا وجده يرسل الجهاز المعني  ICMP Messageيخبره فيها
بعنوان الـ MAC Addressالخاص به وبعد استلام الرسالة يقوم بتخزين العنوان المعني في
 MAC Tableالخاصة به ولكي يتم استخدامه في المرات اللاحقة ، لاحظ الشكل التالي:



وبعد هذه المرحلة يتم تحديد نوع الـ Encapsulationهل سيكون آـInternet Encapsulation
 والشكل التالي يوضح آلData Link Layer ويتم ذلك في الـEthernet Encapsulation أو
هذه العمليات:



وفي النهاية يكون الشكل العام للـ Packetآما يلي:


ويجب التفريق بين عملية الإرسال باستخدام الـ Ethernetوعملية الإرسال باستخدام
الـ Internetأو الـ Serial Connectionإذ أنه في الـ Ethernetتتم عملية الإرسال بعد معرفة
الـ MAC Addressلطرف الأخر باستخدام الـ ARPأما في الـ Internetفيتم الوصول وفق مبدأ
: لاحظ الشكل التاليPPP – Point to Point Protocolا


في آل طبقة يتم إضافة  Headerعلى الـ Dataويتراوح حجم الـ Headerمن  20إلى  60بايت
حسب الـ Optionsالتي يتم إضافتها إلى الـ .Header
في المثال التالي سنقوم باستخدام برنامج الـ Etherealوهو برنامج يقوم بعملية الـ Packet
 Sniffer

مثال على استخدام الـ ARBوالـ DNSوالـ: HTTP
لاحظ الشكل التالي في برنامج الـ Etherealوالذي يقوم بتصنت على الـInterface Card
حيث قمنا بطلب الدخول على موقع الـ Googleباستخدام الـ: Internet Explore

لاحظ أن أول عملية آانت السؤال عن الـ MAC Addressالخاص بالـ Gatewayوهو هنا
 10.0.0.138حيث أرسلت هذه الرسالة آـ Broadcast Messageوفي العملية الثانية قام
الـ Routerبالرد على الـ ARP Requestوأرسل عنوان الـ MAC Addressالخاص به بعد هذه
العملية سيقوم الـ Clientبلإستفسار عن عنوان الـ Googleبإرسال DNS Request Query
لاحظ أنه في المثال قد وجد الـ IP Addressالخاص بالـ Googleفي الـ DNS Tableوالموجودة
ضمن نظام التشغيل وهذا يعني انه تم الدخول على الـ Googleمن قبل والدليل على ذلك
أن الـ IP Addressالخاص بالـ Googleموجود في الـ DNS Tableوبعد هذه العملية قام موقع
الـ Googleبالرد على الطلب يخبره بوجوده وضمن العنوان المحدد لاحظ أن العمليات من 8
إلى  20هي عمليات طلب و إرسال لمحتويات الصفحة الخاصة بموقع الـ Googleوتتم
.HTTP Protocol باستخدمHTTP Protocol 


تعليقات

اعلان 5بانر

اعلان 3

اعلان1

اعلان




حجم الخط
+
16
-
تباعد السطور
+
2
-