HYPERTEXT TRANSFER PROTOCOL ( HTTP )

Download Report

Transcript HYPERTEXT TRANSFER PROTOCOL ( HTTP )

HYPERTEXT TRANSFER
PROTOCOL
( HTTP )
HYPERTEXT TRANSFER
PROTOCOL
( HTTP ) คืออะไร
โปรโตคอล คืออะไร
• โปรโตคอล(Protocol) คือระเบียบวิธีที่กำหนดขึ ้นสำหรับสื่อสำร
ข้ อมูล ให้ สำมำรถส่งผ่ำนข้ อมูลไปยังปลำยทำงได้ อย่ำงถูกต้ อง
ซึง่ โปโตคอลได้ กำหนดสิง่ ที่จำเป็ นจะต้ องมีดงั ต่อไปนี ้
•
1. ชนิดของกำรตรวจสอบข้ อผิดพลำด ที่จะใช้
•
2. วิธีบีบอัดข้ อมูล (ถ้ ำมี)
•
3. วิธีที่ระบบที่สง่ ข้ อมูลรับรู้วำ่ มันได้ สง่ ข้ อมูลเสร็จแล้ ว
•
4. วิธีที่ระบบที่รับข้ อมูลรับรู้วำ่ มันได้ รับข้ อมูลแล้ ว
สรุ ปความหมายของคาศัพท์ ท่ เี กี่ยวข้ องกับโปรโตคอล HTTP
คาศัพท์
ความหมาย
• ไคลเอ็นต์ (Client) โปรแกรมที่สร้ ำงกำรเชื่อมต่อขึ ้นเพื่อส่งคำ
ร้ องขอ (Request) ไป
• การเชื่อมต่ อ (Connection) วงจรเสมือนที่ถกู สร้ ำงขึ ้นระหว่ำง
โปรแกรม 2 โปรแกรม เพื่อให้
โปรแกรมสำมำรถสื่อสำรกันได้
คำศัพท์
ควำมหมำย
• ออริจนิ ้ เซิร์ฟเวอร์ (Origin Server) เซิร์ฟเวอร์ ที่มีรีซอร์ สอยู่ หรื อ
รี ซอร์ สถูกสร้ ำงขึ ้น
• รีซอร์ ส (Resource) ออบเจ็กต์ของข้ อมูลหรื อบริกำร ที่สำมำรถ
อ้ ำงถึงได้ ด้วย URL
• เซิร์ฟเวอร์ (Server) โปรแกรมที่ยอมรับกำรเชื่อมต่อเพื่อให้ บริกำร
ต่อคำร้ องขอต่ำงๆ โดยส่งคำตอบสนอง
(Response) กลับไป
คาศัพท์
ความหมาย
• ยูสเซอร์ เอเจนต์ (User Agent) ไคลเอ็นต์ที่เริ่มต้ นส่งคำร้ องขอ
โดยทัว่ ไปหมำยถึงบรำวเซอร์ ,
เอดิเตอร์ , สไปเดอร์ หรื อเครื่ องมือ
ใดๆ ของผู้ใช้ ปลำยทำง
ภาพโดยรวมของ โปรโตคอล HTTP
• HTTP เป็ นโปรโตคอลแบบไคลเอ็นต์/เซิร์ฟเวอร์ ในลักษณะ
transaction-oriented คือมีกำรติดต่อระหว่ำงโปรแกรม 2 โปรแกรม
ซึง่ โดยทัว่ ไปได้ แก่เว็บบรำวเซอร์ และเว็บเซิร์ฟเวอร์ เพื่อให้ มีควำม
น่ำเชื่อถือ HTTP จึงใช้ ประโยชน์จำกโปรโตคอล TCP แต่ถึงกระนัน้
HTTP ก็เป็ นโปรโตคอลที่ "ปรำศจำกสถำนะ"
รูปที่ 1
รูปที่ 2
คำสั่งของ โปรโตคอล HTTP
คาสั่ง
•
•
•
•
•
•
•
•
GET
GET <URL> HTTP/1.0
HEAD
POST
PUT
DELETE
LINK
UNLINK
สถานะการทางานของ HTTP
รหัสสถานะ
• 100 –199
•
•
ประเภท
Informational
รายละเอียด
เป็ นรหัสสถำนะกลุม่ ที่เปิ ด
ให้ โปรแกรมประยุกต์ ต่ำง ๆ
กำหนดใช้ งำนได้ เอง
200-299
Successful
กลุม่ รหัสที่แสดงว่ำกำร
ทำงำนเสร็จแล้ ว
300-399
Redirection
กลุม่ รหัสนี ้จะใช้ ภำยใน
โปรโตคอล HTTP เอง โดยเป็ นกำรทำงำนที่ตอ่ เนื่อง
มำจำกโปรเซส ก่อนหน้ ำนี ้ ซึง่ ไคลเอนต์เป็ นผู้สงั่ งำน
สถานะการทางานของ HTTP
รหัสสถานะ
• 400-499
ประเภท
Client Error
• 500-599
Server Error
รายละเอียด
ใช้ แสดงปั ญหำที่เกิดขึ ้น
กับไคลเอนต์
ใช้ แสดงปั ญหำที่เกิดขึ ้น
กับเซิร์ฟเวอร์
รหัสแสดงสถำนะในแต่ละตัว จะนำหน้ ำด้ วยตัวเลข 3
หลักและตำมด้ วยตัวอักษร ซึง่ รหัสในกลุม่ 100-199
จะเปิ ดกว้ ำงให้ ผ้ พู ฒ
ั นำโปรแกรมประยุกต์สำมำรถ
กำหนดค่ำขึ ้นมำใช้ งำนเอง
ส่ วนรายละเอียดของรหัสในกลุ่มอื่น ๆ มีดังนี้
รหัสสถานะ
• 200 OK
• 201 Created
• 202 Accepted
• 300 Multiple Choices
รายละเอียด
กำรทำงำนสำเร็จเรี ยบร้ อย
คำสัง่ POST ทำงำนเสร็จสมบูรณ์
ได้ รับคำสัง่ ให้ ทำงำนเรี ยบร้ อย แต่
ไม่ต้องมีกำรตอบกลับ
ถ้ ำค้ นหำและพบแหล่งข้ อมูลที่
ต้ องกำรหลำยแห่งเซิร์ฟเวอร์ จะตอบ
กลับไปทังหมดเพื
้
่อให้ ไคลเอนต์
สำมำรถเลือกแหล่งข้ อมูลที่
ต้ องกำรเองได้
รหัสสถานะ
• 301 Moved Permanently
รายละเอียด
URL ที่ร้องขอได้ ถกู ย้ ำยไปที่อื่น
แล้ ว ดังนันกำรร้
้
องขอให้ งำน
URL จะต้ องเปลี่ยนเป็ นแอด
เดรสใหม่
• 302 Moved Temporarily URL ที่ร้องขอมำได้ ถกู ย้ ำยไปที่
อื่นชัว่ ครำว
• 304 Not Modify
ใช้ แสดงสถำนะเมื่อใช้ คำสัง่ GET
ที่กำหนดเงื่อนไขเฉพำะเว็บไซต์ที่มี
กำรเปลี่ยนแปลง ส่วนเว็บไซต์ที่ไม่
มีกำรเปลี่ยนแปลงจะแสดงด้ วย
สถำนะนี ้
รหัสสถานะ
• 400 Bad Request
• 401 Unauthorized
• 403 Forbidden
• 404 Not Found
• 500 Internal Server Error
รายละเอียด
คำสัง่ จำกไคลเอนต์ไม่ถกู ต้ อง
ปฎิเสธกำรทำงำนจำกไคลเอนต์
ที่ไม่ได้ รับอนุญำต
เซิร์ฟเวอร์ ไม่อนุญำตให้ ใช้ งำน
หรื อไคลเอนต์มีสทิ ธิ ในกำรใช้
งำนไม่เพียงพอ
ไม่พบเซิร์ฟเวอร์ ตำม URL ที่
กำหนด
เซิร์ฟเวอร์ มีปัญหำ
รหัสสถานะ
รายละเอียด
• 501 Not Implemented
เซิร์ฟเวอร์ ไม่รองรับคำสัง่ ที่สงั่ ไป
• 502 Bad Gateway Proxy Server รับคำสัง่ ไม่ถกู ต้ องจำกเว็บ
เซิร์ฟเวอร์
• 503 Service Unavailable เซิร์ฟเวอร์ กำลังทำงำนอื่นอยู่ ไม่
สำมำรถให้ บริกำรได้ ในขณะนี ้
พร็ อกซี่ (PROXY) คืออะไร
พร็อกซี่ทำงำนในฐำนะเซิร์ฟเวอร์ เมื่อโต้ ตอบกับไคลเอ็นต์ และ
ทำงำนฐำนะไคลเอ็นต์เมื่อโต้ ตอบกับเซิร์ฟเวอร์ กำรใช้ งำนพร็อกซี่
เกิดขึ ้นใน 2 สถำนกำรณ์ตอ่ ไปนี ้
• 1. ตัวกลำงที่ดแู ลเรื่ องควำมปลอดภัย (Security Intermediary)
• 2. เวอร์ ชนั ของ HTTP ที่แตกต่ำงกัน
เกตเวย์ (Gateway) คืออะไร
เกตเวย์คือเซิร์ฟเวอร์ ที่ปรำกฏต่อไคลเอ็นต์รำวกับว่ำเป็ นออริจิ ้น
เซิร์ฟเวอร์ โดยปฏิบตั ิงำนอยูท่ ำงเซิร์ฟเวอร์ ซงึ่ ไม่สำมำรถสื่อสำรกับ
ไคลเอ็นต์ได้ โดยตรง ใช้ งำนใน 2 สถำนกำรณ์ตอ่ ไปนี ้
• 1. ตัวกลำงที่ดแู ลเรื่ องควำมปลอดภัย (Security Intermediary)
• 2. เซิร์ฟเวอร์ ที่ไม่ใช่ HTTP
ทันเนล (Tunnel)
• สิง่ ที่แตกต่ำงจำกพร็อกซี่และเกตเวย์ก็คือ ทันเนลไม่ได้ ดำเนินกำร
ใดๆ กับคำร้ องและคำตอบสนองของ HTTP เลย แต่ทนั เนลเป็ น
เพียงจุดส่งต่อที่อยูร่ ะหว่ำงกำรเชื่อมต่อแบบ TCP เมสเสจของ
HTTP จะถูกส่งผ่ำนไปมำโดยไม่ได้ รับกำรเปลี่ยนแปลงแก้ ไขใดๆ
เมสเสจ (Messages)
• วิธีที่อธิบำยกำรทำงำนของ HTTP ได้ ดีที่สดุ ก็คือกำรอธิบำยถึงแต่
ละองค์ประกอบของเมสเสจ HTTP โดย HTTP ประกอบด้ วยเมส
เสจ 2 ประเภทคือ คำร้ องขอจำกไคลเอ็นต์ไปยังเซิร์ฟเวอร์ และ
คำตอบสนองจำกเซิร์ฟเวอร์ ไปยังไคลเอ็นต์
Request line
General header
Request header หรื อ response header
Entity header
Entity body
รูปที่ 3
รูปที่ 3แสดงให้ เห็นโครงสร้ ำงทัว่ ไปของเมสเสจ ซึง่ สำมำรถเขียนให้ เป็ นทำงกำรในรูปของ
BNF (Backus-Naur Form) ได้ ดงั นี ้
HTTP-Message = Simple-Request | Simple-Response | Full-Request |
Full-Response
Full-Request = Request-Line
*( General-Header | Request-Header | Entity-Header )
CRLF
[ Entity-Body ]
Full-Response = Status-Line
*( General-Header | Response-Header | Entity-Header )
CRLF
[ Entity-Body ]
Simple-Request = "GET" SP Request-URL CRLF
Simple-Response = [ Entity-Body ]
ฟี ลด์ ทอ่ี ยู่ในส่ วนเฮดเดอร์ ท่วั ไป
– ประกอบด้ วยฟี ลด์ดงั ต่อไปนี ้
•
•
•
•
•
•
•
Cache-Control
Connection
Date
Forwarded
Keep-Alive
MIME-Version Pragma
Upgrade
เมสเสจร้ องขอ (Request Messages)
• เมสเสจร้ องขอที่สมบูรณ์ประกอบด้ วยบรรทัดสถำนะ ตำมด้ วยเฮด
เดอร์ ทวั่ ไป, เฮดเดอร์ คำร้ องขอ และเฮดเดอร์ ของเอ็นติตี ้ หลังจำก
นันจึ
้ งเป็ นส่วนของเอ็นติตี ้ซึง่ จะมีหรื อไม่มีก็ได้
• เมธ็อดร้ องขอ (Request Method)
• เมสเสจร้ องขอที่สมบูรณ์จะเริ่มต้ นด้ วยส่วน Request-Line เสมอ
ซึง่ มีรูปแบบดังนี ้
• Request-Line = Method SP Request-URL SP HTTP-Version
CRLF
• พำรำมิเตอร์ Method เป็ นตัวระบุคำสัง่ ของกำรร้ องขอที่แท้ จริง หรื อ
ที่นิยมเรี ยกกันใน HTTP ว่ำเมธ็อดนัน่ เอง สำหรับ Request-URL
คือ URL ของรี ซอร์ สที่ถกู ร้ องขอ และ HTTP-Version คือหมำยเลข
เวอร์ ชนั ของ HTTP ที่ผ้ สู ง่ ใช้ HTTP/1.1 กำหนดให้ มีเมธ็อดร้ องขอ
ดังต่อไปนี ้
OPTIONS
GET
HEAD
POST
PUT
PATCH
COPY
MOVE
DELETE
LINK
UNLINK
TRACE
WRAPPED
Extenstion-method
ฟี ลด์ ในส่ วนเฮดเดอร์ ของคาร้ องขอ
– ฟี ลด์ตำ่ งๆ ต่อไปนี ้ถูกกำหนดไว้ ใน HTTP/1.1
Accept
Accept-Encoding
Authorization
Host
Range
User-Agent
Accept-Charset
Accept-Language
From
Proxy-Authorization
Unless
ความสัมพันธ์ ระหว่ าง HTTP กับ HTML
ข้ อดีของการแยกชั้นการทางานระหว่ าง
HTTP กับ HTML
– 1. Contents พัฒนำบนเครื่ องแบบใดก็ได้ เช่น PC, Macintosh, IBM,
DEC, SUN, HP, SGI, Cray etc. มีเครื่ องมือช่วยในกำรพัฒนำมำกมำย
– 2. Web Server เครื่ องที่ใช้ เป็ น Web Server เป็ นเครื่ องใดๆ ก็ได้ เช่น
PC, Macintosh, IBM, DEC, SUN, HP, SGI, Cray ในแต่ละ Platform
มี โปรแกรม Web Server ให้ เลือกมำกมำย
• 3. Client Computer เครื่ องที่ใช้ เป็ น Client Computer เป็ น
เครื่ องใดๆ ก็ได้ เช่น PC, Macintosh, IBM, DEC, SUN, HP, SGI,
Cray, TV with Set-Top Box, Pen Computer etc.
• 4. Browser โปรแกรม Browser มีให้ เลือกใช้ มำกมำยบน PC,
Macintosh, IBM, DEC, SUN, HP, SGI, Cray, TV with Set-Top
Box, Pen Computer etc.
END
คณะผู้จัดทา
นาย ธีระยุทธ์ แซ่ ลมิ่
4120142
นาย กมลศักดิ์ มลิอ่อง 4120467
ภาควิชา วิทยาการคอมพิวเตอร์