ITDS231 · บทที่ 2 · Lecture 3 & 4

Application Layer

ชั้นแอปพลิเคชัน ต่อจากบทที่ 1 — หลักการของแอปพลิเคชันเครือข่าย (Client-Server, P2P, process, socket, TCP/UDP, TLS) และเว็บกับ HTTP อ่านเนื้อหา ทบทวน cheat sheet แล้วลองทำแบบฝึกหัด 20 ข้อ

เนื้อหาแยกตามไฟล์สไลด์

ภาพรวมบท Application Layer

  • network app principles
  • Web / HTTP
  • Email / SMTP / IMAP
  • DNS
  • video streaming / CDN
  • socket programming (UDP / TCP)

ตัวอย่างแอปในชีวิตประจำวัน: social media · web · messaging · email · เกมออนไลน์ · streaming (YouTube/Netflix) · P2P file sharing · VoIP · video conferencing · internet search · remote login

สถาปัตยกรรม: Client-Server vs P2P

Client-Server
  • เซิร์ฟเวอร์: เป็น always-on host มี permanent IP address มักอยู่ใน data center เพื่อรองรับการขยายตัว
  • ไคลเอนต์: เชื่อมต่อเป็นครั้งคราว อาจมี dynamic IP ไม่คุยกันเองโดยตรง
  • ตัวอย่าง: HTTP, IMAP, FTP
P2P (Peer-to-Peer)
  • ไม่มีเซิร์ฟเวอร์ส่วนกลางที่เปิดตลอดเวลา
  • อุปกรณ์ปลายทางคุยกันเองโดยตรง
  • self-scalability: peer ใหม่เพิ่มทั้งความสามารถให้บริการและความต้องการใช้บริการ
  • จัดการซับซ้อนกว่า เพราะ IP เปลี่ยนได้ตลอด
  • ตัวอย่าง: BitTorrent, blockchain

Process และการสื่อสารระหว่างโปรเซส

Process คือโปรแกรมที่รันอยู่บนโฮสต์

  • ในเครื่องเดียวกัน: คุยกันผ่าน Inter-Process Communication (IPC) ซึ่งควบคุมโดย OS
  • ต่างเครื่อง: คุยกันด้วยการแลกเปลี่ยนข้อความ (messages)
Client process

ฝ่ายเริ่มการสื่อสาร

Server process

ฝ่ายรอรับการติดต่อ

Addressing processes

IP address ระบุได้แค่ระดับเครื่อง/โฮสต์เท่านั้น (Network Layer) แต่หนึ่งเครื่องรันได้หลายโปรเซสพร้อมกัน จึงต้องใช้คู่ "IP address + Port Number" ในการระบุตัวตนที่แน่นอนของโปรเซสผ่านเครือข่าย

ตัวตนของ process บนเครือข่าย = IP address + Port number
เปรียบเทียบ: IP = บ้านเลขที่ · Port = หมายเลขห้อง · ส่วนภายในเครื่องเองใช้ Process ID (PID)

Socket

Socket คือจุดที่ process ส่ง/รับข้อความ เปรียบเหมือนประตู

เหนือ socket แอปพลิเคชันควบคุม

ส่วนของแอปพลิเคชัน (process)

ใต้ socket OS ควบคุม

transport, network, link, physical

แอปพลิเคชันกับ Transport protocol

แอปพลิเคชันApplication-layer protocolTransport protocol
file transferFTPTCP
emailSMTPTCP
webHTTPTCP
internet telephonySIP / RTPTCP หรือ UDP
streaming audio/videoHTTP / DASHTCP
interactive gamesUDP หรือ TCP

บริการของ TCP และ UDP

TCP service
  • reliable transport
  • flow control
  • congestion control
  • connection-oriented

ไม่รับประกัน: timing, throughput ขั้นต่ำ, security

UDP service

unreliable data transfer

ไม่มี: reliability, flow control, congestion control, timing, throughput guarantee, security หรือ connection setup ใดๆ

Securing TCP ด้วย TLS

  • TLS (Transport Layer Security) เข้ารหัสการเชื่อมต่อ TCP ให้ data integrity และ endpoint authentication
  • TLS ทำงานอยู่ที่ application layer — แอปเรียกใช้ TLS library ซึ่งใช้ TCP อีกที
  • cleartext ที่ส่งเข้า socket จะถูกเข้ารหัสก่อนวิ่งออกอินเทอร์เน็ต

