Things happening about coding/tos
Interesting Discussions
DP
Ðhïfáf Ál Ðullámy
at Mar 14, 2014 7:04:21 AM
موضوعنا اليوم قد يكون بالمسمى بسيط لكن فهمه مهم لكل شخص محترف يعمل في مجال الشبكات لانه يعد من أهم الأدوات التى تساعدك في تشخيص الكثير من المشاكل التى تتعرضها أثناء العمل وأنا أتوقع أن كل واحد فينا سأل نفسه هذا السؤال
مقدمة
بداية محور حديثا لن يكون عن برمجة الـ Ping بل عن كيفية عمله في الشبكة
لفهم الـ Ping بشكل أحترافي أكثر يجب أن نتعرف على ماضيه أولا الـ Ping تم كتابته لأول مرة عام 1983 من قبل Mike Muuss بهدف تحديد مواقع الغواصات عن طريق ارسال نبضات صوتية ولندخل أكثر في التفاصيل يجب علينا أن تكون عندنا خلفية بسيطة في مفهوم الطبقات وال TCP/IP
كيف يعمل الـ Ping
كما نعلم جميعا اننا عندما نريد ان نقوم بعمل Ping نبدأ اولا بكتابة كلمة Ping وبعدها نضيف اسم الموقع أو الايبي
Ping بشكل عام هو عبارة عن أداة تستخدم بروتوكول الـ ICMP أو Internet Control Message Protocol وللذين يجهلون عمل هذا البروتوكول أقول لهم هو عبارة عن بروتوكول يعمل في الطبقة الثالثة Network Layer وهو المسؤول عن إرسال رسائل الأخطاء في الشبكة بشكل عام
ماذا يحدث عندما أقوم بأرسال Ping إلى أحد الايبيات ؟
في الارسال يقوم الـ ICMP بارسال Echo Requests الى الهدف متبوع بي Type 8 , Code 0 طيب ماهي معاني هذه الاشياء ولفهمها سوف نطلع أولا على الجدول التالي وبعدها نكمل
ICMP Message Types
Description Code Type
Echo reply (تستخدم للرد على الطلب) 0 0
Destination network unreachable 0 3
Destination host unreachable 1
Destination protocol unreachable 2
Destination port unreachable 3
Fragmentation required, and DF flag set
4
Source route failed 5
Destination network unknown 6
Source host isolated 7
موجودة لكن غير مهمة جدا 13-8
Source quench 0 4
Redirect Datagram for the Network 0 5
Redirect Datagram for the TOS & network 1
Redirect Datagram for the TOS & network 2
Redirect Datagram for the TOS & host 3
Alternate Host Address 0 6
Echo request (تستخدم الطلب) 0 8
Router Advertisement 0 9
Router discovery/selection/solicitation 0 10
TTL expired in transit 0 11
Fragment reassembly time exceeded 1
Pointer indicates the error 0 12
Fragment reassembly time exceeded 1
Bad length 2
Timestamp 0 13
Timestamp reply 0 14
Information Request 0 15
Information Reply 0 16
Address Mask Request 0 17
Address Mask Reply 0 18
طيب بعد أطلاعنا على هذا الجدول المعقد ماذا نستطيع ان نفهم ؟
لكي نفهم العملية بشكل صحيح يجب علينا ان نضع الـ Header امامنا ونتخيل ماهي محتوياته عند ارسال الطلب وهي بالشكل التالي سوف تكون
ICMP Echo Request
Header Checksum Code = 0 Type = 8
Sequence Number Identifier
Data
عند ارسالنا للطلب أو التحقق من الايبي المطلوب يقوم الـ ICMP بتحديد الـ Type ثمانية وهي يدل على ان هذه الباكيت هي للطلب أما بالنسبة للكود فهو صفر حسب الجدول السابق الذي يوضح وبشكل منطقي طبعا انه لايوجد خيارات عند الطلب
بعكس رقم الـ Type 3 وهو المسؤول عن عدم إكتمال الـ Ping ونجد في خانة الـ Code هناك عدة خيارات تدل على الخطأ بالضبط
ونستنتج ان خانة الـ Type تحدد نوع الرسالة في بروتوكول ICMP بينما خانة الـ Code تستخدم اذا كان هناك خيارات متاحة في هذا النوع من الرسائل
اما بالنسبة لباقي الخانات في الـ Header فهي تقريبا معروفة عند الجميع مثل
Header Checksum المسؤولة عن error detection
Identifier وهي في الاغلب تكون 256 وهي تحوي على process ID
Sequence Number تبدأ بصفر وتزيد مع مرات الطلب Echo
طيب السؤال الان كيف تتم عمية الرد
الجواب ابسط بكثير بعد مافهمنا كيفية الطلب لان الموضوع ببساطة سوف يكون نفس الشيء مع تغيير الـ Type والـ Code في حال كان هناك مشكلة في الوصول ولو نظرنا الى هذا الـ Header
ICMP Echo Request
Header Checksum Code = 0 Type = 0
Sequence Number Identifier
Data
سوف نلاحظ ان العملية ناجحة والطلب قد تم لاننا نرى ان الـ Type يحمل الرقم 0 وبمراجعة الجدول سوف نجد انه يدل على ان العملية تمت والهدف قام بالرد على الطلب
لكن لو عرضت عليك هذا الجدول ماذا برئيك سوف يحدث ؟
ICMP Echo Request
Header Checksum Code = 1 Type = 3
Sequence Number Identifier
Data
الجواب طبعا سوف يكون ان عملية الطلب لم تتم والسبب عدم القدرة على الوصول للهدف (راجع الجدول)
النقطة الاخيرة وهي الـ TTL
أكثر معضلة واجهتها في هذا الموضوع والاجابات تعددت في الانترنت وفي غوغل فمنهم من يقول هي عدد الهوب للوصول للهدف وهناك من يقول هي الوقت الذي يستغرقه الطلب للوصول للهدف وبعد البحث والتجربة توصلت الى انها قيمة تحدد من قبل كل روتر أو جهاز وهي تزيد او تنقص حسب مسار الباكيت الى الهدف
وكمثال على ذلك قم بعمل Ping 127.0.0.1 اي لووباك على الجهاز لوجدتها 128 وهذا يعني أن قيمة الـ TTL في ويندوز تساوي 128ينما القيمة في لينوكس تساوي 64
 Hassan Al-obady likes this
