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

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

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

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

أساسيات TCP/IP

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

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

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

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

TCP مقابل UDP

الميزةTCPUDP
الاتصالموجه للاتصالبدون اتصال
الموثوقيةتسليم مضمونأفضل جهد
الترتيبمرتببدون ترتيب
السرعةأبطأ (حمل زائد)أسرع
حالات الاستخدام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عنوان IPv4example.com → 93.184.216.34
AAAAعنوان IPv6example.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 والشبكات

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.