เว็บเพจประกอบด้วย objects

  • เว็บเพจประกอบด้วย objects หลายชิ้น — HTML file, รูปภาพ, CSS/JS, สื่ออื่นๆ
  • แต่ละชิ้นระบุด้วย URL และอาจเก็บอยู่คนละเว็บเซิร์ฟเวอร์กันได้
ตัวอย่าง: base HTML จาก server ตรง · รูป จาก CDN · ฟอนต์ จาก Google

HTTP คืออะไร

HTTP = HyperText Transfer Protocol เป็น application-layer protocol ของเว็บ ทำงานแบบ client/server

Client browser

ร้องขอ รับ และแสดงผล objects

Server web server

ส่ง object กลับมาตอบคำขอ

HTTP ใช้ TCP:

  1. client เปิด TCP connection ไปยัง server ที่ port 80
  2. แลกเปลี่ยน HTTP message กัน
  3. ปิดการเชื่อมต่อ
HTTP เป็น "stateless": เซิร์ฟเวอร์ไม่เก็บข้อมูลหรือจดจำประวัติคำขอในอดีตของ client เลย · ข้อดี: ระบบง่าย ไม่ซับซ้อน · แต่ต้องพึ่งกลไกอื่น เช่น cookie ถ้าต้องการจดจำสถานะ

Non-persistent vs Persistent HTTP

Non-persistent HTTP
  • เปิด TCP connection → ส่งได้อย่างมาก 1 object → ปิด connection
  • ถ้ามีหลาย object ต้องเปิด-ปิดใหม่ทุกครั้ง
Persistent HTTP HTTP/1.1
  • เปิด TCP connection ค้างไว้ ส่งได้หลาย object ผ่าน connection เดียวกัน
  • client ส่งคำขอทันทีที่เจอ object ที่อ้างอิง
  • เหลือเพียงประมาณ 1 RTT สำหรับทุก object รวมกัน (เร็วกว่า non-persistent มาก)

เวลาตอบสนองของ Non-persistent HTTP

response time = 2RTT + file transmission time
  • 1 RTT สำหรับเปิด TCP connection
  • 1 RTT สำหรับส่งคำขอ + รับ byte แรก

HTTP Request message

เป็น ASCII อ่านได้ ประกอบด้วย

request line (method, URL, version) + header lines + entity body
Methodหน้าที่
GETร้องขอข้อมูล ส่ง user data แนบไปกับ URL ได้ (หลัง ?)
POSTส่งข้อมูลจากฟอร์มของผู้ใช้ไปเก็บใน entity body
HEADขอแค่ header กลับมา โดยไม่โหลดไฟล์เนื้อหาจริง
PUTอัปโหลด/แทนที่ไฟล์บนเซิร์ฟเวอร์ทั้งหมดด้วยเนื้อหาใหม่

HTTP Response message และ Status code

ประกอบด้วย

status line (protocol, status code, status phrase) + header lines + entity body

entity body คือข้อมูลจริง เช่น ไฟล์ HTML

Status codeความหมาย
200 OKสำเร็จ
301 Moved Permanentlyย้ายถาวร มี URL ใหม่ใน header
400 Bad Requestเซิร์ฟเวอร์ไม่เข้าใจคำขอ
404 Not Foundไม่พบไฟล์
505 HTTP Version Not Supportedเซิร์ฟเวอร์ไม่รองรับเวอร์ชันที่ client ร้องขอ

Cheat sheet

ตาราง สูตร และคำที่มักออกสอบของบทที่ 2 รวมไว้ในหน้าเดียว

01 Client-Server vs P2P

Client-ServerP2P
เซิร์ฟเวอร์always-on host · permanent IP · มักอยู่ใน data centerไม่มีเซิร์ฟเวอร์ส่วนกลางที่เปิดตลอดเวลา
การสื่อสารclient ไม่คุยกันเองโดยตรงอุปกรณ์ปลายทางคุยกันเองโดยตรง
IPclient อาจมี dynamic IPIP เปลี่ยนได้ตลอด → จัดการซับซ้อนกว่า
การขยายรองรับการขยายตัวด้วย data centerself-scalability
ตัวอย่างHTTP, IMAP, FTPBitTorrent, blockchain

