فهم بروتوكولات الشبكات — أمن الشبكات
بروتوكولات الشبكات
ما هو البروتوكول؟
قواعد ومعايير للتواصل بين الأجهزة عبر الشبكة.
نموذج OSI (7 طبقات)
1. Physical - الطبقة الفيزيائية (كابلات)
2. Data Link - رابط البيانات (MAC address)
3. Network - الشبكة (IP address)
4. Transport - النقل (TCP/UDP)
5. Session - الجلسة
6. Presentation - العرض
7. Application - التطبيق (HTTP, FTP, DNS)
البروتوكولات الأساسية
TCP vs UDP
| TCP | UDP |
|-----|-----|
| موثوق | غير موثوق |
| بطيء نسبياً | سريع |
| HTTP, FTP | DNS, VoIP |
HTTP vs HTTPS
- HTTP: غير مشفر ⚠️
- HTTPS: مشفر بـ TLS/SSL ✅
DNS
تحويل أسماء النطاقات إلى عناوين IP:
google.com → 142.250.185.46المنافذ الشائعة
- 21: FTP
- 22: SSH
- 23: Telnet ⚠️
- 25: SMTP
- 53: DNS
- 80: HTTP
- 443: HTTPS
- 3306: MySQL
- 3389: RDP
# فحص المنافذ المفتوحة باستخدام Python
import socket
def scan_ports(host, start_port, end_port):
"""
فحص المنافذ المفتوحة على هوست معين
"""
open_ports = []
print(f"[*] بدء فحص {host}")
print(f"[*] المنافذ من {start_port} إلى {end_port}")
print("-" * 40)
for port in range(start_port, end_port + 1):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) # timeout بعد ثانية
result = sock.connect_ex((host, port))
if result == 0:
try:
service = socket.getservbyport(port)
except:
service = "غير معروف"
print(f"[+] المنفذ {port} مفتوح ({service})")
open_ports.append(port)
sock.close()
print("-" * 40)
print(f"[*] تم العثور على {len(open_ports)} منفذ مفتوح")
return open_ports
# مثال الاستخدام (على localhost فقط للتجربة)
# scan_ports("127.0.0.1", 1, 1024)اختبر فهمك