August 12, 2023

צלילה לפרוטוקולי הרשת המוכרים הבונים את עולמנו

הקדמה

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

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

Hypertext Transfer Protocol (HTTP/HTTPS)

פרוטוקול HTTP הוא הבסיס לכל העברת מידע בווב. כשניגשים לאתר ככל הנראה אתם משתמשים בפרוטוקול הזה או בפרוטוקול המאובטח יותר - HTTPS.

פונקציונאליות

מאפשר לדפדפנים לגשת למשאבי רשת ולדפים של אתרים.

חשיבות

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

דוגמא בפייתון

קבלת מידע מאתר דרך פונקציית GET.

1
2
3
4
import requests

response = requests.get('https://www.example.com')
print(response.text)

Transmission Control Protocol/Internet Protocol (TCP/IP)

הבסיס להרבה מאוד מתקשורות הרשת.
בדרך כלל שני הפרוטוקולים האלו מגיעים אחד עם השני.
ה-IP יעזור להגדיר לנו כתובת נקודתית של נקודת קצה.
TCP מוסיף עוד משהו לכתובת הזה והוא הפורט.
למשל אם יש לכם בית בכתובת מסוימת אז תרצו לדעת לאיזו דירה להגיע נכון?
אז מס’ הדירה זה כמו פורט.

פונקציונאליות

פרוטוקול IP מאפשר הזנה של מיקום שליחה ומיקום קבלה.
פרוטוקול TCP מוודא המידע מתקבל בצד השני ומטפל בשגיאות.

חשיבות

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

דוגמא בפייתון

תקשורת בעזרת סוקט אל ה-localhost בפורט 12345.

1
2
3
4
5
6
7
import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect(('localhost', 12345))
s.sendall(b'Hello, server!')
data = s.recv(1024)
print('Received', repr(data))

File Transfer Protocol (FTP)

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

פונקציונאליות

העלה והורדה של קבצים.

חשיבות

הפרוטוקול משומש הרבה בניהול אתרים, ניהול גיבויים ושיתופי קבצים בעולם שה-cloud נהיה חלק אינטגרלי.

דוגמא בפייתון

1
2
3
4
5
6
7
8
from ftplib import FTP

ftp = FTP()
ftp.connect('ftp.example.com')
ftp.login(user='username', passwd='password')
with open('myfile.txt', 'rb') as f:
ftp.storbinary('STOR myfile.txt', f)
ftp.quit()

Domain Name System (DNS)

פרוטקול ה-DNS עובד כמו הספר הצהוב של פעם - כמו שמירת מספרי הטלפון של כולם.
למשל אם אתם נכנסים לגוגל אתם כותבים www.google.com ולא את כתובת ה-IP של גוגל. נכון?
זה נעשה בעזרת הפרוטוקול DNS הנותן לנו שמות קלים להבנה.

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

עוד מידע:
https://xn--9dbaqfu.xn--4dbrk0ce/

נשבע לכם שזה לא וירוס. :)

פונקציונאליות

מילון של כתובות IP לשמות ידודותיים.

חשיבות

בלי ה-DNS היינו צריכים לאגור רשימות של מספרים על מנת לזכור מי ולאן.

דוגמא בפייתון

בעזרת סוקט נקבל את כתובת ה-IP מתוך כתובת אתר.

1
2
3
4
import socket

ip_address = socket.gethostbyname('www.example.com')
print(ip_address)

Simple Mail Transfer Protocol (SMTP)

ה-פרוטוקול שבונה את כל האימייל שלנו.

פונקציונאליות

שולח אימיילים מכתובת א’ לכתובת ב’.

חשיבות

עמוד השדרה של כל שליחת אימייל.
כל פעם שאתם משתמשים באימייל הפרוטוקול מוודא שהוא הגיע ליעדו.

דוגמא בפייתון

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import smtplib

from email.message import EmailMessage

msg = EmailMessage()
msg.set_content('Hello, this is a test email!')
msg['Subject'] = 'Test'
msg['From'] = 'youremail@example.com'
msg['To'] = 'receiver@example.com'

# Send the message via SMTP server.
# port 587 is SMPT over TLS
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login("youremail@example.com", "password")
server.send_message(msg)
server.quit()

פורטים ידועים

כפי שרשמתי בפרוטוקול TCP קיימים לנו פורטים העוזרים להגדיר נקודות נוספות לתקשורת.
למשל מחשב אחד מתקשר עם מחשב אחר - אולם יש הרבה מאוד תוכנות שרוצות לתקשר ביניהם.
איך התוכנות יודעות לאט ספציפית להגיע במחשב?
זה בעזרת פורטים!
אפליקציה א’ יכולה לרוץ עם פורט 50000 ואפליקצייה ב’ יכולה לרוץ עם פורט 63000.

כמה מהפורטים הידועים:

  • HTTP - 80
  • HTTPS - 443
  • FTP - 21
  • SMTP - 25
  • SMTP TLS - 587
  • DICOM - 104
  • POP3 - 110

כלים לחקור להמשך

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

מודל שבע השכבות

קודם כל צריך ללמוד את מודל שבע השכבות

תוכנת Wireshark

תוכנת Wireshark

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

TcpView

תוכנה שימושית להבין איזו תוכנה פתחה איזה סוקט וקו רשת.

TcpView דף בית

סיכום

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

תודה על הקריאה והמשיכו ללמוד ולחקור!

על הפוסט

הפוסט נכתב על ידי Ilya, רישיון על ידי CC BY-NC-ND 4.0.

שתפו את הפוסט

Email Facebook Linkedin Print

קנו לי קפה

#Software#Network