02 ระบุตัวตน process

IP address + Port number
IP
ระบุระดับเครื่อง/โฮสต์ (Network Layer) = บ้านเลขที่
Port
ระบุโปรเซสในเครื่อง = หมายเลขห้อง
PID
ใช้ภายในเครื่องเอง

03 TCP vs UDP

คุณสมบัติTCPUDP
Reliable transport✓ มี✗ ไม่มี
Flow control✓ มี✗ ไม่มี
Congestion control✓ มี✗ ไม่มี
Connection setup✓ connection-oriented✗ ไม่มี
Timing✗ ไม่รับประกัน✗ ไม่มี
Throughput ขั้นต่ำ✗ ไม่รับประกัน✗ ไม่มี
Security✗ ไม่รับประกัน✗ ไม่มี

ต้องการความปลอดภัยบน TCP → ใช้ TLS (data integrity + endpoint authentication)

04 App ↔ Transport

file transfer
FTP → TCP
email
SMTP → TCP
web
HTTP → TCP
internet telephony
SIP/RTP → TCP หรือ UDP
streaming audio/video
HTTP/DASH → TCP
interactive games
UDP หรือ TCP

05 Non-persistent HTTP

2RTT + file transmission time
  • 1 RTT เปิด TCP connection
  • 1 RTT ส่งคำขอ + รับ byte แรก
  • อย่างมาก 1 object ต่อ 1 TCP connection

Persistent (HTTP/1.1): connection เดียวส่งหลาย object ≈ 1 RTT รวม

06 HTTP methods

GET
ร้องขอข้อมูล · user data แนบกับ URL (หลัง ?)
POST
ส่งข้อมูลฟอร์มไปใน entity body
HEAD
ขอแค่ header ไม่โหลดเนื้อหาจริง
PUT
อัปโหลด/แทนที่ไฟล์บนเซิร์ฟเวอร์ทั้งหมด

07 Status code ที่พบบ่อย

200
OK · สำเร็จ
301
Moved Permanently · URL ใหม่ใน header
400
Bad Request · เซิร์ฟเวอร์ไม่เข้าใจคำขอ
404
Not Found · ไม่พบไฟล์
505
HTTP Version Not Supported

แบบฝึกหัด 20 ข้อ

เลือกคำตอบให้ครบแล้วกด "ตรวจคำตอบ" ด้านล่าง ระบบจะเฉลยพร้อมคำอธิบายทุกข้อ

01สถาปัตยกรรมใดมีเซิร์ฟเวอร์เป็น always-on host และ permanent IP?

Client-Server: เซิร์ฟเวอร์เป็น always-on host มี permanent IP address มักอยู่ใน data center · ส่วน P2P ไม่มีเซิร์ฟเวอร์ส่วนกลางที่เปิดตลอดเวลา

02คุณสมบัติเด่นของ P2P คือข้อใด?

P2P มี self-scalability — peer ใหม่เพิ่มทั้งความสามารถให้บริการและความต้องการใช้บริการ · ไม่มีเซิร์ฟเวอร์ส่วนกลางที่เปิดตลอดเวลา และ IP เปลี่ยนได้ตลอดจึงจัดการซับซ้อนกว่า

03"Process" หมายถึงอะไร?

Process คือโปรแกรมที่รันอยู่บนโฮสต์

04โปรเซสในเครื่องเดียวกันสื่อสารกันด้วยกลไกใด?

โปรเซสในเครื่องเดียวกันคุยกันผ่าน Inter-Process Communication (IPC) ที่ OS ควบคุม · ส่วนโปรเซสต่างเครื่องคุยกันด้วยการแลกเปลี่ยนข้อความ (messages)

05เหตุใด IP address อย่างเดียวไม่พอระบุตัวตน process?

IP address ระบุได้แค่ระดับเครื่อง/โฮสต์ แต่เครื่องเดียวรันได้หลายโปรเซสพร้อมกัน จึงต้องใช้คู่ IP address + Port number (IP = บ้านเลขที่, Port = หมายเลขห้อง)

06Socket เปรียบเสมือนอะไร?

