أساسيات Linux والشبكات

أساسيات الشبكات: TCP/IP وDNS

4 دقيقة للقراءة

أسئلة الشبكات تظهر في 100% من مقابلات DevOps/SRE. أتقن هذه المفاهيم وستتعامل مع أي شيء يطرحونه عليك.

أساسيات TCP/IP

مصافحة TCP الثلاثية

العميل                     الخادم
   |                          |
   |-------- SYN ------------>|
   |                          |
   |<------- SYN-ACK ---------|
   |                          |
   |-------- ACK ------------>|
   |                          |
   |    تم إنشاء الاتصال      |

سؤال مقابلة: "ماذا يحدث إذا ضاع ACK الأخير؟"

الجواب: الخادم يعيد إرسال SYN-ACK حتى يستلم ACK أو ينتهي الوقت. الاتصال سيُنشأ في النهاية أو يفشل بعد المحاولات.

TCP مقابل UDP

الميزة TCP UDP
الاتصال موجه للاتصال بدون اتصال
الموثوقية تسليم مضمون أفضل جهد
الترتيب مرتب بدون ترتيب
السرعة أبطأ (حمل زائد) أسرع
حالات الاستخدام HTTP، SSH، قواعد البيانات DNS، الفيديو، الألعاب

حالات TCP الرئيسية

# عرض اتصالات TCP وحالاتها
netstat -an | grep tcp
ss -tan

# الحالات الشائعة:
# LISTEN      - ينتظر الاتصالات
# ESTABLISHED - اتصال نشط
# TIME_WAIT   - ينتظر بعد الإغلاق (2x MSL)
# CLOSE_WAIT  - استلم FIN، ينتظر التطبيق
# FIN_WAIT_1/2 - أرسل FIN، ينتظر ACK/FIN

سؤال مقابلة: "ترى آلاف اتصالات TIME_WAIT. هل هذه مشكلة؟"

الجواب: TIME_WAIT طبيعي—يمنع الخلط بين الحزم القديمة والاتصالات الجديدة. لكن كثرتها قد تستنفد المنافذ العابرة. الحلول:

  • فعّل tcp_tw_reuse للاتصالات الصادرة
  • زد نطاق المنافذ العابرة: net.ipv4.ip_local_port_range
  • استخدم تجميع الاتصالات

الغوص العميق في DNS

عملية حل DNS

1. المتصفح يتحقق من الذاكرة المؤقتة
2. نظام التشغيل يتحقق من /etc/hosts، ثم nsswitch.conf
3. استعلام المحلل المحلي (من /etc/resolv.conf)
4. المحلل يتحقق من الذاكرة المؤقتة
5. إذا لم يكن مخزناً مؤقتاً، المحلل يستعلم:
   خوادم الجذر → خوادم TLD → الخوادم الموثوقة
6. الإجابة تُخزن مؤقتاً وتُرجع

أنواع سجلات DNS

السجل الغرض مثال
A عنوان IPv4 example.com → 93.184.216.34
AAAA عنوان IPv6 example.com → 2606:2800:...
CNAME الاسم المستعار www → example.com
MX خادم البريد @ → mail.example.com
TXT بيانات نصية SPF، DKIM، التحقق
NS خادم الأسماء @ → ns1.example.com
PTR البحث العكسي IP → اسم المضيف
SRV موقع الخدمة _http._tcp → ...

استكشاف أخطاء DNS

# بحث أساسي
dig example.com

# استعلام نوع سجل محدد
dig example.com MX

# استعلام خادم DNS محدد
dig @8.8.8.8 example.com

# تتبع مسار الحل الكامل
dig +trace example.com

# تحقق من TTL
dig example.com | grep -E "^example.com"

# بحث عكسي
dig -x 93.184.216.34

مفاهيم موازنة الحمل

الطبقة 4 مقابل الطبقة 7

الجانب الطبقة 4 (TCP/UDP) الطبقة 7 (HTTP)
السرعة أسرع أبطأ
الذكاء IP/المنفذ فقط واعي بالمحتوى
إنهاء SSL لا نعم
الجلسات اللاصقة تجزئة IP المصدر الكوكيز
حالة الاستخدام إنتاجية عالية تطبيقات الويب

خوارزميات موازنة الحمل

الخوارزمية السلوك الأفضل لـ
Round Robin التدوير عبر الخوادم خوادم بسعة متساوية
Least Connections الإرسال للأقل انشغالاً أوقات طلب متفاوتة
IP Hash نفس العميل → نفس الخادم استمرار الجلسة
Weighted تفضيل السعة الأعلى مواصفات خوادم مختلطة
Random اختيار عشوائي بسيط، توزيع متساوي

أوامر الشبكة الأساسية

# تحقق من الاتصال
ping -c 4 host
traceroute host  # أو tracepath

# بحث DNS
nslookup host
host domain
dig domain

# فحص المنافذ والاتصال
nc -zv host port
telnet host port

# إحصائيات الشبكة
netstat -tulpn  # المنافذ المستمعة
ss -tulpn       # بديل أسرع

# التقاط الحزم
tcpdump -i eth0 port 80
tcpdump -i any host 10.0.0.1

# واجهات الشبكة
ip addr
ip route

تمرين المقابلة

س: "خدمة لا تستطيع الاتصال بقاعدة البيانات. كيف تستكشف الأخطاء؟"

# 1. تحقق إذا كان DNS يحل
dig db.internal

# 2. تحقق إذا كان المضيف قابل للوصول
ping db.internal

# 3. تحقق إذا كان المنفذ مفتوحاً
nc -zv db.internal 5432

# 4. تحقق من الجدار الناري المحلي
iptables -L -n
# أو firewalld
firewall-cmd --list-all

# 5. تحقق إذا كانت الخدمة تستمع على الهدف
ssh db.internal "ss -tlnp | grep 5432"

# 6. تحقق من مشاكل مسار الشبكة
traceroute db.internal
mtr db.internal

التالي، سنجمع كل شيء معاً مع سيناريوهات استكشاف الأخطاء الحقيقية. :::

اختبار

الوحدة 2: أساسيات Linux والشبكات

خذ الاختبار