DP
Chris Smith posted a photo to Saints of Rebellion's timeline.
at Mar 14, 2014 6:23:13 AM
https://www.facebook.com/WalkersTomb/photos/a.276781952437444.64354.240534022728904/533052093477094/?type=1&theater
Timeline Photos
I'd like to thank all the great bands, I had the pleasure of booking and running sound for, hope to see y'all at the show before I leave and if not, all my best to you and yours in your endeavors.

Code Whiskey
Inraged
METALOURD(OFFICIAL)
Altar of Eden
Stone wicked souls
From Their Ruins
For Now & Forever
Take Over Soldiers (TOS)
Doctor Smoke
Signals
Fatality Risen
Say Ahh
HIGH 'N' DRY:The Ultimate Def Leppard Experience
Irukandji
Youth Gone Wild
A Retrospect
Lakota De Kai
Necrotherion
Shrouded In Neglect
Chaos Reigns
Last Will
United By Hate
HateDriven
Fallen Kingdom formerly Conspiracy Theory
Havoc Theory
Paradigm
We Must Save The Princess
The Show Must Go On
NeverWake
Down They Fall
SWARM
Burning Sin
Nervous Aggression
HEAF
Until we have Faces
Drop The Act
Inception - Band - Band formerly Motion Sickness
Contentions
Fate Of Our Own
As Dreams Fade
Unholy Attraction
Horse Drawn Death Machine
What Great Fangs
Machete facelift
Dematus
Chad Squires
Osiris' Fear
Hey, Nostradamus
Fractal Dimension
False Accusations
Anchors to Anchors
Trial BySyn
The Whisky Rebellion
Whiskey Rebel Bastards
DP
Cloud9 Sample Box
at Mar 14, 2014 12:39:05 AM
Save 10% on purchases made on our website and get the code on this fab review of our Feb box! Thank you!


 Jackie Snider likes this
DP
Ln Amitav Biswas
at Mar 13, 2014 4:39:45 PM
Zero Address Instructions:
=================
An instruction that contains no address fields; operand sources and destination are both implicit. It may for example enable stack processing: a zero-address instruction implies that the absolute address of the operand is held in a special register that is automatically incremented (or decremented) to point to the location of the top of the stack.
Example: ADD
The above instruction consists of an operation code only. It has no addrss field. The operation has the effect of popping the two top numbers from the stack, adding the numbers and pushing the sum into the stack. Here all operands are performed within stack. To evaluate arithmetic expressions, they must be first converted into reverse polish notation. The operand at address X is pushed on to the top of the stack. Automatically the stack pointer is incremented.
Example:
X=(A + B) + (C + D)
PUSH A ; TOS <- A top of the stack
PUSH B ; T0S <- B
ADD ; TOS <- A + B
PUSH C ; TOS <- C
PUSH D ; TOS <- D
ADD ; TOS <- C + D
ADD ; TOS <- (C + D) + (A + B)
POP X ; M [X] <- TOS
Sign Up for Free
SignUp for Idolbin
rss twitter facebook gplus