# HyperText Transfer Protocol

### מתוך ויקיפדיה, האנציקלופדיה החופשית

יש לך הודעות חדשות (השווה לגרסה הקודמת).

פרוטוקולים במודל ה-OSI
HTTP, SMTP, FTP, IRC, SNMP, SSH ... | Application
SSH ... | Presentation
| Session
TCP, UDP, SCTP, RTP, DCCP ... | Transport
IPv4, IPv6, ICMP, RIP, IPX ... | Network
Ethernet, Token ring, FDDI, ARP ... | Data Link
802.11 WiFi ... | Physical

פרוטוקולים במודל ה-TCP/IP
Application | HTTP, SMTP, FTP, SSH, IRC, SNMP, SIP ...
Transport | TCP, UDP, SCTP, RTP, DCCP, ICMP ...
Network | IPv4, IPv6, ICMP, ARP, IPX ...
Physical | Ethernet, 802.11 WiFi, Token ring, FDDI, ARP ...

HyperText Transfer Protocol (בראשי תיבות: HTTP) הוא פרוטוקול תקשורת המשמש להעברת דפי HTML ואת האובייקטים שהם מכילים (כמו תמונות, קול, וידאו, סרטוני פלאש) באינטרנט וברשתות אינטראנט. פרוטוקול זה פועל בשכבת התוכנה של מודל הOSI ובשכבת התוכנה של מודל הTCP/IP.

שרתי HTTP יושבים בדרך-כלל בפתחה מספר 80 או 81 של פרוטוקול TCP והם מהווים את תשתית התוכן של רשת האינטרנט.

הפרוטוקול נקרא גם פרוטוקול בקשה/תשובה. ראשית, נשלחת בקשה לכתובת ה־IP של השרת (אחרי שאותרה על־ידי שרת ה־DNS), הכוללת את העדפות המשתמש שנכתבו לעיל, את הנתיב לדף, את השיטה שבאמצעותה מבקשים את הדף, וכולי. התשובה מגדירה את המצב המספרי של הדף.

## [עריכה] גרסאות HTTP

לפרוטוקול יצאו 2 גרסאות:

- HTTP 1.0 – הגרסה הראשונה של הפרוטוקול. כללה ניהול בלתי־יעיל של דפים עם אובייקטים מרובים, כיוון שהיה צורך לפתוח חיבור נוסף לכל אובייקט.
- HTTP 1.1 – הציגה שינויים ושיפורים רבים; בין השאר, הציגה את שיטת Keep-Alive, שגורמת לכך שאפשר יהיה להעביר אובייקטים רבים דרך חיבור HTTP אחד שנשאר פעיל כל הזמן, וכך גורמת לחיסכון ניכר בזמן העלייה. (בנוסף, ישנן אפשרויות שכמעט ולא נוצלו עד כה: הגדרות שפה על־ידי המשתמש, הגדרות העדפת סוג המסמך המתקבל (כרגע אינו מיושם בהגדרות הדפדפן), ועוד.)

## [עריכה] שיטות בבקשות

ישנן מספר שיטות אפשריות בבקשות, המוכרות גם מהשיטה method של התגית <form>:

- GET – בקשה פשוטה לדף בשרת, עם URL פשוט. רוב הבקשות הן כאלו.
- POST – בקשה שהיא כל מה שנכתב ב־GET, ובנוסף – נתונים (לרוב נתוני טופס); כך ניתן לעקוף את ההגבלה של 255 התווים ב־URL.

## [עריכה] דוגמה לבקשה ותגובה של HTTP

### [עריכה] הבקשה

    GET / HTTP/1.1

שיטת הבקשה וגרסת הפרוטוקול.

    Host: www.google.com

שם השרת המארח.

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20050203 Firefox/1.0

