לדלג לתוכן

2.2 פרוטוקולים הרצאה

מבוא

בפיתוח תוכנות רשתיות, השכבה שנמצאת מעל שכבת התעבורה נקראת שכבת האפליקציה. זוהי השכבה בה התוכנה "פוגשת" את המשתמש, ומכאן אפשר ליצור כל פרוטוקול שיתקשר עם רשת מחשבים או עם שירותים מרוחקים. את כל התקשורת שמתרחשת בשכבת האפליקציה אנחנו יכולים לממש בעזרת סוקטים, כמו שראינו בפרק הקודם.

בפרק הזה, נדבר על כמה מהפרוטוקולים הנפוצים בשכבת האפליקציה, שהם כלי עבודה בסיסיים שמאפשרים לנו לתקשר עם מערכות מחשבים מרוחקות.

פרוטוקול Telnet

פרוטוקול Telnet הוא פרוטוקול רשת שבעצם מאפשר לנו להתחבר לטרמינל של מחשב מרוחק ולהריץ פקודות על המחשב הזה כאילו היינו יושבים לידו פיזית.

  • ב-Telnet, כמו ב-SSH, ישנם שני צדדים:
    • שרת Telnet ששומע לחיבורים.
    • לקוח Telnet שמתחבר לשרת כדי לשלוח פקודות ולבצע פעולות.

בווינדוס, ניתן להפעיל את לקוח ה-Telnet עם הפקודה:

Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient

לאחר ההפעלה, ניתן להתחבר לשרת Telnet דרך טרמינל עם הפקודה:

telnet <כתובת IP> <פורט>

בדרך כלל, שרתי Telnet מאזינים על פורט 23. עם חיבור מצליח, תוכל להקליד פקודות בטרמינל המרוחק.

דוגמת שימוש ב-Telnet לשרת מרוחק:

telnet 192.168.1.10 23

לאחר שתתחבר, תוכל להקליד פקודות כמו ls או dir (תלוי במערכת) כדי לראות את הקבצים במחשב המרוחק.

פרוטוקול FTP (File Transfer Protocol)

פרוטוקול FTP הוא פרוטוקול שמיועד להעברת קבצים בין מחשבים ברשת. בעזרת FTP, ניתן להעלות או להוריד קבצים משרת מרוחק.

  • גם כאן ישנם שני צדדים:
    • שרת FTP ששומע לחיבורים ונותן שירותי העלאת והורדת קבצים.
    • לקוח FTP שמתחבר לשרת כדי לשלוח או לקבל קבצים.

לקוח FTP הנפוץ ביותר עם GUI (ממשק גרפי) הוא FileZilla. הוא מאפשר לנו להעלות ולהוריד קבצים בצורה מאוד אינטואיטיבית.

דוגמת חיבור לשרת FTP בעזרת פייתון:

from ftplib import FTP

# חיבור לשרת FTP
ftp = FTP('ftp.dlptest.com')  # הכתובת של השרת
ftp.login()  # התחברות ללא שם משתמש וסיסמה

# העלאת קובץ
with open('local_file.txt', 'rb') as file:
    ftp.storbinary('STOR remote_file.txt', file)

# הורדת קובץ
with open('downloaded_file.txt', 'wb') as file:
    ftp.retrbinary('RETR remote_file.txt', file.write)

ftp.quit()

פרוטוקול RDP (Remote Desktop Protocol)

RDP הוא פרוטוקול של מיקרוסופט שמאפשר לנו להתחבר למחשב מרוחק ולקבל גישה לממשק הגרפי (GUI) של המחשב. עם RDP, אנחנו לא רק שולחים פקודות כמו ב-Telnet, אלא אנחנו למעשה "נכנסים" למחשב המרוחק ומבצעים כל פעולה כאילו היינו יושבים מולו.

לרוב, השרתים שמציעים שירות RDP פתוחים על פורט 3389. כדי להתחבר לשרת RDP, פשוט פתח טרמינל במחשב שלך והריץ את הפקודה:

mstsc

לאחר מכן, תוכל להזין את כתובת ה-IP של המחשב המרוחק ולקבל גישה לממשק הגרפי שלו.

פרוטוקול SMTP (Simple Mail Transfer Protocol)

SMTP הוא פרוטוקול המיועד להעברת דואר אלקטרוני בין שרתים. כל שרת מייל שמיועד לשלוח מיילים ישתמש בפרוטוקול זה.

השרתים ששולחים דואר אלקטרוני דרך SMTP בדרך כלל מאזינים על פורט 25. לדוגמה, אם נרצה לשלוח דואר אלקטרוני ממחשב אחד למחשב אחר, אנחנו נשתמש בשרת SMTP כדי לשלוח את ההודעה מהמחשב שלנו אל השרת המרוחק.

דוגמת שליחה של דוא"ל בעזרת פייתון:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# הגדרת המייל
msg = MIMEMultipart()
msg['From'] = 'your_email@example.com'
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email'

# תוכן המייל
body = 'This is a test email.'
msg.attach(MIMEText(body, 'plain'))

# חיבור לשרת SMTP ושליחת המייל
server = smtplib.SMTP('smtp.example.com', 25)
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()