Socket คือจุดที่ process ส่ง/รับข้อความ เปรียบเหมือนประตู · แอปควบคุมสิ่งที่อยู่เหนือ socket ส่วน OS ควบคุม transport, network, link, physical ที่อยู่ใต้ลงไป

07ข้อใด "ไม่ใช่" สิ่งที่ TCP รับประกัน?

TCP ให้ reliable transport, flow control, congestion control และเป็น connection-oriented แต่ไม่รับประกัน timing, throughput ขั้นต่ำ และ security

08UDP ต่างจาก TCP อย่างไร?

UDP เป็น unreliable data transfer — ไม่มี reliability, flow control, congestion control, timing, throughput guarantee, security หรือ connection setup ใดๆ

09Web documents (HTTP) ใช้ transport protocol ใด?

web → HTTP → TCP · client เปิด TCP connection ไปยัง server ที่ port 80

10เกม interactive มักใช้ transport protocol ใด?

ตาราง app ↔ transport: interactive games → UDP หรือ TCP · SMTP และ FTP เป็น application-layer protocol ไม่ใช่ transport protocol

11TLS ทำหน้าที่อะไร?

TLS เข้ารหัสการเชื่อมต่อ TCP ให้ data integrity และ endpoint authentication · ทำงานที่ application layer (แอปเรียกใช้ TLS library ซึ่งใช้ TCP อีกที) จึงไม่ได้แทนที่ TCP

12HTTP ย่อมาจากอะไร อยู่ชั้นใด?

HTTP = HyperText Transfer Protocol เป็น application-layer protocol ของเว็บ

13"HTTP is stateless" หมายความว่าอย่างไร?

Stateless: เซิร์ฟเวอร์ไม่เก็บข้อมูลหรือจดจำประวัติคำขอในอดีตของ client เลย — ระบบง่าย แต่ถ้าต้องการจดจำสถานะต้องพึ่งกลไกอื่น เช่น cookie

14Non-persistent HTTP คือข้อใด?

Non-persistent: เปิด TCP connection → ส่งได้อย่างมาก 1 object → ปิด ถ้ามีหลาย object ต้องเปิด-ปิดใหม่ทุกครั้ง · ข้อ A คือ Persistent HTTP

15สูตรเวลาตอบสนองของ Non-persistent HTTP?

1 RTT สำหรับเปิด TCP connection + 1 RTT สำหรับส่งคำขอและรับ byte แรก + เวลาส่งไฟล์ = 2RTT + file transmission time

16Persistent HTTP (1.1) ดีกว่า Non-persistent อย่างไร?

Persistent HTTP (HTTP/1.1) เปิด TCP connection ค้างไว้ ส่งหลาย object ผ่าน connection เดียว client ส่งคำขอทันทีที่เจอ object ที่อ้างอิง เหลือประมาณ 1 RTT สำหรับทุก object รวมกัน

17Method ใดส่งข้อมูลฟอร์มไปเก็บใน entity body?

POST ส่งข้อมูลจากฟอร์มของผู้ใช้ไปเก็บใน entity body · GET แนบ user data ไปกับ URL (หลัง '?')

18Method ใดขอแค่ header โดยไม่โหลดไฟล์จริง?

HEAD ขอแค่ header กลับมา โดยไม่โหลดไฟล์เนื้อหาจริง · PUT อัปโหลด/แทนที่ไฟล์บนเซิร์ฟเวอร์ด้วยเนื้อหาใหม่

19รหัสสถานะใดหมายถึง "ค้นหาไม่พบ"?

404 Not Found = ไม่พบไฟล์ · 200 สำเร็จ · 301 ย้ายถาวร (มี URL ใหม่ใน header) · 505 เซิร์ฟเวอร์ไม่รองรับเวอร์ชันที่ client ร้องขอ

20เว็บเพจประกอบด้วยอะไร วัตถุแต่ละชิ้นระบุที่อยู่ด้วยอะไร?

เว็บเพจประกอบด้วย objects หลายชิ้น (HTML file, รูปภาพ, CSS/JS, สื่ออื่นๆ) แต่ละชิ้นระบุด้วย URL และอาจอยู่คนละเซิร์ฟเวอร์ เช่น base HTML จาก server ตรง รูปจาก CDN ฟอนต์จาก Google

0 / 20 ข้อ