ה־User Agent של הדפדפן שמשתמשים בו; כפי שניתן לראות, הדפדפן פיירפוקס שימש לצילום הכותרות.

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,
    text/plain;q=0.8,image/png,*/*;q=0.5

אילו דפים הדפדפן מוכן לקבל (אין, בשלב זה, הגדרה לכך בשום דפדפן). כפי שניתן לראות, פיירפוקס מוכן לקבל XML,‏ XHTML,‏ ו־HTML באותה המידה; הוא מעדיף קצת פחות טקסט פשוט; והוא מעדיף הרבה פחות תמונת PNG או כל דבר אחר.

    Accept-Language: he,en;q=0.5

הכותרת הזו מעוגנת בהגדרות, ומגדיר אילו שפות הגולש רוצה לראות. כפי שניתן לראות, בדוגמה מועדפות השפות עברית ואנגלית (על כל סוגי האנגלית) במידה שווה. (הכותרת עדיין איננה בשימוש נרחב.)

    Accept-Encoding: gzip,deflate

הכותרת הזו אומרת באילו קידודים (שלא במובן Charsets) הדפדפן תומך.

    Accept-Charset: windows-1255,utf-8;q=0.7,*;q=0.7

הכותרת הזו אומרת אילו קידודים (הפעם במובן Charsets) הדפדפן מעדיף לקבל.

    Keep-Alive: 300
    Connection: keep-alive

הכותרות האלו מגדירות ששיטת Keep-Alive נמצאת בשימוש.

    Cookie: PREF

הכותרת הזו מראה לשרת את העוגיות שנאמר לדפדפן לשלוח. (יש לשים לב לכך שהכותרת הזו מצונזרת – במקור היה מדובר ב־ID של המשתמש בגוגל, העדפותיו ועוד.)

### [עריכה] התשובה

    HTTP/1.x 302 Found

כותרת זו מראה שהמצב המספרי של הדף הוא ‎302 Found, כלומר – הדף עבר זמנית. (זה נובע מהעובדה שגוגל משתמש בכותרת Accept-Language, ומכיוון שהוגדר שהגולש מעדיף עברית, יינתן הדף בעברית.)

    Transfer-Encoding: chunked

כותרת זו מגדירה את סוג הקידוד בהעברת הדף.

    Date: Tue, 15 Feb 2005 15:10:28 GMT

כותרת זו אומרת את התאריך והשעה.

    Content-Type: text/html

כותרת זו מגדירה שסוג הנתונים המתקבל הינו HTML (למעשה, מומלץ לציין במיקום זה אף את קידוד (במובן Charset) הדף).‏

    Cache-Control: private, x-gzip-ok=""

כותרת זו מגדירה את סוג השימוש במנגנון המטמון.

    Server: GWS/2.1

כותרת זו מגדירה את סוג השרת.

    Content-Encoding: gzip

כותרת זו מגדירה את הקידוד (שלא במובן Charset) של הדף, וכפי שניתן לראות, הדפדפן יכול לקבל את הקידוד הזה.

    Location: http://www.google.co.il/

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

    Via: 1.1 PTK-CACHE-218B (NetCache NetApp/5.6.1D21)

כותרת זו מגדירה מספר הגדרות נוספות בנוגע לזיכרון המטמון.

## [עריכה] המצב המספרי של הדף

להלן המצבים האפשריים, שלמעשה, נתקלים רק בכמה מהם בחיי היום־יום:

### [עריכה] מספרי 1xx

הודעות אלו מציגות מידע על עיבוד הבקשה, בטרם הושלמה.

- ‎100 Continue – השרת קיבל רק חלק מהמידע, אבל על־פי החלק הזה, הבקשה בסדר.
- ‎101 Switching Protocols – השרת עובר מפרוטוקול אחד לפרוטוקול אחר.

### [עריכה] מספרי 2xx

הודעות אלו הן למעשה העובדה שהבקשה הצליחה, בתוספת מידע על מה שהבקשה עשתה או על שגיאות אפשריות למרות ההצלחה.

- ‎200 OK – הבקשה הצליחה (מצב נפוץ).
- ‎201 Created – הבקשה הצליחה, ומקור חדש נוצר.
- ‎202 Accepted – הבקשה התקבלה לעיבוד, אך העיבוד לא הושלם.
- ‎203 Non-authoritative Information.
- ‎204 No Content – הבקשה הצליחה, אבל אין תוכן במה שמוחזר.
- ‎205 Reset Content.
- ‎206 Partial Content.

### [עריכה] מספרי 3xx

הודעות אלו אומרות לדפדפן לעבור אוטומטית לדף אחר, או להציג למשתמש דף בחירה (במקרה של ‎300 Multiple Choice).

- ‎300 Multiple Choices – הדף מפנה מחדש למספר מקורות אפשריים שעליך לבחור מהם; לרוב, זהו ״האם התכוונת לזה, לזה או לזה…?״
- ‎301 Moved Permanently – הדף עבר למיקום חדש באופן סופי ולצמיתות (מצב נפוץ, אבל לא נפוץ כמו מצב ‎302 Found).
- ‎302 Found – הדף עבר באופן זמני למיקום חדש; כמו כן, בדרך־כלל משתמשים בו להפנייה מחדש ביישום Web (מצב נפוץ).
- ‎303 See Other – כמו ‎302 Found
- ‎304 Not Modified – ״לפי התאריך והשעה שנתת לי, הדף במטמון שאצלך מעודכן; השתמש בו״ (מצב נפוץ).
- ‎305 Use Proxy.
- 306 – היה בשימוש ב־HTTP 1.0, כיום כבר לא בשימוש.
- ‎307 Temporary Redirect – כמו ‎302 Found.

### [עריכה] מספרי 4xx

הודעות אלו מדווחות על שגיאות שהלקוח עשה, וניתנות לתיקון בשינוי הבקשה.

- ‎400 Bad Request – השרת לא הבין את הבקשה.
- ‎401 Unauthorized – הדף המבוקש דורש שם משתמש וסיסמה.
- ‎402 Payment Required – שומר מקום, אינו בשימוש עדיין. כנראה יציין את העובדה, שצריך לשלם כדי להכנס לדף.
- ‎403 Forbidden – הכניסה לדף אסורה. (בדרך־כלל, זה כיוון שהייתה בקשה לתיקייה שאינה מאפשרת את ראיית רשימת הקבצים שבתוכה, ואין בה קובץ ברירת־מחדל.)
- ‎404 Not Found – הדף פשוט אינו קיים (מצב נפוץ).
- ‎405 Method Not Allowed – אי־אפשר להשתמש בשיטה מסוג זה על הדף. (בדרך־כלל, מדובר בשליחת טופס באמצעות POST לדף שאינו דף פעיל (כלומר, משתמש ב־PHP, ‏ASP וכדומה.)
- ‎406 Not Acceptable – השרת יכול לייצר אך ורק תשובה שלא תתקבל על־ידי הלקוח.
- ‎407 Proxy Authentication Required – הלקוח חייב להזדהות עם שרת Proxy לפני שניתן יהיה לשרת את הבקשה.
- ‎408 Request Timeout – עיבוד הבקשה לקח זמן הגדול מהזמן הסביר לעיבוד בקשה.
- ‎409 Conflict – הבקשה לא יכולה להיות מעובדת, בגלל קונפליקט.
- ‎410 Gone – הדף המבוקש כבר אינו זמין.
- ‎411 Length Required – הפרמטר Content-Length בבקשה אינו קיים, אך השרת דורש אותו.
- ‎412 Precondition Failed – התנאי המקדים לעיבוד הדף, שהוצב בבקשת הלקוח, אינו נכון על־פי השרת.
- ‎413 Request Entity Too Large – הבקשה גדולה מדי לעיבוד על־ידי השרת.
- ‎414 Request-url Too Long – ה־URL שניתנה בבקשה ארוכה מדי (255 תווים הוא האורך המירבי). (הדבר קורה לעיתים קרובות כשממירים בקשת POST עם נתונים רבים לבקשת GET.)
- ‎415 Unsupported Media Type – סוג המדיה שצוין בבקשה אינו נתמך על־ידי השרת.
- 416 – כנראה לא בשימוש.
- ‎417 Expectation Failed.

### [עריכה] מספרי 5xx

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

- ‎500 Internal Server Error – הבקשה לא הושלמה, כיוון שהשרת נתקל בשגיאה פנימית ובלתי־צפויה (לעיתים, מדובר בשגיאה בקוד ה־PHP או ה־ASP) (מצב לא נפוץ, אבל גם לא נדיר).
- ‎501 Not Implemented – הבקשה לא הושלמה, כיוון שהשרת לא תומך בתפקודיות הדרושה.
- ‎502 Bad Gateway – הבקשה לא הושלמה, כיוון שהשרת קיבל תשובה בלתי־חוקית מהשרת העליון.
- ‎503 Service Unavailable – הבקשה לא הושלמה, כיוון שהשרת נתון בעומס או שהוא לא פעיל זמנית.
- ‎504 Gateway Timeout – נגמר הזמן הסביר לתשובה מה־Gateway של השרת.
- ‎505 HTTP Version Not Supported – השרת אינו תומך בגרסת ה־HTTP שצוינה. (התשובה הזו מאוד לא סבירה כרגע.)

## [עריכה] ראו גם

- מונחים ברשת מחשבים
- Referer

מקור: http://he.wikipedia.org../../../h/y/p/HyperText_Transfer_Protocol_572f.html

קטגוריות: תקנים בתקשורת מחשבים | אינטרנט

##### Views

- ערך
- שיחה
- גרסה נוכחית

##### קהילה

- שער הקהילה
- עזרה
- דלפק ייעוץ
- מזנון
- יצירת קשר
- ספר אורחים

##### חיפוש

##### שפות אחרות

- English
- العربية
- Български
- বাংলা
- Català
- Česky
- Dansk
- Deutsch
- Ελληνικά
- Esperanto
- Español
- Eesti
- Euskara
- Suomi
- Français
- Gaeilge
- Galego
- Hrvatski
- Magyar
- Bahasa Indonesia
- Italiano
- 日本語
- 한국어
- Lëtzebuergesch
- Lietuvių
- Latviešu
- Nederlands
- Norsk (nynorsk)
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Srpskohrvatski / Српскохрватски
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Svenska
- ไทย
- Tagalog
- Türkçe
- Українська
- 中文