רשתות ואינטרנט: Client-Server, כתובות, פרוטוקולים והמסע של בקשה
- להסביר מהי רשת מחשבים ולמה מחברים מחשבים זה לזה
- להבחין בין LAN לבין האינטרנט, ולהבין את תפקיד הראוטר
- להסביר מהי כתובת IP, ולהבחין בין IP ציבורי, פרטי ו-localhost
- להסביר מהו Port ולמה צריך אותו בנוסף ל-IP
- להסביר מהו Protocol ולמה רשת לא יכולה לעבוד בלעדיו
- לתאר את המבנה של HTTP Request ושל HTTP Response
- לפרק URL לחלקיו — Protocol, Domain, Port, Path, Query
- לתאר בסדר הנכון את 8 השלבים מהקלדת כתובת ועד הצגת האתר
מה בשיעור
השיעור הזה בנוי מכמה פרקים קצרים, באותו סדר כמו במצגת:
- פרק ראשון — רשת מחשבים, LAN, אינטרנט, Client ו-Server
- פרק שני — כתובת IP, Port, Domain ו-DNS
- פרק שלישי — Request, Response ופרוטוקולים: HTTP, HTTPS, TCP ו-UDP
- פרק רביעי — מה קורה מהרגע שמקלידים כתובת ועד שהאתר מוצג
פרק ראשון: רשת מחשבים, LAN, אינטרנט, Client ו-Server
מה נלמד?
- מהי רשת מחשבים (Computer Network).
- LAN (רשת מקומית) מול Internet (האינטרנט).
- ראוטר (Router), המכשיר שמחבר בין רשתות.
- מודל Client-Server, הבסיס לכל אתר, אפליקציה ושרת שנבנה בנושא Backend ומסדי נתונים.
למה צריך את זה?
כל אפליקציה מודרנית מדברת עם הרשת: וואטסאפ, אתרים, משחקים, ובנושא Backend ומסדי נתונים גם השרת שאתם תכתבו. מפתחי Backend כותבים בדיוק את צד ה-Server. מפתחי Frontend כותבים את צד ה-Client. בלי להבין את המודל הזה אי אפשר להבין מה הקוד שלכם עושה.
הסבר מהבסיס
מהי רשת?
רשת מחשבים היא שני מכשירים או יותר שמחוברים כך שיוכלו להעביר מידע ביניהם. החיבור יכול להיות בכבל (Ethernet), באוויר (Wi-Fi), או בסיבים אופטיים.
למה מחברים מחשבים?
- שיתוף מידע — הודעות, קבצים, אתרים.
- שיתוף משאבים — מדפסת אחת לכל המשרד, חיבור אינטרנט אחד לכל הבית.
- חלוקת עבודה — המידע שמור במקום אחד (שרת), וכולם ניגשים אליו.
LAN — Local Area Network
LAN היא רשת מקומית: המכשירים בבית, במשרד או בכיתה. בבית שלכם ה-LAN כולל את המחשב, הטלפון, הטלוויזיה החכמה והמדפסת, כולם מחוברים לאותו ראוטר.
- כל המכשירים ב-LAN יכולים לדבר זה עם זה ישירות, בלי לצאת לאינטרנט.
- מהירה מאוד ובשליטה שלכם.
Internet — רשת של רשתות
האינטרנט הוא רשת של רשתות: מיליוני רשתות מקומיות בכל העולם, שמחוברות זו לזו דרך ספקיות אינטרנט (ISP, כמו בזק, הוט, פרטנר) וכבלים תת-ימיים בין יבשות.
Router — השער בין הרשתות
ה-Router (נתב) הוא המכשיר שמחבר את ה-LAN שלכם לאינטרנט. הוא יודע אם חבילת מידע צריכה להישאר בבית (למשל מהמחשב למדפסת) או לצאת החוצה (למשל לאתר).
Your home (LAN)
┌──────────────────────────┐
│ Laptop Phone Printer │
│ \ | / │
│ Router ──────────┼───► ISP ───► Internet ───► Google's network
└──────────────────────────┘ (another LAN)LAN היא דירה עם כמה דיירים, שמעבירים פתקים ביד זה לזה. Router הוא תיבת הדואר בכניסה לבניין: מכתב לשכנים מהדירה נשאר בפנים, מכתב לעיר אחרת יוצא לדואר. האינטרנט הוא כל מערך הדואר העולמי: סניפים, משאיות, מטוסים, שמחברים את כל הבניינים בעולם.
מודל Client-Server
כמעט כל התקשורת ברשת בנויה לפי מודל אחד:
- Client (לקוח) — התוכנה שיוזמת ושולחת בקשה. “תן לי את דף הבית”, “שמור את ההודעה הזו”.
- Server (שרת) — התוכנה שמחכה לבקשות, מטפלת בהן ומחזירה תשובה.
| Client | Server | |
|---|---|---|
| מי יוזם? | הוא | מחכה שיפנו אליו |
| כמה? | הרבה לקוחות | בדרך כלל שרת אחד (או כמה) משרת את כולם |
| דוגמאות | דפדפן, אפליקציית מובייל, curl | שרת אתרים, שרת Database, שרת דואר |
| זמן ריצה | עולה כשצריך ונסגר | רץ כל הזמן (24/7) |
חשוב מאוד: Client ו-Server הם תפקידים של תוכנות, לא סוגי מחשבים. אותו לפטופ יכול להריץ דפדפן (Client) ובמקביל שרת FastAPI (Server). בנושא Backend ומסדי נתונים זה בדיוק מה שתעשו: השרת והלקוח ירוצו על אותו מחשב.
Client הוא הסועד: מזמין (בקשה) ומקבל מנה (תשובה). Server הוא המטבח: מחכה להזמנות, מכין ומחזיר. מטבח אחד משרת הרבה סועדים, והוא פתוח גם כשאף אחד לא מזמין.
בקשה ותשובה — דוגמה
כשגולשים לאתר, הדפדפן הוא ה-Client והאתר הוא ה-Server:
Browser (Client) Server (example.com)
│ │
│ ──── Request: GET / ──────────► │
│ │ finds the page
│ ◄──── Response: 200 + HTML ──── │
▼ │
shows the page- הדפדפן יוזם — שולח בקשה: “תן לי את הדף הראשי”.
- השרת, שכל הזמן מחכה לבקשות, מוצא את הדף.
- השרת מחזיר תשובה: קוד הצלחה (
200) ואת תוכן הדף. - הדפדפן מציג את מה שקיבל.
אותו דפוס בדיוק חוזר בכל אפליקציה: וואטסאפ שולח הודעה לשרת, אפליקציית מזג אוויר מבקשת תחזית, ובהמשך הקורס — שרת שאתם תכתבו יקבל בקשות ויחזיר תשובות.
טעות נפוצה
הטעות: “Server זה מחשב ענק בחדר ממוזג”, ולכן “אי אפשר להריץ שרת על לפטופ”.
- Server הוא תוכנה שמחכה לבקשות — לא סוג מיוחד של מחשב.
- כל לפטופ יכול להריץ תוכנת שרת. בהמשך הקורס תריצו שרת על המחשב שלכם.
- אותו מחשב יכול להיות Client ו-Server בו בזמן: הדפדפן שלכם (Client) יכול לפנות לשרת שרץ על אותו לפטופ.
- בחדרי שרתים פשוט מריצים הרבה תוכנות שרת כאלה, על מחשבים חזקים שפועלים כל הזמן.
טעות שנייה: לחשוב שאתר “יושב בדפדפן”. הדפדפן רק מבקש ומציג. האתר, כלומר הקבצים והלוגיקה, יושב על השרת.
סיכום
- רשת = מכשירים מחוברים שמעבירים מידע. LAN = רשת מקומית. האינטרנט = רשת של רשתות.
- Router מחבר את ה-LAN לאינטרנט ומחליט מה נשאר בפנים ומה יוצא.
- Client יוזם בקשה. Server מחכה, מטפל ומחזיר תשובה.
- Client ו-Server הם תפקידים של תוכנות. אותו מחשב, ואפילו אותה תוכנה, יכולים למלא את שניהם.
- כל גלישה היא Request מה-Client ו-Response מה-Server.
דוקומנטציה רשמית
- MDN — How does the Internet work? — רשתות, Router ואיך הכול מתחבר
- MDN Glossary — Server — מי זה ה-Server
פרק שני: כתובת IP, Port, Domain ו-DNS
מה נלמד?
שלוש שאלות שכל הודעה ברשת צריכה לענות עליהן:
- לאיזה מחשב? — IP Address.
- לאיזו תוכנה במחשב הזה? — Port.
- איך אני יודע את הכתובת אם אני זוכר רק שם? — Domain ו-DNS.
למה צריך את זה?
- בנושא Backend ומסדי נתונים תריצו שרת על
http://127.0.0.1:8000. היום תבינו כל חלק בכתובת הזו. - שגיאה כמו
Address already in use(הפורט תפוס) אוName or service not known(DNS נכשל) היא שגרה בעבודת Backend. - כשמחברים אפליקציה ל-Database, צריך לתת לה Host ו-Port.
הסבר מהבסיס
IP Address — כתובת המחשב
IP (Internet Protocol Address) היא כתובת מספרית שמזהה מכשיר ברשת. בלי כתובת, אי אפשר לשלוח אליו מידע, בדיוק כמו מכתב בלי כתובת.
הפורמט הנפוץ, IPv4, הוא ארבעה מספרים בין 0 ל-255, מופרדים בנקודות:
192.168.1.23
│ │ │ │
└───┴──┴──┴── four numbers, each 0–255יש גם IPv6, פורמט חדש וארוך יותר (2001:db8::1), שנוצר כי לא נשארו מספיק כתובות IPv4 לכל המכשירים בעולם. העיקרון זהה.
שלושה סוגי כתובות שחשוב להכיר
| סוג | דוגמה | מה זה |
|---|---|---|
| Private IP (פרטית) | 192.168.x.x, 10.x.x.x | כתובת בתוך ה-LAN. הראוטר נותן אותה. אותה כתובת יכולה להופיע באלפי בתים שונים. |
| Public IP (ציבורית) | 84.229.15.7 | הכתובת של הבית/המשרד באינטרנט. כל המכשירים בבית יוצאים החוצה דרכה, דרך הראוטר. |
| localhost / Loopback | 127.0.0.1 | “המחשב הזה עצמו”. מידע שנשלח לשם לא יוצא בכלל מהמחשב. |
Public IP = כתובת הבניין ברחוב (“הרצל 10”). Private IP = מספר המשרד בתוך הבניין (“חדר 23”). בכל בניין יש “חדר 23”, ולכן זה לא מספיק מבחוץ, אבל בפנים זה מזהה מדויק. localhost = “החדר שלי”: כשאני שולח לשם, אני שולח לעצמי.
Port — הדלת לתוכנה הנכונה
כתובת IP מביאה את המידע למחשב. אבל במחשב רצות הרבה תוכנות שמשתמשות ברשת: דפדפן, Spotify, Zoom, שרת שכתבתם. איך המידע מגיע לתוכנה הנכונה?
Port (פורט) הוא מספר בין 0 ל-65535 שמזהה תוכנה מסוימת על המחשב. שרת “מאזין” (Listens) על פורט מסוים, וכל בקשה שמגיעה לפורט הזה מועברת אליו.
IP = which building → 192.168.1.23
Port = which apartment → 8000
Full address → 192.168.1.23:8000פורטים מוכרים (Well-known Ports):
| Port | שימוש |
|---|---|
80 | HTTP — אתרים (לא מוצפן) |
443 | HTTPS — אתרים (מוצפן) |
22 | SSH — התחברות מרחוק לשרת |
5432 | PostgreSQL — Database |
8000 / 8080 | נפוצים לשרתי פיתוח (כמו שלנו בנושא Backend ומסדי נתונים) |
כלל חשוב: על כל פורט (בכל כתובת) רק תוכנה אחת יכולה להאזין בכל רגע.
Domain ו-DNS — שמות במקום מספרים
בני אדם לא זוכרים 142.250.75.14. אנחנו זוכרים google.com.
- Domain (שם מתחם) הוא שם קריא שמייצג כתובת:
google.com,ynet.co.il. - DNS (Domain Name System) הוא “ספר הטלפונים של האינטרנט”: מערכת עולמית של שרתים שמתרגמת Domain לכתובת IP.
מבנה של Domain (קוראים מימין לשמאל, מהכללי לספציפי):
www . ynet . co . il
│ │ │ │
subdomain name second TLD (top-level domain: country/type)מה קורה בתרגום DNS (בקצרה):
- המחשב בודק אם הוא כבר יודע את התשובה (Cache, זיכרון מטמון של תשובות קודמות).
- אם לא, הוא שואל את שרת ה-DNS שהוגדר לו (בדרך כלל של ספקית האינטרנט, או
8.8.8.8של Google). - שרת ה-DNS מוצא את התשובה (אם צריך, שואל שרתים אחרים בהיררכיה) ומחזיר כתובת IP.
- רק אחרי זה המחשב שולח את הבקשה עצמה לכתובת שהתקבלה.
DNS Lookup — צעד אחר צעד
You type: example.com
│ "What is the IP of example.com?"
▼
DNS server: 93.184.215.14
│
▼
Browser connects to 93.184.215.14:443- מקלידים שם —
example.com. - המחשב שואל שרת DNS: “מה ה-IP של השם הזה?” (קודם הוא בודק אם התשובה כבר שמורה אצלו מהפעם הקודמת — Cache).
- מתקבלת כתובת IP.
- רק עכשיו הדפדפן מתחבר — ל-IP ול-Port (443 ל-HTTPS).
כמה תשובות לדוגמה:
google.com -> 142.250.75.14
localhost -> 127.0.0.1
no-such-domain-123.com -> lookup failedlocalhostתמיד מתורגם ל-127.0.0.1— המחשב עצמו.- שם שלא קיים — DNS לא מוצא לו כתובת, והדפדפן מציג שגיאה עוד לפני שניסה להתחבר.
טעות נפוצה
הטעות: להריץ שרת שני על פורט שכבר תפוס.
Program A listens on port 8000 -> OK
Program B tries port 8000 -> ERROR
Address already in useלמה? רק תוכנה אחת יכולה להאזין על פורט בכל רגע. התוכנה הראשונה “תפסה” את 8000.
התיקון: לעצור את התוכנה הראשונה, או להפעיל את השנייה על פורט אחר, למשל 8001.
“סגרתי את חלון ה-Terminal אבל השרת עדיין תופס את הפורט”: לפעמים התהליך ממשיך לרוץ ברקע. מוצאים אותו (Get-Process python / ps aux | grep python) ועוצרים לפי PID, בדיוק כמו שלמדנו בנושא המחשב ומערכת ההפעלה.
טעות שנייה: לבלבל בין localhost לבין ה-IP ב-LAN. 127.0.0.1 נגיש רק מאותו מחשב. אם חבר ינסה לגלוש מהטלפון שלו ל-127.0.0.1:8000, הוא יגיע לטלפון של עצמו.
סיכום
- IP מזהה מחשב ברשת. פרטית (
192.168.x.x) בתוך ה-LAN, ציבורית באינטרנט. 127.0.0.1/ localhost = המחשב הזה עצמו. לא נגיש ממחשבים אחרים.- Port מזהה תוכנה בתוך המחשב. רק תוכנה אחת מאזינה על כל פורט. 80 = HTTP, 443 = HTTPS.
- Domain הוא שם קריא. DNS מתרגם אותו ל-IP לפני שליחת הבקשה.
- כתובת מלאה:
protocol://host:port/path, למשלhttp://127.0.0.1:8000/students.
דוקומנטציה רשמית
- MDN Glossary — IP Address — כתובת IP
- MDN Glossary — Port — Port — הדירה בבניין
- MDN Glossary — DNS — ספר הטלפונים של האינטרנט
פרק שלישי: Request, Response ופרוטוקולים: HTTP, HTTPS, TCP ו-UDP
מה נלמד?
- מהו Protocol (פרוטוקול).
- Request ו-Response: מה נשלח ומה חוזר.
- HTTP ו-HTTPS: השפה של האינטרנט.
- TCP ו-UDP: איך המידע עצמו מועבר.
למה צריך את זה?
כל השבוע הרביעי בנוי על HTTP: תכתבו שרת שמקבל Requests ומחזיר Responses, ותבחרו Method (GET/POST/PUT/DELETE) ו-Status Code (200, 404…). היום רואים איך זה נראה “מבפנים”. כשתבינו את זה, FastAPI ייראה כמו קיצור דרך, ולא כמו קסם.
הסבר מהבסיס
מהו Protocol?
Protocol הוא סט כללים מוסכם לתקשורת: מה שולחים, באיזה סדר, באיזה פורמט, ומה עונים. אם שני צדדים לא מדברים באותו פרוטוקול, הם לא מבינים זה את זה, גם אם החיבור עצמו תקין.
שיחת טלפון היא “פרוטוקול”: מתקשרים, הצד השני עונה “הלו”, אומרים מי מדבר, מעבירים את המסר, ונפרדים ב"ביי". אם מישהו עונה ומתחיל לדבר בשפה שאתם לא מכירים, החיבור עובד, אבל התקשורת לא.
ברשת יש שכבות של פרוטוקולים, וכל שכבה מטפלת בבעיה אחרת:
HTTP / HTTPS ← WHAT we say (application: "give me /index.html")
TCP / UDP ← HOW it travels (transport: reliable or fast)
IP ← WHERE it goes (addressing: 93.184.215.14)
Wi-Fi/Ethernet ← the physical linkRequest ו-Response
כל תקשורת HTTP היא זוג:
- Request (בקשה) — ה-Client שולח: מה הוא רוצה ואיפה.
- Response (תשובה) — ה-Server מחזיר: האם הצליח, והתוכן.
זה תמיד ה-Client שמתחיל. שרת HTTP לא שולח כלום מיוזמתו.
HTTP — HyperText Transfer Protocol
HTTP הוא פרוטוקול טקסטואלי: הבקשה והתשובה הן ממש טקסט שאפשר לקרוא.
מבנה Request:
GET /index.html HTTP/1.1 ← request line: METHOD PATH VERSION
Host: example.com ← headers: extra info, "Name: value"
User-Agent: Mozilla/5.0
Accept: text/html
← empty line = end of headers
(body — empty for GET) ← body: data we send (used in POST/PUT)| חלק | הסבר |
|---|---|
| Method | מה רוצים לעשות. GET = לקבל. POST = ליצור. PUT = לעדכן. DELETE = למחוק. |
| Path | איזה משאב: /, /students, /students/7. |
| Headers | מידע נלווה: לאיזה אתר (Host), מי שולח, איזה פורמט מקבלים. |
| Body | המידע עצמו, למשל פרטי סטודנט חדש ב-POST. |
מבנה Response:
HTTP/1.1 200 OK ← status line: VERSION STATUS CODE REASON
Content-Type: text/html ← headers
Content-Length: 1256
← empty line
<!doctype html><html>... ← body: the content itselfStatus Codes (קודי מצב), לפי הספרה הראשונה:
| טווח | משמעות | דוגמאות |
|---|---|---|
2xx | הצלחה | 200 OK, 201 Created |
3xx | הפניה למקום אחר | 301 Moved Permanently |
4xx | הלקוח טעה | 400 Bad Request, 404 Not Found |
5xx | השרת נכשל | 500 Internal Server Error |
HTTPS — HTTP מאובטח
ב-HTTP רגיל, הטקסט עובר ברשת גלוי. כל מי שיושב בדרך (למשל ב-Wi-Fi ציבורי) יכול לקרוא סיסמאות ומספרי כרטיס אשראי.
HTTPS = HTTP + הצפנה (בעזרת פרוטוקול בשם TLS). הוא מוסיף שני דברים:
- הצפנה — רק השרת והלקוח יכולים לקרוא את התוכן.
- אימות זהות — תעודה דיגיטלית (Certificate) מוכיחה שאתם באמת מדברים עם
bank.co.ilולא עם מתחזה.
ה-HTTP עצמו בתוך ההצפנה זהה לגמרי. פורט: HTTP = 80, HTTPS = 443. סמל המנעול 🔒 בדפדפן אומר שהחיבור הוא HTTPS.
TCP ו-UDP — איך המידע נוסע
מידע ברשת מחולק לחבילות (Packets) קטנות. ה-IP מביא כל חבילה לכתובת הנכונה, אבל חבילות יכולות ללכת לאיבוד או להגיע בסדר הפוך. כאן נכנסים TCP ו-UDP:
| TCP | UDP | |
|---|---|---|
| אמינות | מובטחת: חבילה שאבדה נשלחת שוב | לא מובטחת: מה שאבד, אבד |
| סדר | מגיע בסדר הנכון | יכול להגיע בסדר אחר |
| חיבור | פותח חיבור לפני השליחה (Handshake) | שולח מיד, בלי חיבור |
| מהירות | איטי יותר (בגלל הבדיקות) | מהיר |
| שימושים | אתרים (HTTP/HTTPS), מייל, העברת קבצים, Database | שיחות וידאו, משחקים אונליין, DNS, סטרימינג חי |
TCP = דואר רשום: יש אישור מסירה, ואם המכתב אבד, שולחים שוב. אמין אבל לוקח זמן. UDP = לצעוק הודעה במגפון: מהיר, אבל אם מישהו לא שמע מילה, אף אחד לא חוזר עליה. בשיחת וידאו עדיף לאבד פריים אחד מאשר שהשיחה תיתקע כדי לשלוח אותו שוב.
HTTP רץ מעל TCP. כשהדפדפן מבקש דף, קודם נפתח חיבור TCP לשרת (בפורט 80 או 443), ורק אז נשלח טקסט ה-Request בתוכו.
קודי תשובה נפוצים
כל HTTP Response מתחיל ב-Status Code — מספר של שלוש ספרות שאומר מה קרה. הספרה הראשונה אומרת את ה"משפחה":
| קוד | משמעות | דוגמה |
|---|---|---|
| 200 OK | הבקשה הצליחה | הדף נטען |
| 301 | הכתובת עברה למקום אחר | אתר שעבר לכתובת חדשה |
| 404 Not Found | הנתיב לא קיים | טעות בכתובת |
| 500 Internal Server Error | שגיאה בצד השרת | קוד השרת קרס |
2xx— הצלחה.3xx— הפניה.4xx— טעות של ה-Client.5xx— טעות של ה-Server.
טעות נפוצה
הטעות: לחשוב ש-404 אומר “האינטרנט לא עובד” או “השרת נפל”.
404היא תשובה תקינה מהשרת: “קיבלתי את הבקשה, אבל אין לי משאב בנתיב הזה”. השרת עובד מצוין. הבעיה בבקשה, כלומר בנתיב.- אם השרת לא זמין בכלל, לא מקבלים שום Status Code. מקבלים שגיאת חיבור, כמו
Connection refusedאוtimed out. 500= השרת קיבל את הבקשה וקרס בזמן הטיפול. בנושא Backend, כשתראו 500, הבאג אצלכם בקוד השרת.
| מה קיבלתם | איפה הבעיה |
|---|---|
200 | אין בעיה |
404 | הנתיב לא נכון (צד Client) |
500 | באג בקוד השרת (צד Server) |
| Connection refused | אין שרת שמאזין בכתובת/פורט הזה |
טעות שנייה: לחשוב ש-HTTPS “מסתיר” את האתר שאליו גולשים. ההצפנה מגינה על התוכן — סיסמאות, טפסים, הדף עצמו — אבל ה-Domain שאליו מתחברים עדיין גלוי ברשת.
סיכום
- Protocol = כללים מוסכמים לתקשורת. יש שכבות: HTTP (מה אומרים), TCP/UDP (איך זה נוסע), IP (לאן).
- HTTP Request = Method + Path + Headers + Body. HTTP Response = Status Code + Headers + Body.
- Status Codes:
2xxהצלחה,4xxטעות של הלקוח,5xxטעות של השרת. - HTTPS = HTTP + הצפנה ואימות זהות (TLS). פורט 443.
- TCP אמין ומסודר (אתרים, קבצים). UDP מהיר ולא מובטח (וידאו, משחקים, DNS).
דוקומנטציה רשמית
- MDN — Overview of HTTP — Request, Response ו-HTTP
- MDN Glossary — HTTPS — HTTP מוצפן
- MDN Glossary — TCP — TCP — חיבור אמין
- MDN Glossary — UDP — UDP — מהיר, בלי אישורים
פרק רביעי: מה קורה מהרגע שמקלידים כתובת ועד שהאתר מוצג
מה נלמד?
זו שאלת ראיון קלאסית: “מה קורה כשמקלידים https://www.example.com/about בדפדפן ולוחצים Enter?” בשיעור הזה נבנה תשובה מלאה, שלב אחר שלב, ונחבר את כל המושגים מהיום: URL, DNS, IP, Port, TCP, HTTPS, Request, Response.
למה צריך את זה?
- זו השאלה הנפוצה ביותר בראיונות Junior. היא בודקת אם אתם רואים את “התמונה הגדולה”.
- כשאתר “לא עובד”, מי שמכיר את השלבים יודע איפה לחפש: DNS? חיבור? שרת? תוכן?
- בנושא Backend ומסדי נתונים אתם תכתבו את שלב 6, העיבוד בשרת. טוב להבין מה קורה לפניו ואחריו.
הסבר מהבסיס
שלב 0 — פירוק ה-URL
URL (Uniform Resource Locator) הוא “הכתובת המלאה” של משאב באינטרנט:
https://www.example.com:443/about?lang=he
└─┬─┘ └──────┬──────┘ └┬┘ └─┬─┘ └──┬──┘
protocol domain port path query| חלק | משמעות |
|---|---|
| Protocol (Scheme) | https: באיזה פרוטוקול לדבר. |
| Domain (Host) | www.example.com: לאיזה שרת. יתורגם ל-IP. |
| Port | 443: בדרך כלל לא כותבים אותו. https = 443, http = 80. |
| Path | /about: איזה משאב בתוך השרת. |
| Query | ?lang=he: פרמטרים נוספים, בפורמט key=value. כמה פרמטרים מחברים עם &. |
שמונת השלבים
1. הדפדפן מפרק את ה-URL — מבין שהפרוטוקול הוא HTTPS (ולכן פורט 443), שה-Domain הוא www.example.com ושהנתיב הוא /about.
2. DNS Lookup — שם ← כתובת IP. הדפדפן צריך IP, לא שם. הוא בודק לפי הסדר: Cache של הדפדפן, Cache של מערכת ההפעלה, ואם אין תשובה — שואל את שרת ה-DNS. מתקבל למשל 93.184.215.14.
3. חיבור TCP — Three-Way Handshake. הדפדפן פותח חיבור TCP לכתובת 93.184.215.14:443. החיבור נפתח ב"לחיצת יד" של שלוש הודעות:
Client ──── SYN ────────► Server "Can we talk?"
Client ◄─── SYN-ACK ───── Server "Yes, can you hear me?"
Client ──── ACK ────────► Server "Yes. Let's start."4. TLS Handshake — הצפנה. כי זה HTTPS: השרת שולח תעודה (Certificate), הדפדפן בודק שהיא אמיתית ושייכת ל-www.example.com, ושני הצדדים מסכימים על מפתח הצפנה. מכאן הכול מוצפן. (ב-http:// אין את השלב הזה.)
5. שליחת HTTP Request:
GET /about?lang=he HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 ...
Accept: text/html6. השרת מעבד את הבקשה. תוכנת השרת מקבלת את הבקשה, מבינה מה ביקשו (GET /about), ומכינה תשובה. לפעמים זה רק קובץ קבוע, ולפעמים הרבה עבודה: הרצת קוד, שאילתה ל-Database, בניית HTML. זה החלק שתכתבו בנושא Backend ומסדי נתונים.
7. השרת שולח HTTP Response:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<!doctype html><html> ... <link href="/style.css"> <img src="/logo.png"> ...8. הדפדפן מציג (Rendering). הדפדפן קורא את ה-HTML ובונה ממנו את הדף. כשהוא נתקל בקבצים נוספים (CSS, תמונות, JavaScript), הוא שולח עוד Requests, אחד לכל קובץ, וחוזר על שלבים 5–7. דף ממוצע מבצע עשרות בקשות! (חיבור ה-TCP וההצפנה כבר קיימים, ולכן בדרך כלל לא חוזרים על שלבים 2–4.)
- אתם יודעים שרוצים “פיצה מהמסעדה ההיא” (URL). 2. מחפשים באפליקציה את הכתובת שלה (DNS). 3. מתקשרים והיא עונה (TCP Handshake). 4. מוודאים שזו באמת המסעדה ולא מתחזה, ומדברים בקוד סודי (TLS). 5. מזמינים (Request). 6. המטבח מכין, אולי מוציא מצרכים מהמחסן (עיבוד + Database). 7. השליח מביא את המנה (Response). 8. אתם פורסים ומגישים, ומגלים שחסרים רטבים, אז מזמינים עוד (בקשות CSS ותמונות).
כמה זמן לוקח כל שלב
כל המסע הזה לוקח בדרך כלל פחות משנייה. מדידה לדוגמה של בקשה אחת:
Step 2 - DNS: example.com -> 93.184.215.14 | ms: 21
Step 3 - TCP connected to 93.184.215.14 443 | ms: 64
Step 4 - TLS version: TLSv1.3 | ms: 71
Steps 5-7 - first line: HTTP/1.1 200 OK | ms: 66את אותם זמנים אפשר לראות בכל דפדפן: F12 ← לשונית Network ← לחיצה על בקשה ← Timing. המרצה יציג את זה על המסך. שם רואים גם כמה בקשות דף אחד שולח — לפעמים עשרות.
טעות נפוצה
הטעות: לדלג על DNS או לשים אותו אחרי החיבור (“הדפדפן מתחבר ל-google.com”). אי אפשר להתחבר לשם. חיבור TCP דורש IP, ולכן DNS תמיד קודם.
טעות שנייה: לחשוב שכל הדף מגיע בבקשה אחת. ה-HTML מגיע ראשון, ומתוכו הדפדפן מגלה עוד עשרות קבצים ומבקש כל אחד בנפרד. בלשונית Network ב-DevTools רואים את זה מיד.
טעות שלישית — אבחון לא נכון של תקלה:
| הסימפטום | השלב שנכשל |
|---|---|
| “DNS_PROBE_FINISHED_NXDOMAIN” / “server IP address could not be found” | 2 — DNS: אין Domain כזה, או בעיית DNS |
| “Connection refused” / “timed out” | 3 — אין שרת שמאזין, או שהשרת לא נגיש |
| “Your connection is not private” | 4 — בעיית תעודה ב-TLS |
| דף “404 Not Found” | 6–7 — השרת עובד, אבל הנתיב לא קיים |
| דף “500 Internal Server Error” | 6 — קוד השרת קרס |
סיכום
- URL = Protocol + Domain + Port + Path + Query.
- הסדר: פירוק URL ← DNS ← TCP Handshake ← TLS ← HTTP Request ← עיבוד בשרת ← HTTP Response ← Rendering.
- DNS תמיד לפני החיבור, כי מתחברים ל-IP ולא לשם.
- דף אחד = עשרות Requests: HTML ראשון, ואחריו CSS, תמונות ו-JS.
- כל סוג תקלה שייך לשלב מסוים, וכך מאבחנים.
דוקומנטציה רשמית
- MDN — How the web works — המסע מהדפדפן לשרת וחזרה
תרגול
שאלות הבנה על החומר של השיעור — בלי קוד.
תרגיל 1: Client או Server?
בכל תרחיש — מי ה-Client ומי ה-Server?
- גולשים מהטלפון לאתר של בנק.
- אפליקציית מזג אוויר מבקשת תחזית.
- דנה מריצה על הלפטופ תוכנה שמחכה לבקשות, ופותחת אותה בדפדפן של אותו לפטופ.
הצג פתרון
- Client: הדפדפן בטלפון. Server: התוכנה שמריצה את האתר של הבנק.
- Client: האפליקציה. Server: השירות שמחזיר תחזיות.
- שניהם על אותו לפטופ: הדפדפן הוא ה-Client, והתוכנה שמחכה לבקשות היא ה-Server. Client ו-Server הם תפקידים של תוכנות, לא סוגי מחשבים.
תרגיל 2: IP, Port ו-DNS
- מה מזהה כתובת IP, ומה מזהה Port?
- מה המשמעות של הכתובת
127.0.0.1:8000? - חבר מנסה לפתוח בטלפון שלו את
127.0.0.1:8000כדי לראות שרת שרץ אצלכם. למה זה לא יעבוד?
הצג פתרון
- IP מזהה מחשב ברשת (איזה בניין). Port מזהה תוכנה בתוך המחשב (איזו דירה).
127.0.0.1הוא localhost — המחשב עצמו.8000הוא הפורט שעליו התוכנה מאזינה. ביחד: התוכנה שמאזינה על פורט 8000 במחשב הזה.- בטלפון של החבר,
127.0.0.1הוא הטלפון של עצמו — לא המחשב שלכם. localhost נגיש רק מאותו מחשב.
תרגיל 3: פירוק URL
פרקו את הכתובת לחלקיה — Protocol, Domain, Port, Path ו-Query:
https://shop.example.com:443/cart?coupon=SALE10ומה יהיה הפורט אם לא כתוב בכתובת :443?
הצג פתרון
| חלק | ערך |
|---|---|
| Protocol | https |
| Domain | shop.example.com |
| Port | 443 |
| Path | /cart |
| Query | coupon=SALE10 |
כשהפורט לא כתוב, הדפדפן משתמש בפורט ברירת המחדל של הפרוטוקול: 443 ל-HTTPS (ו-80 ל-HTTP).
תרגיל 4: קודי תשובה
מה אומר כל אחד מהקודים, ואצל מי הבעיה — ה-Client או ה-Server?
200 301 404 500ומה יקבל הדפדפן אם השרת בכלל לא רץ?
הצג פתרון
| קוד | משמעות | איפה הבעיה |
|---|---|---|
200 | הבקשה הצליחה | אין בעיה |
301 | הכתובת עברה למקום אחר | אין בעיה — הפניה |
404 | הנתיב לא נמצא | אצל ה-Client — כתובת שגויה |
500 | שגיאה בקוד השרת | אצל ה-Server |
אם השרת לא רץ בכלל — לא חוזר שום Status Code. מקבלים שגיאת חיבור, כמו Connection refused או timed out.
תרגיל 5: המסע של בקשה
סדרו את השלבים לפי הסדר — ממה שקורה מהקלדת כתובת ועד שהאתר מוצג:
- (א) חיבור TCP — לחיצת יד משולשת
- (ב) DNS — תרגום השם לכתובת IP
- (ג) הדפדפן מציג את הדף (Rendering)
- (ד) שליחת HTTP Request
- (ה) הקמת הצפנה (TLS)
- (ו) פירוק ה-URL
- (ז) השרת מחזיר HTTP Response
ולמה DNS חייב לבוא לפני חיבור ה-TCP?
הצג פתרון
הסדר: (ו), (ב), (א), (ה), (ד), (ז), (ג)
- פירוק ה-URL.
- DNS — שם ← כתובת IP.
- חיבור TCP (SYN, SYN-ACK, ACK).
- TLS — הצפנה (בגלל HTTPS).
- HTTP Request.
- (השרת מעבד את הבקשה.)
- HTTP Response.
- Rendering — והדפדפן מבקש עוד קבצים (CSS, תמונות).
DNS בא קודם כי חיבור TCP דורש כתובת IP — אי אפשר להתחבר לשם.