บทที่ 2: application layer - burapha universitynutthanon/887230/... · 2013. 11. 11. ·...
TRANSCRIPT
Application Layer 2-1
บทท 2: Application Layer
Computer Networking: A Top Down Approach 6th edition Jim Kurose, Keith Ross Addison-Wesley March 2012
การใชสไลด :
เนอหาในสไลดเหลานถกแปลมาจากสไลดตนฉบบประกอบหนงสอของผแตงชอ Kurose และ Ross
ผแปลอนญาตใหทกทานสามารถใชสไลดทงหมดได ดงนนทานสามารถดภาพเคลอนไหว สามารถเพม
,แกไข และ ลบสไลด (นบรวมขอความน) และเนอหาของสไลดเพอใหเหมาะกบความตองการของทาน
ส าหรบการแลกเปลยน เราตองการสงตอไปนเทานน :
• ถาทานใชสไลดเหลาน (เปนตวอยาง, ในหองเรยน) อยาลมกลาวถงทมาของสไลด (หลงจากน
เราตองการใหทกคนอดหนนและใชหนงสอของผแตงดานขาง)
• ถาคณโพสตสไลดใด ๆ ในเวป, อยาลมกลาวถงวา คณแกไขจากสไลดตนฉบบของเรา และ ระบ
ถงลขสทธของเราดวย
ขอขอบคณและขอใหสนก!
ณฐนนท ลลาตระกล ผเรยบเรยง สงวนลขสทธ 2013 เนอหาทงหมดเปนลขสทธของคณะวทยาการสารสนเทศ
Application Layer 2-2
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-3
Chapter 2: application layer
เปาหมาย: แนวคด, การ implement โปรโตคอล
แอพพลเคชนดานเครอขาย model การบรการชน
transport ชดแนวคด (หรอ paradigm)
client-server ชดแนวคด peer-to-peer
เรยนรเกยวกบโพรโตคอลโดยการศกษาแอพพลเคชนโพรโตคอลทเปนทนยม HTTP FTP SMTP / POP3 / IMAP DNS
สรางแอพพลเคชนดานระบบเครอขาย socket API
Application Layer 2-4
ตวอยางของแอพพลเคชนระบบเครอขาย
e-mail web สงขอความ (text messaging) login ทางไกล แชรไฟลผาน P2P multi-user network games สง video ทเกบไวอยางตอเนอง
(streaming stored video) เชนYouTube, Hulu, Netflix
voice over IP (e.g., Skype) สง video การประชมแบบ real-time social networking บรการคนหาขอมล … …
Application Layer 2-5
การสรางแอพพลเคชนระบบเครอขาย
เขยนโปรแกรมท: ท างานอยบนเครองปลายทางทตางๆกน (ไมใช
ทแกนของเครอขาย) สอสารกนผานเครอขาย เชน ซอฟแวรของ web server จะสอสารกบ
ตว web browser
ไมจ าเปนตองเขยนซอฟทแวรทท างานทแกนของระบบเครอขาย
อปกรณทแกนระบบเครอขายไมตองท างานแอพพลเคชนของผใช
แอพพลเคชนจะอยบนเครองปลายทางเทานนท าใหการพฒนาแอพพลเคชนเปนไปอยางรวดเรว
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
Application Layer 2-6
สถาปตยกรรมของแอพพลเคชน
โครงสรางทเปนไปไดของแอพพลเคชน: client-server (ลกขาย – แมขาย) peer-to-peer (P2P, เพอน ถง เพอน)
Application Layer 2-7
โครงสรางของระบบ Client-Server
server: เปนเครองทท างานตลอดเวลา มไอพแอดเดรสคอนขางถาวร อยใน Data Center เพอรองรบการบรการ
ผใชทเพมมากขน
clients: มการตดตอสอสารกบผใหบรการ มการเชอมตอกบผใหบรการเปนระยะ ๆ ไม
สม าเสมอ อาจจะมไอพแอดเดรสทไมแนนอน ไมไดตดตอกบผรบคนอนโดยตรง
client/server
Application Layer 2-8
โครงสรางของระบบ P2P
ไมมเครองแมขายทใหบรการตลอดเวลา สามารถเชอมตอกบลกขายกนเองได peer A (ซงสงค าขอไปยง peer B) อาจเปน
ผใหบรการกบ peer C เองกได Self-scalability: มความสามารถ
รองรบจ านวนผใชทเพมมากขนไดโดยตวโครงสรางเอง เพราะ peer ตวใหมทเขามาในระบบ จะท าใหความสามารถในการบรการเพมมากขน เชนเดยวกบความตองการในการใชบรการทเพมขน
การเชอมตอระหวาง peers ไมสม าเสมอและไอพแอดเดรสจะเปลยนไปเรอยๆ ท าใหการจดการซ าซอนยงยาก
peer-peer
Application Layer 2-9
Process ทตดตอสอสารกน
process: โปรแกรมทก าลงท างานอยบนเครอง
ภายใตเครองเดยวกน process สอง process สามารถสอสารกนไดดวยชองทางสอสารระหวาง process หรอ inter-process communication (ระบบปฎบตการจดเตรยมให)
processes ทอยคนละเครองสามารถตดตอกนไดโดยการแลกเปลยนขอความกนผานเครอขาย
client process: ตวโปรแกรมลกขายทเรมตดตอสอสารขอรบบรการ
server process: โปรแกรมทเครองแมขายรอรบการขอบรการจากลกขาย
ถาเปนแอพพลเคชนในสถาปตยกรรมแบบ P2P กจะมทง client processes และ server processes
clients, servers
Application Layer 2-10
Sockets
process จะสง/รบขอมลผานทาง socket socket เปรยบเสมอนประต
process ตวสงจะสงขอความผานทางประต process ตวสงตองพงพาระบบการขนสงไปยงอกดานของประต โดยการสงขอความผานทาง
socket ไปยง process ทก าลงรอรบอย
Internet
ควบคมโดย นกพฒนา app
transport
application
physical
link
network
process
transport
application
physical
link
network
process socket
ควบคมโดย OS
Application Layer 2-11
การก าหนดทอยใหกบ processes process จะรบขอความไดจะตองมเลขระบ
process แตละเครองจะมเลขไอพแอดเดรส (แบบ 32
บต) ไมซ าใคร (ใชระบเครองได แต ยงระบ process ไมได)
Q: จ านวนไอพแอดเดรสทงหมดเพยงพอตอ process ในแตละเครองไหม ?
เลขระบ process ใชทงไอพแอดเดรสและ port numbers ทเกยวของกบ process นน ๆ บนเครอง
ตวอยาง port numbers: HTTP server: 80 mail server: 25
สงขอความ HTTP ไปยง gaia.cs.umass.edu web server ท: IP address: 128.119.245.12 port number: 80
รายละเอยดจะตามมา…
A: ไม, ม process จ านวนมากท างานอยบนเครองเดยวกน
Application Layer 2-12
protocol ในชน App จะนยาม
ชนดของขอความทแลกเปลยนกน เชน ขอความทสงไปรองขอ, ขอความท
ตอบรบ รปแบบของขอความ:
จะบอกถงสงทอยในขอความ และบอกวาสงนนอยสวนไหนของขอความทสงมา
ความหมายของขอความ ความหมายของขอมลในขอความทสง
มาในแตละสวน (field) กฏทก าหนดวาเมอไรจะสงขอความหรอ
เมอไรจะตอบรบขอความ
โพรโตคอลส าหรบสาธารณะ (โพรโตคอล เปด):
ถกนยามใน RFCs ท าใหเครอง (จากตางผผลต) ท างาน
รวมกนได เชน HTTP, SMTP โพรโตคอลทมลขสทธ: เชน Skype
Application Layer 2-13
แอพพลเคชนตองการบรการอะไรจากชน Transport
ความสมบรณของขอมล บางแอพพลเคชนตองการรบสงขอมลท
นาเชอถอ 100% เชน การสงไฟล การตดตอกบเวบ
มบางแอพพลเคชนทสามารถรบสงขอมลผดพลาดไดบาง เชน สงขอความเสยง
เวลาในการสง บางแอพพลเคชนตองการความเรวในการ
รบสงขอมล เชน คยโทรศพทผานอนเตอรเนท เกมทผใชมปฏสมพนธกบเครองแมขายหรอผเลนเกมรายอนผานเครอขาย
throughput บางแอพพลเคชนตองการ throughput ขน
ต าเชน สง multi-media ทงภาพและเสยง ในบางแอพพลเคชนกท างานในแบบ
ตองการ throughput เทาไรกได เรยกวาelastic apps
ความปลอดภย
เขารหส, ความสมบรณ ความเปนปกตของขอมล, …
Application Layer 2-14
บรการในชน Transport ท apps ทวไปตองการ
application
การรบสง file
เอกสาร Web
real-time audio/video
audio/video ทเกบไวกอนได interactive games
text messaging
data loss
no loss
no loss
no loss
ทนตอ loss
ทนตอ loss
ทนตอ loss
no loss
throughput
ขนต ำ
elastic
elastic
elastic
audio: 5kbps-1Mbps
video:10kbps-5Mbps
same as above
2-3 kbps ขนไป elastic
sensitive ตอควำมลำชำ
no
no
no
yes, 100’s msec
yes, 2-3 secs
yes, 100’s msec
yes and no
Application Layer 2-15
บรการของ protocol ชน transport ใน Internet
บรการของ TCP: การสงขอมลทนาเชอได ระหวาง
process ผสงและ process ผรบ การควบคมการไหลของขอมล: ผสงไม
สงขอความไปทวนผรบ ควบคมความคบคง: มการควบคมการ
สงขอมลในขณะทระบบเครอขายคบคง สงไมไดให: ไมรบประกนเรองเวลา
แบนดวดทขนต า ความปลอดภยของขอมล
connection-oriented: ตอง setup การเชอมตอกอนการใหบรการ
บรการของ UDP: ขอมลทถกสงเปนการสงแบบไม
นาเชอถอระหวาง process ผสงและ process ผรบ
สงทไมไดใหบรการ: ความนาเชอถอ,การควบคมการไหลของขอมล, การควบคมความคบคง, เวลาทใชในการสง, การรบประกนปรมาณขอมลmทสงได, ความปลอดภย, หรอ การ setup การเเชอมตอ
Q: ท าไมถงยงตองมบรการ UDP อยอก?
Application Layer 2-16
ตวอยาง app ทใชใน Internet และ protocol ในชน transport ของมน
application
remote terminal access
Web
file transfer
streaming multimedia
Internet telephony
application
layer protocol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (e.g., YouTube),
RTP [RFC 1889]
SIP, RTP, proprietary
(e.g., Skype)
underlying
transport protocol
TCP
TCP
TCP
TCP
TCP or UDP
TCP or UDP
ความปลอดภย TCP
TCP & UDP ไมมการเขารหส ขอมลพาสเวรดทถกสงผาน
เครอขายสามารถถกดไดเลย SSL ใหบรการการเชอมตอ TCP
แบบเขารหส มความสมบรณของขอมล มการระบตวตนทปลายทาง
SSL อยในชน App แอพพลเคชนใช SSL libraries
ซงตดตอกบ TCP SSL socket API ขอมลพาสเวรดทสงออกไปจะ
ถกเขารหสไว ดตอบทท 7
Application Layer 2-17
Application Layer 2-18
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-19
Web and HTTP
กอนอนเลย, มาทบทวนกน… web page ประกอบไปดวย file HTML หลก ซงรวมหลายๆออบเจค ออบเจคอาจจะเปน HTML file, JPEG image, Java applet, audio file,… ทอยของแตละออบเจคถกก าหนดโดย URL เชน
www.someschool.edu/someDept/pic.gif
host name path name
Application Layer 2-20
ภาพรวมของ HTTP
HTTP: hypertext transfer protocol เปนโพรโตคอลในชนแอพพลเคชนทใชกบ
เวบ client/server model
client: จะมบราวเซอร ท าหนาทรองขอและรบขอมล (โดยใช HTTP Protocol) จากเซฟเวอรมาแสดงผล
server: รอรบการรองขอแลวสงขอมล (โดยใช HTTP Protocol) ทถกรองขอกลบไป
PC running
Firefox browser
server
running
Apache Web
server
iphone running
Safari browser
Application Layer 2-21
ภาพรวมของ HTTP (ตอ)
การใช TCP: client (เครองลกขาย) เรมการตดตอ (สราง
socket) ไปยงพอรท 80 ของเซฟเวอร server (เครองแมขาย) รบการเชอมตอ
TCP จากเครองลกขาย ขอความ HTTP (application-layer
protocol messages) จะถกแลกเปลยนกนระหวางตวบราวเซอรกบตวเวบเซฟเวอร
ปดการเชอมตอ TCP
HTTP ไมมการเกบสถานะของผใช
เซฟเวอรไมมการเกบขอมลการขอใชบรการของลกขายทผานมา
โปรโตคอลแบบทตองเกบสถานะจะซบซอน สถานะเกาๆของผใชจะตองถกเกบไว ถาเซฟเวอรหรอเครองผใชบรการเกดดบไป
กระทนหน, พอเปดเครองขนใหม สถานะของเครองผใชกบเซฟเวอรกจะมสถานะไมเหมอนกนและ การท าใหเหมอนกนใหมเปนเรองยาก
เกรดความร
Application Layer 2-22
การเชอมตอของ HTTP
non-persistent HTTP (การเชอมตอหลายครง)
รบ/สงหนง object ตอหนงการเชอมตอ พบรบ/สงเสรจ การเชอมตอจะถก
ปด
ดาวโหลดหลายๆออบเจคกตองใชการเชอมตอหลายครง
persistent HTTP (การเชอมแบบคงอย)
สามารถดาวโหลดหลายๆออบเจคดวยการเชอมตอ 1 ครง
Application Layer 2-23
Non-persistent HTTP สมมตวาใส URL น ซงอางองไปยงรปภาพ 10 รป :
1a. HTTP client เรมการเชอมตอไปยง HTTP server (process) www.someSchool.edu ทพอรท 80
2. HTTP client สงการรองขอ HTTP (ระบ URL ขางตน) ไปทางการเชอมตอ TCP เพอทจะบอกวาตองการออบเจค someDepartment/home.index
1b. HTTP server ของเวบwww.someSchool.edu ทก าลงรอการเชอมตอทพอรท 80 “รบ” การเชอมตอ แลวแจงกลบไปยงเครองทเชอมตอมา
3. HTTP server รบการรองขอ สรางขอความตอบกลว แลวจงสงขอความนนไปพรอมกบออบเจคทถกรองขอมา
เวลา
www.someSchool.edu/someDepartment/home.index
Application Layer 2-24
Non-persistent HTTP (cont.)
5. HTTP client รบขอความตอบกลบทม file html แลวกน ามาแสดงผลหนาเวบ (สกดขอมลทอยของภาพอก 10 ภาพ)
6. ยอนท าตงแตขนตอนท 1ใหมส าหรบรป 1จนถง10
4. HTTP server ปดการเชอมตอ
เวลา
Application Layer 2-25
Non-persistent HTTP: เวลาตอบกลบ
RTT (Round Trip Time): เวลาใชในการเดนทางของแพคเกจเลก ๆ จากลกขายไปยงเซฟเวอรแลวกลบมา
ระยะเวลาตอบกลบ ของ HTTP: 1 RTT เพอเปดการเชอมตอ TCP 1 RTT ส าหรบ request และ ส าหรบ
response ขนาด 2-3 bytes เวลาในการถายโอนขอมล ระยะเวลาตอบกลบ ของ non-persistent
HTTP = 2RTT+ เวลาในการโอนถายขอมล
ระยะเวลาในถายโอน ไฟล
เปดการเชอมตอ TCP
RTT
สงค าขอไฟล
RTT
รบไฟลเรยบรอย
time time
Application Layer 2-26
Persistent HTTP
ประเดนของ non-persistent HTTP: ตองใช 2 RTTs ตอ1 ออบเจค เสยเวลาทตว OS เพอสรางการเชอมตอทก
ครง สวนใหญบราวเซอรจะเปดหลายๆการ
เชอมตอเพอดงหลาย ๆ object ในหนาเวบในเวลาเดยวกน
persistent HTTP: เซฟเวอรจะเปดการเชอมตอคางไว
หลงจากสง response การสงขอมลตอไประหวาง client /
server กจะใชการเชอมตอทเปดไวน client สง request ไดทนทเมออยากจะ
ถง object ในหนาเวบ ใชเพยง 1 RTT ส าหรบการดงขอมล
object ทงหมด
Application Layer 2-27
HTTP request message
ขอความ HTTP มสองชนด: request (ขอความขอบรการ), response (ขอความตอบกลบ) HTTP request message:
ASCII (ขอความทมนษยอานได)
บรรทดการ request (ค าสง GET, POST, HEAD)
สวนหวของขอความ
carriage return ทจดเรมบรรทด ระบสวนสนสดของบรรทด header (สวนหวของขอความ)
GET /index.html HTTP/1.1\r\n
Host: www-net.cs.umass.edu\r\n
User-Agent: Firefox/3.6.10\r\n
Accept: text/html,application/xhtml+xml\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7\r\n
Keep-Alive: 115\r\n
Connection: keep-alive\r\n
\r\n
carriage return character
line-feed character
Application Layer 2-28
HTTP request message: format ทวไป
บรรทด request
บรรทดสวนหว header
body
method sp sp cr lf version URL
cr lf value header field name
cr lf value header field name
~ ~ ~ ~
cr lf
entity body ~ ~ ~ ~
Application Layer 2-29
การสงขอมลไปยงเซฟเวอร
วธ POST: ตวหนาเวบเพจสวนมากจะมชองใหใสขอมล ขอมล input ทปอนจะถกใสไปในสวนของบอด
วธ URL: ใชวธ GET ขอมล input จะถกใสลงไปใน field URL ทอยใน header ของ
request www.somesite.com/animalsearch?monkeys&banana
Application Layer 2-30
Method types
HTTP/1.0: GET POST HEAD
บอกเซฟเวอรวาไมตองสงขอมลทรองขอไปมาท client แลว
HTTP/1.1: GET, POST, HEAD PUT
ใชส าหรบอพโหลดไฟลไปใน body (ไปยง folder ของ server ทระบไวใน field URL ท header ของขอความ)
DELETE ใชลบไฟลทระบใน field URL
Application Layer 2-31
ขอมล HTTP ทถกตอบกลบมา
บรรทดระบ status
(protocol
status code
status phrase)
header
lines
ขอมล, เชน file
HTML ทขอไป
HTTP/1.1 200 OK\r\n
Date: Sun, 26 Sep 2010 20:09:20 GMT\r\n
Server: Apache/2.0.52 (CentOS)\r\n
Last-Modified: Tue, 30 Oct 2007 17:00:02
GMT\r\n
ETag: "17dc6-a5c-bf716880"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 2652\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html; charset=ISO-8859-
1\r\n
\r\n
data data data data data ...
Application Layer 2-32
รหสสถานะทเกยวกบ HTTP ทเซฟเวอรอาจตอบกลบมา
200 OK การรองขอส าเรจ, สงทรองขออยดานทายของขอความน
301 Moved Permanently สงทรองขอถกยายไปแลว, ทอยใหมอยดานทายของขอความน (Location:)
400 Bad Request เซฟเวอรไมเขาใจขอความรองขอ
404 Not Found ไมพบไฟลทรองขอบนเซฟเวอร
505 HTTP Version Not Supported รองขอ version ของ HTTP ท server ไมได support
รหสสถานะจะปรากฎในบรรทดแรกขอขอความจากเซฟเวอรทตอบกลบ
ตวอยางรหสบางรหส
Application Layer 2-33
ทดลองเชอมตอ HTTP ดวยตวเอง
1. telnet ไปยง Web server:
เปดการเชอมตอ TCP ทพอรท 80 ไปยง cis.poly.edu. อะไรทพมพลงไปจะถกสงไปยงพอรท 80 ของเซฟเวอรท cis.poly.edu
telnet cis.poly.edu 80
2. พมพการรองขอ GET HTTP request: GET /~ross/ HTTP/1.1
Host: cis.poly.edu ดวยค าสงนกจะเปนการสงค ารองขอไปยงเซฟเวอร
3. ดขอความทเซฟเวอรตอบกลบมา
(หรอใชโปรแกรม Wireshark เพอทจะด HTTP request/response)
Application Layer 2-34
สถานะระหวางผใช-server: cookies
เวบไซตเปนจ านวนมากใช cookies สวนประกอบ 4 อยาง (ดรปหนา 2-35):
1) บรรทด set-cookie ในขอความตอบกลบของ HTTP
2) บรรทดยนยน cookie ในขอความรองขอหนาเวปถดไป
3) ไฟล cookie ทถกเกบทงบนเครองผใชทถกจดการโดย Web browser
4) ฐานขอมลทท างานในสวนหลงของ server
ตวอยาง: ซซานเลนอนเตอรเนตจากเครอง PC เขาไปยงเวบ e-commerce ครงแรก เมอการรองขอแรกไปถงยงเวบไซต ไซตกจะ
สราง สรางหมายเลข ID ทไมซ าใคร ขอมลหนงขอมลทฐานขอมลส าหรบ ID
นน ๆ
Application Layer 2-35
Cookies: การเกบ “state” (ตอ …)
client server
usual http response msg
usual http response msg
cookie file
สปดาหตอมา
usual http request msg cookie: 1678 ตรวจสอบรายละเอยด
Cookie access
ebay 8734 usual http request msg Amazon server
สราง ID
1678 ส าหรบผใช create entry
usual http response set-cookie: 1678
ebay 8734
amazon 1678
usual http request msg cookie: 1678
access
ebay 8734
amazon 1678
backend
database
ตรวจสอบรายละเอยด Cookie
Application Layer 2-36
Cookies (ตอ)
Cookies สามารถท าอะไรไดบาง: การระบตวตน รายการรถเขนสนคา การแนะน าสนคาหรอขอมล สถานะของชวงการสอสารของผใช (Web
e-mail)
cookies และความปลอดภย: cookies ท าใหเวบไซตรขอมลของ
คณเยอะทเดยว บางทอาจรวมถงอเมล ชอนามสกล
aside
เราจะเกบ“state” อยางไร: ชวงปลายของ protocol : เกบสถานะทผสงหรอ
ผรบ เมอม transaction ไปหลาย ๆ ครงแลว cookies: สง cookie (สถานะ) ไปพรอม ๆ กบ
ขอความ http
Application Layer 2-37
Web caches (proxy server)
ผใชก าหนดในบราวเซอรใหเขาเวบผานแคช
บราวเซอรสงการรองขอ HTTP ทงหมดไปยงแคช ถาขอมลอยในแคช: แคชสง
ขอมลกลบ ถาขอมลไมอยในแคช: ตวแคช
จะไปโหลดขอมลจาก server จรงมาเกบไว กอนทสงตอใหผใช
วตถประสงค : ตอบสนองการรองขอจาก client โดยทไมตองไปตดตอกบเซฟเวอรจรง
client
proxy
server
client origin
server
origin
server
Application Layer 2-38
เรองเพมเตมเกยวกบ Web caching
แคชท าหนาทเปนทง client และเซฟเวอร เปนเซฟเวอรเมอท าหนาทรบการรอง
ขอจาก client เปน client เมอท าหนาทตดตอ
กบเซฟเวอรจรง
โดยทวไปแลวแคชถกตดตงโดยผใหบรการ (มหาวทยาลย, บรษท, ISP ทใหบรการตามบาน)
ท าไมตองมการเกบแคช? ลดเวลาการตอบสนองจากการรองขอ
ของ client ลดปรมาณขอมลในลงค (ทจะไป
เครอขายดานนอก) ขององคกร แคชชวยให ผสรางขอมลทไมคอยมเงน
สามารถมบรการขอมลอยางมประสทธภาพมาก (เหมอนทการแชรไฟลแบบ P2P ท า)
Application Layer 2-39
ตวอยางการแคช:
servers
หลก public
Internet
institutional
network 1 Gbps LAN
1.54 Mbps
access link
สมมตฐาน: ขนาดของ object โดยเฉลย: 100K bits คาเฉลยการรองขอจากบราวเซอรไปยงเซฟเวอรหลก: 15
request/วนาท อตราเฉลยของขอมลมายงบราวเซอร : 1.50 Mbps RTT จากเราเตอรไปยงเซฟเวอรหลก: 2 sec bandwidth ของ access link : 1.54 Mbps
ผลลพธ: อตราการใช LAN (LAN utilization): 15% อตราการใช access link = 99% total delay = Internet delay + access delay +
LAN delay = 2 sec + minutes + usecs
ปญหา!
Application Layer 2-40
สมมตฐาน: ขนาดของ object โดยเฉลย: 100K bits คาเฉลยการรองขอจากบราวเซอรไปยงเซฟเวอรหลก: 15
request/วนาท อตราเฉลยของขอมลมายงบราวเซอร : 1.50 Mbps RTT จากเราเตอรไปยงเซฟเวอรหลก: 2 sec bandwidth ของ access link : 1.54 Mbps
ผลลพธ: อตราการใช LAN (LAN utilization): 15% อตราการใช access link = 99% total delay = Internet delay + access delay + LAN
delay = 2 sec + minutes + usecs
1.54 Mbps
access link
154 Mbps 154 Mbps
msecs
ตนทน: ตองเพมความเรวของ access link (ไมถก!)
9.9%
public
Internet
institutional
network 1 Gbps LAN
ตวอยางการแคช: access link ทใหญขน
servers
หลก
institutional
network 1 Gbps LAN
Application Layer 2-41
1.54 Mbps
access link
web cache ใ ในเครอขายทองถน
สมมตฐาน: ขนาดของ object โดยเฉลย: 100K bits คาเฉลยการรองขอจากบราวเซอรไปยงเซฟเวอรหลก: 15
request/วนาท อตราเฉลยของขอมลมายงบราวเซอร : 1.50 Mbps RTT จากเราเตอรไปยงเซฟเวอรหลก: 2 sec bandwidth ของ access link : 1.54 Mbps
ผลลพธ: อตราการใช LAN (LAN utilization): 15% อตราการใช access link = total delay =
?
How to compute link utilization, delay?
ตนทน: web cache (ถก!)
public
Internet
ตวอยางการแคช: ตดตงแคชทองถน
servers
หลก
?
Application Layer 2-42
ค านวณ utilization และ delay access link เมอมการตดตง cache:
สมมตวา hit rate ของ cache คอ 0.4 40% ของ requests จะมอยใน cache,
60% ของ requests อยท server หลก
1.54 Mbps
access link
utilization ของ access link: 60% ของ requests ใช access link
อตราขอมลทจะมาท browsers ผาน access link = 0.6*1.50 Mbps = .9 Mbps utilization = 0.9/1.54 = .58
total delay = 0.6 * (delay from origin servers) +0.4 * (delay when
satisfied at cache) = 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs delay นอยลงเมอใช 154 Mbps link กบ แคช (ถกกวาดวย!)
public
Internet
institutional
network 1 Gbps LAN
ตวอยางการแคช: ตดตงแคชทองถน
servers
หลก
web cache ใ ในเครอขายทองถน
Application Layer 2-43
HTTP request msg If-modified-since: <date>
HTTP response HTTP/1.0
304 Not Modified
object
ไมถกเปลยน
กอน
<date>
HTTP request msg If-modified-since: <date>
HTTP response HTTP/1.0 200 OK
<data>
object ถกเปลยน
หลง <date>
client server
จดประสงค: server ไมสงออปเจคกลบมาหากขอมลไมเปลยนแปลง ไมมความลาชาจากการโอนถายขอมล ลดอตราการใชงานของ link ลง
cache: ระบวนทเกบแคชไวใน HTTP request If-modified-since: <date>
server: จะไมสงออบเจคกลบมาหาก แคชท client มขอมลเหมอนกบทาง server: HTTP/1.0 304 Not Modified
การ GET แบบมเงอนไข
Application Layer 2-44
Chapter 2: outline
2.1 หลกการของแอพพลเคชนดานระบบเครอขาย
2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-45
FTP: the file transfer protocol
โอนยาย file FTP
server
สวนตอประสานกบ
ผใช FTP
FTP
client
local file
system
remote file
system
user
at host
คดลอกไฟล จาก/ไปท เครองทอยไกล รปแบบ ไคลเอนต/เซรฟเวอร
ไคลเอนต : ดานทเรมตนสงขอมล (อาจจะสงไป /รบจากเครองทอยไกล) เซรฟเวอร : เครองทอยไกล
ftp: RFC 959 ftp เซรฟเวอรใช port 21
Application Layer 2-46
FTP: connection ส าหรบควบคม และส าหรบขอมล
FTP client ตดตอ FTP เซฟเวอร ทพอรท 21 ผาน TCP
ไคลเอนตจะท าการพสจนตวตนและสทธในการเขาใชงานบนเซฟเวอรผาน connection ส าหรบการควบคม
ไคลเอนตสามารถดขอมลในไดเรกทอร สงค าสง ผาน connection ส าหรบการควบคม
เมอ server ไดรบค าสงใหโอนยาย file server จะเปดคอนเนคชน TCP อกคอนเนคชนนง ส าหรบการถายโอนไฟล
หลงจากถายโอนขอมล 1 ไฟลสนสด server จะท าการปดคอนเนคชนทพอรต 20 ทนท
FTP client
FTP server
TCP control connection, server port 21
TCP data connection, server port 20
การท างานทมการแยกคอนเนคชนเปน 2 คอนเนคชนคอ คอนเนคชนควบคมและ คอนเนคชนขอมลนน เปนการท างานทเรยกวา : “out of band”
FTP เซฟเวอรจะท าการเกบ”สถานะ”การใชงานของไคลเอนต ท าใหรวาผใชก าลงด directory ใดอย และ ยงชวยการระบตวตนในตอนแรกเรม
Application Layer 2-47
FTP commands, responses
ตวอยางค าสง: สงค าสงเปนอกขระ ASCII ผาน
connection ส าหรบการควบคม
USER username PASS password
LIST return list of file in current directory
RETR filename retrieves (gets) file
STOR filename stores (puts) file onto remote host
ตวอยางรหสท server ตอบ รหสสถานะและค าอธบาย (เหมอน
ของ HTTP) 331 Username OK, password
required 125 data connection already
open; transfer starting 425 Can’t open data
connection 452 Error writing file
Application Layer 2-48
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-49
Electronic mail
3 สวนประกอบหลก: user agents mail servers simple mail transfer protocol: SMTP
User Agent หรอทเรยกวา “mail reader” สราง, แกไข, อานขอความ mail เชน Outlook, Thunderbird, iPhone
mail client ขอความทจะออก และ ทจะเขาม ถกเกบใน
server
Mailbox ของผใช
queue ส าหรบ ขอความออก
server
server
server
SMTP
SMTP
SMTP
user
agent
user
agent
user
agent
user
agent
user
agent
user
agent
Application Layer 2-50
Electronic mail: mail servers
mail servers: mailbox เปนสวนทจดเกบขอความทม
มาถงผใช สวนทจดเกบขอความของอเมลลงในคว
กอนทจะถกสงออกไป การสงขอความในอเมลระหวางเครองเมล
เซรฟเวอรดวย โปรโตคอล SMTP เครองผใช : สงอเมลไปยงเครองเมล
เซรฟเวอร “เครองเซรฟเวอร”: รบอเมลจาก
เครองเมลเซรฟเวอร
server
server
server
SMTP
SMTP
SMTP
user
agent
user
agent
user
agent
user
agent
user
agent
user
agent
Application Layer 2-51
Electronic Mail: SMTP [RFC 2821]
ใชโปรโตคอล TCP เพอใหแนใจวาขอความถกสงอยางถกตองจาก client ไปยงเซฟเวอรผานพอรท 25
การถายโอนโดยตรง : เปนการถายโอนจากเครองเซรฟเวอรผสงไปยงเครองเซรฟเวอรผรบ
การถายโอนสามขนตอน ขน handshaking (server ทกทายกน, ตกลงคาของการสง) ขนถายโอนขอความ ขนการปด
ค าสงและการตอบกลบ (เหมอนกบ HTTP, FTP) ค าสง: อกขระ ASCII ค าตอบ: รหสสถานะและค าอธบาย
ขอความตองอยในรปแบบ 7-bit ASCI
Application Layer 2-52
user
agent
สถานการณ: Alice สงจดหมายไปหา Bob
1) Alice ใช UA เพอเขยนจดหมาย “สงถง” [email protected] 2) Alice’s UA สงจดหมายไปท mail server
ของเธอ ; จดหมายถกวางไวทmessage queue
3) SMTP ฝง client ทอยใน mail server ของ Alice เปดการเชอมตอ TCP กบ mail server ของ Bob
4) SMTP client สงจดหมายของ Alice บนการเชอมตอ TCP
5) mail server ของ Bob วางจดหมายไวใน mailbox ของ Bob
6) Bob ใช user agent อานจดหมาย
server
server
1
2 3 4
5
6
mail server ของ Alice mail server ของ Bob
user
agent
Application Layer 2-53
ตวอยางการตดตอกนของ SMTP
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <[email protected]>
S: 250 [email protected]... Sender ok
C: RCPT TO: <[email protected]>
S: 250 [email protected] ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
Application Layer 2-54
telnet servername 25 see 220 reply from server ปอนค าสง HELO, MAIL FROM, RCPT TO, DATA, QUIT จากขอความดงกลาวขางตนจะชวยใหคณสงอเมลโดยไมตองใชโปรแกรมอเมล
ลองตดตอกบ mail server โดยใช SMTP
ดวยตวเอง:
Application Layer 2-55
SMTP: final words
SMTP ใช connection ทคงอย (persistent connection)
SMTP ก าหนดให สวนหวอเมล กบ ตว body ถกเขยนดวยอกขระ ASCII 7-bit
SMTP serverจะใชCRLF.CRLF เพอก าหนดจดสนสดขอความ
เทยบกบ HTTP:
HTTP: ดง web page มา
SMTP: ผลกอเมลไป
ทงคตดตอกนโดยสงค าสง/ค าตอบเปนอกขระ ASCII และใชรหสสถานะ
HTTP: แตละ object อยในขอความตอบกลบเฉพาะของแตละ object เอง
SMTP: object ทงหมดถกรวมอยในเมล
Application Layer 2-56
Mail message format
SMTP: protocol ส าหรบการแลกเปลยนอเมลล
RFC 822: มาตรฐานส าหรบรปแบบขอความ: บรรทดสวนหว เชน,
To: From: Subject:
ตางจากค าสง MAIL FROM, RCPT TO ของ SMTP!
Body: สวน “ขอความอเมล” เปนอกขระ ASCII เทานน
header
body
บรรทด วาง
Application Layer 2-57
SMTP: จดสง/จดเกบไปยงเซรฟเวอรของผรบ protocol ส าหรบการอานเมล: ดงขอมลจากเซรฟเวอร
POP: Post Office Protocol [RFC1939]: authorization (การระบตวตน), download IMAP: Internet Mail Access Protocol [RFC 1730]: มคณสมบตมากขน เขน การ
จดการการเกบขอความบนเซรฟเวอร HTTP: gmail, Hotmail, Yahoo! Mail, ฯลฯ
mail server
ของผสง
SMTP SMTP mail access
protocol
mail server
ของผรบ
(เชน POP,
IMAP)
user
agent
user
agent
Mail access protocols (โปรโตคอลส าหรบการอานเมล)
Application Layer 2-58
POP3 protocol
ขนตอน authorization client commands:
user: ระบ username pass: รหสผาน
server responses +OK -ERR
ขนตอนการตดตอท างาน (transaction phase), client:
list: แสดงรายการหมายเลขของขอความ retr: ดงขอความโดยใชหมายเลข dele: ลบ quit
C: list S: 1 498
S: 2 912
S: .
C: retr 1
S: <message 1 contents>
S: .
C: dele 1
C: retr 2
S: <message 1 contents>
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off
S: +OK POP3 server ready
C: user bob
S: +OK
C: pass hungry
S: +OK user successfully logged on
Application Layer 2-59
POP3 (เพมเตม) และ IMAP
เรองเพมเตมเกยวกบ POP3 ตวอยางการใชงาน POP3 ใน slide ท
แลวอยใน mode“download และ delete” Bob ไมสามารถอาน e-mail ซ าได
หากมการเปลยน client POP3 “download-and-keep”: copy
ขอความไวใน client ไดหลายเครอง POP3 ไมมการเกบ state ของ sessions
(ชวงเวลาการตดตอ)
IMAP เกบขอความ ทงหมดไวทเดยว: ท server ยนยอมให user สามารถจดการขอความ
ใน folder ได เกบสถานะของผใชแมจะตาง sessions
กน: ตงชอ folder และจดกลมขอความ
ตาม Folder ได (โดยจะจดค id ของขอความกบชอ folder)
Application Layer 2-60
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-61
DNS: domain name system
คน: สามารถระบตวตนไดหลายวธ: เลขประชาชน, ชอ, เลข passport
Internet hosts, routers: IP address (32 bit) – ใชส าหรบ
ระบทอย “ชอ”, เชน, www.yahoo.com ซง
ชอเหลานงายทมนษยจะจดจ า ค าถาม: การจบคของ name กบ IP address
มวธการอยางไร แลวในทางกลบกนละ?
Domain Name System (ระบบชอโดเมน): ฐานขอมลแบบกระจาย ท างานโดยใชโครงสราง
แบบล าดบชนประกอบดวย name server จ านวนมาก
protocol ในขน application: hosts สอสารกบ name servers เพอ resolve ชอโดเมน (การแปลงขอมลระหวาง address และ name) ขอสงเกต: เปนการท างานสวนทเปนแกนของ
Internet ทถก implement ทชน application ดวย
ดงนน ความซบซอนอยทขอบของเครอขาย (network’ s “edge”)
Application Layer 2-62
DNS: บรการ, โครงสราง
เหตผลทไมใช DNS แบบรวมศนย จดบอดจดเดยว ปรมาณของการโหลดขอมลเยอะเกนไป ฐานขอมลสวนกลางอยไกลไป ดแลรกษาไดยาก
บรการของ DNS แปล hostname ใหเปน IP address ชวยให host มชอแฝงหลายๆชอได
ชอจรงทเปนทางการ (canonical), ชอนามแฝง (alias)
mail server มชอแฝงไดหลายชอ ชวยกระจายการโหลด Load (request จาก client) จะถก
กระจายไปยง Web Server ทเกบขอมลเหมอน ๆ กนได โดยอาศย DNS: server หลายเครอง (ทอย IP ตางกน) ทใหบรการขอมลแบบเดยวกน จะถกก าหนดไวกบชอโดเมนเดยวได
ค าตอบ: ไม scale! Input มากขน ตอบสนองไดไมด
Application Layer 2-63
Root DNS Servers
com DNS servers org DNS servers edu DNS servers
poly.edu
DNS servers
umass.edu
DNS servers yahoo.com
DNS servers amazon.com
DNS servers
pbs.org
DNS servers
DNS: ฐานขอมลทเปนล าดบชนและกระจาย
เมอลกขายตองการรถง IP ของ www.amazon.com การแปลชอโดเมนมขนตอนตอไปน: ลกขายสอบถามไปยง root server เพอทจะไปคนหา .com DNS server ลกขายสอบถามไปยง .com DNS server เพอทจะไปคนหา amazon.com DNS server ลกขายสอบถามไปยง amazon.com DNS server เพอขอ IP ของ www.amazon.com
… …
Application Layer 2-64
DNS: root name servers
name server ทองถนตดตอ root name server เมอมนไมสามารถแปลชอโดเมนได root name server:
ถาไมสามารถแปลชอโดเมนได root กจะไปตดตอกบ authoritative name server เมอไดรบขอมลคของชอโดเมนและทอย IP แลว root สงขอมลคดงกลาวกลบไปท name server ทองถน
13 root name “servers” ทวโลก
a. Verisign, Los Angeles CA
(5 other sites)
b. USC-ISI Marina del Rey, CA
l. ICANN Los Angeles, CA
(41 other sites)
e. NASA Mt View, CA
f. Internet Software C.
Palo Alto, CA (and 48 other
sites)
i. Netnod, Stockholm (37 other sites)
k. RIPE London (17 other sites)
m. WIDE Tokyo
(5 other sites)
c. Cogent, Herndon, VA (5 other sites)
d. U Maryland College Park, MD
h. ARL Aberdeen, MD
j. Verisign, Dulles VA (69 other sites )
g. US DoD Columbus,
OH (5 other sites)
Application Layer 2-65
TLD, authoritative servers
top-level domain (TLD) servers (domain name server ระดบบน): ดแลโดเมน com, org, net, edu, aero, jobs, museums, และรวมถง top-level
country domains, e.g.: uk, fr, ca, jp ทงหมด บรษท Network Solutions ดแล TLD servers ส าหรบ .com บรษท Educause ดแล TLD servers ส าหรบ .edu
authoritative DNS servers: เปน DNS server(s) ทมองคกรเปนเจาของ, ใหบรการแปลง authoritative hostname
เปนไอพของเครองขององคกร ถกดแลโดยองคกรเองหรอผใหบรการ name server โดยเฉพาะ
Application Layer 2-66
DNS name server ทองถน
ไมไดอยในโครงสรางล าดบขนของ DNS ซะทเดยว แตละ ISP (ISP ตามบานเรอน, องคกร, มหาวทยาลย) ตางกม name
sever -> เรยกกนวา “default name server” เมอเครองตนทางสรางค าขอบรการ DNS, ค าขอจะถกสงตอไปท DNS
server ทองถน จ าการจบคลาสดซงจะแปลง name เปน address (แตขอมลการ
จบคกอาจหมดอายได) ท าหนาทเหมอน proxy, สงตอค าขอเขาไปในระบบ domain
name ทเปนล าดบชน
Application Layer 2-67
requesting host cis.poly.edu
gaia.cs.umass.edu
root DNS server
DNS server ทองถน dns.poly.edu
1
2 3
4
5
6
authoritative DNS server
dns.cs.umass.edu
7 8
TLD DNS server
ตวอยางการแปลชอโดเมน
เครอง cis.poly.edu ตองการหมายเลขไอพแอดเดรสของเครอง gaia.cs.umass.edu
iterated query (สงแบบซ า): เซฟเวอรทถกตดตอตอบชอเซฟเวอร
ทตองไปหาตอกลบไป “ฉนไมรจกชอนลองไปถามเซฟเวอร
นซ”
Application Layer 2-68
4 5
6
3
recursive query (สงแบบเวยนเกด): ผลกภาระการหาชอทอยไปยง name
server ทถกตดตออย
เซฟเวอรล าดบบนจะท างานหนก
requesting host cis.poly.edu
gaia.cs.umass.edu
root DNS server
1
2 7
authoritative DNS server
dns.cs.umass.edu
8
TLD DNS server
ตวอยางการแปลชอโดเมน
DNS server ทองถน dns.poly.edu
Application Layer 2-69
DNS: การเกบและการอพเดทคชอโดแมนกบทอย IP
เมอ name server ไดรบขอมลการจบคกจะเกบใสแคชเอาไว แคชทหมดอายจะถกลบโดยอตโนมต (TTL) TLD servers โดยปกตแลวจะถกเกบใน local name servers
• ดงนน กจะไมคอยมการตดตอไปยง root name servers
หนวยขอมลการจบคทแคชเกบไวอาจจะเกาเกนไป (best effort name-to-address translation!) เพราะ เครองอาจถกเปลยนเลขไอพแตใชชอโดเมนเดมได ซง name server ทองถนจะยง
ไมรถงการเปลยนแปลงน จนกวาหนวยขอมลทแคชทเกบไวจะหมดอาย
การแจง/การ update หนวยขอมลถกเสนอใน IETF standard RFC 2136
Application Layer 2-70
DNS records
DNS: distributed db storing resource records (RR)
type=NS name is โดเมน (เชน,
foo.com)
value is ชอเครองของ authoritative name server ส าหรบโดเมนน
RR format: (name, value, type, ttl)
type=A name is ชอเครอง
value is IP address
type=CNAME name is นามแฝง (alias) ทจะใชส าหรบ ชอ
ทเปนทางการ (canonical)
www.ibm.com จรง ๆ กเปนนามแฝงของ servereast.backup2.ibm.com
value is ชอเครองทเปนทางการ
type=MX value is ชอของ mailserver ทเกยวของ name
Application Layer 2-71
DNS protocol, messages
query and reply messages, both with same message format
msg header
identification: 16 bit # for
query, reply to query uses
same #
flags:
query or reply
recursion desired
recursion available
reply is authoritative
identification flags
# questions
questions (variable # of questions)
# additional RRs # authority RRs
# answer RRs
answers (variable # of RRs)
authority (variable # of RRs)
additional info (variable # of RRs)
2 bytes 2 bytes
Application Layer 2-72
name, type fields for a query
RRs in response to query
records for authoritative servers
additional “helpful” info that may be used
identification flags
# questions
questions (variable # of questions)
# additional RRs # authority RRs
# answer RRs
answers (variable # of RRs)
authority (variable # of RRs)
additional info (variable # of RRs)
DNS protocol, messages
2 bytes 2 bytes
Application Layer 2-73
การใส records เขาไปใน DNS
ตวอยาง: บรษทเพงตงใหมชอ “Network Utopia” ลงทะเบยนชอโดเมน networkuptopia.com กบ นายทะเบยน DNS (เชน
Network Solutions) ระบชอโดเมน, ทอย IP ของ authoritative name server (ตวหลก และ ตว
ส ารอง) นายทะเบยนใส records 2 record เขาไปใน .com TLD server:
(networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A)
สราง record type A ส าหรบ www.networkuptopia.com; record type MX ส าหรบ networkutopia.com
การจโจม DNS DDoS attacks
Bombard root servers with traffic Not successful to date
Traffic Filtering
Local DNS servers cache IPs of TLD servers, allowing root server bypass
Bombard TLD servers Potentially more
dangerous
Redirect attacks
Man-in-middle Intercept queries
DNS poisoning Send bogus relies to
DNS server, which caches
Exploit DNS for DDoS
Send queries with spoofed source address: target IP
Requires amplification Application Layer 2-74
Application Layer 2-75
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-76
Pure P2P architecture
no always-on server
arbitrary end systems directly communicate
peers are intermittently connected and change IP addresses
examples: file distribution
(BitTorrent)
Streaming (KanKan)
VoIP (Skype)
Application Layer 2-77
File distribution: client-server vs P2P
Question: how much time to distribute file (size F) from one server to N peers? peer upload/download capacity is limited resource
us
uN
dN
server
network (with abundant
bandwidth)
file, size F
us: server upload capacity
ui: peer i upload capacity
di: peer i download capacity u2 d2
u1 d1
di
ui
Application Layer 2-78
File distribution time: client-server
server transmission: must sequentially send (upload) N file copies:
time to send one copy: F/us
time to send N copies: NF/us
increases linearly in N
time to distribute F
to N clients using
client-server approach Dc-s > max{NF/us,,F/dmin}
client: each client must download file copy dmin = min client download rate
min client download time: F/dmin
us
network
di
ui
F
Application Layer 2-79
File distribution time: P2P
server transmission: must upload at least one copy
time to send one copy: F/us
time to distribute F
to N clients using
P2P approach
us
network
di
ui
F
DP2P > max{F/us,,F/dmin,,NF/(us + Sui)}
client: each client must download file copy min client download time: F/dmin
clients: as aggregate must download NF bits
max upload rate (limting max download rate) is us + Sui
… but so does this, as each peer brings service capacity
increases linearly in N …
Application Layer 2-80
0
0.5
1
1.5
2
2.5
3
3.5
0 5 10 15 20 25 30 35
N
Min
imum
Dis
trib
ution T
ime P2P
Client-Server
Client-server vs. P2P: example
client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us
Application Layer 2-81
P2P file distribution: BitTorrent
tracker: tracks peers participating in torrent
torrent: group of peers exchanging chunks of a file
Alice arrives …
file divided into 256Kb chunks
peers in torrent send/receive file chunks
… obtains list
of peers from tracker … and begins exchanging
file chunks with peers in torrent
Application Layer 2-82
peer joining torrent:
has no chunks, but will accumulate them over time from other peers
registers with tracker to get list of peers, connects to subset of peers (“neighbors”)
P2P file distribution: BitTorrent
while downloading, peer uploads chunks to other peers
peer may change peers with whom it exchanges chunks
churn: peers may come and go
once peer has entire file, it may (selfishly) leave or (altruistically) remain in torrent
Application Layer 2-83
BitTorrent: requesting, sending file chunks
requesting chunks: at any given time, different
peers have different subsets of file chunks
periodically, Alice asks each peer for list of chunks that they have
Alice requests missing chunks from peers, rarest first
sending chunks: tit-for-tat Alice sends chunks to those
four peers currently sending her chunks at highest rate other peers are choked by Alice
(do not receive chunks from her)
re-evaluate top 4 every10 secs
every 30 secs: randomly select another peer, starts sending chunks “optimistically unchoke” this peer
newly chosen peer may join top 4
Application Layer 2-84
BitTorrent: tit-for-tat
(1) Alice “optimistically unchokes” Bob
(2) Alice becomes one of Bob’s top-four providers; Bob reciprocates
(3) Bob becomes one of Alice’s top-four providers
higher upload rate: find better
trading partners, get file faster !
Distributed Hash Table (DHT)
DHT: a distributed P2P database
database has (key, value) pairs; examples:
key: ss number; value: human name
key: movie title; value: IP address
Distribute the (key, value) pairs over the
(millions of peers)
a peer queries DHT with key
DHT returns values that match the key
peers can also insert (key, value) pairs
Application 2-85
Q: how to assign keys to peers?
central issue:
assigning (key, value) pairs to peers.
basic idea:
convert each key to an integer
Assign integer to each peer
put (key,value) pair in the peer that is closest
to the key
Application 2-86
DHT identifiers
assign integer identifier to each peer in range
[0,2n-1] for some n.
each identifier represented by n bits.
require each key to be an integer in same range
to get integer key, hash original key
e.g., key = hash(“Led Zeppelin IV”)
this is why its is referred to as a distributed “hash” table
Application 2-87
Assign keys to peers
rule: assign key to the peer that has the
closest ID.
convention in lecture: closest is the
immediate successor of the key.
e.g., n=4; peers: 1,3,4,5,8,10,12,14;
key = 13, then successor peer = 14
key = 15, then successor peer = 1
Application 2-88
1
3
4
5
8 10
12
15
Circular DHT (1)
each peer only aware of immediate successor and
predecessor.
“overlay network” Application 2-89
0001
0011
0100
0101
1000 1010
1100
1111
Who’s responsible
for key 1110 ? I am
O(N) messages
on avgerage to resolve
query, when there
are N peers
1110
1110
1110
1110
1110
1110
Define closest
as closest
successor
Application 2-90
Circular DHT (1)
Circular DHT with shortcuts
each peer keeps track of IP addresses of predecessor, successor, short cuts.
reduced from 6 to 2 messages.
possible to design shortcuts so O(log N) neighbors, O(log N) messages in query
1
3
4
5
8 10
12
15
Who’s responsible
for key 1110?
Application 2-91
Peer churn
example: peer 5 abruptly leaves
peer 4 detects peer 5 departure; makes 8 its immediate successor; asks 8 who its immediate successor is; makes 8’s immediate successor its second successor.
what if peer 13 wants to join?
1
3
4
5
8 10
12
15
handling peer churn:
peers may come and go (churn)
each peer knows address of its two successors
each peer periodically pings its two successors to check aliveness
if immediate successor leaves, choose next successor as new immediate successor
Application 2-92
Application Layer 2-93
บทท 2: Outline 2.1 หลกการของแอพพลเคชนดาน
ระบบเครอขาย 2.2 Web และ HTTP 2.3 FTP 2.4 อเมล
SMTP, POP3, IMAP
2.5 DNS
2.6 แอพพลเคชน P2P 2.7 socket programming กบ UDP
และ TCP
Application Layer 2-94
Socket programming
goal: learn how to build client/server applications that communicate using sockets
socket: door between application process and end-end-transport protocol
Internet
controlled
by OS
controlled by app developer
transport
application
physical
link
network
process
transport
application
physical
link
network
process socket
Application Layer 2-95
Socket programming
Two socket types for two transport services:
UDP: unreliable datagram
TCP: reliable, byte stream-oriented
Application Example:
1. Client reads a line of characters (data) from its keyboard and sends the data to the server.
2. The server receives the data and converts characters to uppercase.
3. The server sends the modified data to the client.
4. The client receives the modified data and displays the line on its screen.
Application Layer 2-96
Socket programming with UDP
UDP: no “connection” between client & server no handshaking before sending data
sender explicitly attaches IP destination address and port # to each packet
rcvr extracts sender IP address and port# from received packet
UDP: transmitted data may be lost or received out-of-order
Application viewpoint: UDP provides unreliable transfer of groups of bytes
(“datagrams”) between client and server
Client/server socket interaction: UDP
close
clientSocket
read datagram from
clientSocket
create socket:
clientSocket =
socket(AF_INET,SOCK_DGRAM)
Create datagram with server IP and
port=x; send datagram via
clientSocket
create socket, port= x:
serverSocket =
socket(AF_INET,SOCK_DGRAM)
read datagram from
serverSocket
write reply to
serverSocket
specifying
client address,
port number
Application 2-97
server (running on serverIP) client
2: Application Layer 98
Example: Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
Create input stream
Create client socket
Translate hostname to IP
address using DNS
2: Application Layer 99
Example: Java client (UDP), cont.
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
Create datagram with data-to-send,
length, IP addr, port
Send datagram to server
Read datagram from server
2: Application Layer 100
Example: Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Create datagram socket
at port 9876
Create space for received datagram
Receive datagram
2: Application Layer 101
Example: Java server (UDP), cont
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);
serverSocket.send(sendPacket);
}
}
}
Get IP addr port #, of
sender
Write out datagram to socket
End of while loop, loop back and wait for another datagram
Create datagram to send to client
Application Layer 2-102
Socket programming with TCP
client must contact server
server process must first be running
server must have created socket (door) that welcomes client’s contact
client contacts server by:
Creating TCP socket, specifying IP address, port number of server process
when client creates socket: client TCP establishes connection to server TCP
when contacted by client, server TCP creates new socket for server process to communicate with that particular client
allows server to talk with multiple clients
source port numbers used to distinguish clients (more in Chap 3)
TCP provides reliable, in-order byte-stream transfer (“pipe”) between client and server
application viewpoint:
Application Layer 2-103
Client/server socket interaction: TCP
wait for incoming
connection request connectionSocket =
serverSocket.accept()
create socket, port=x, for incoming
request: serverSocket = socket()
create socket, connect to hostid, port=x
clientSocket = socket()
server (running on hostid) client
send request using
clientSocket read request from
connectionSocket
write reply to
connectionSocket
TCP connection setup
close
connectionSocket
read reply from
clientSocket
close
clientSocket
2: Application Layer 104 o
utT
oS
erv
er
to network from network
inF
rom
Se
rve
r
inF
rom
Use
r
keyboard monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCP
socket
Client process
client TCP socket
Stream jargon
A stream is a sequence of characters that flow into or out of a process.
An input stream is attached to some input source for the process, e.g., keyboard or socket.
An output stream is attached to an output source, e.g., monitor or socket.
2: Application Layer 105
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Create input stream
Create client socket,
connect to server
Create output stream
attached to socket
2: Application Layer 106
Example: Java client (TCP), cont.
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Create input stream
attached to socket
Send line to server
Read line from server
2: Application Layer 107
Example: Java server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
Create welcoming socket
at port 6789
Wait, on welcoming socket for contact
by client
Create input stream, attached
to socket
2: Application Layer 108
Example: Java server (TCP), cont
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
Read in line from socket
Create output stream, attached
to socket
Write out line to socket
End of while loop, loop back and wait for another client connection
Application Layer 2-109
Chapter 2: summary
สถาปตยกรรมของ application client-server P2P
บรการท application ตองการ: reliability, bandwidth, delay
โมเดลการใหบรการสงขอมลของ Internet (Internet transport service model) connection-oriented, reliable: TCP unreliable, datagrams: UDP
ตอนนเรากเรยนเกยวกบ network apps สมบรณแลว!
ตวอยาง Protocols:
HTTP
FTP
SMTP, POP, IMAP
DNS
P2P: BitTorrent, DHT
socket programming: TCP, UDP sockets
Application Layer 2-110
การแลกเปลยนขอความรองขอ/ตอบกลบ (request/reply) ทว ๆ ไป: client รองขอขอมลหรอบรการ server ตอบกลบดวยขอมล หรอ
รหสสถานะ (status code) formats ของขอความ:
headers (สวนหว): fields (สวนของขอมล) ใหขอมลทอธบายขอมลท app สงจรง ๆ
data: ขอมลท app จะตองการสงถงกน
หวขอทส าคญ: ขอความทใชควบคม vs ขอความทเปนขอมล
in-band (ถกสงไปดวยกน), out-of-band (ถกสงไปคนละการเชอมตอกน)
centralized (รวมศนย) vs. decentralized (กระจาย)
stateless (ไมเกบสถานะ) vs. stateful (เกบสถานะ)
reliable vs. unreliable msg transfer
ความซบซอนทขอบของเครอขาย
ส าคญ: เรยนรเกยวกบ protocols!
Chapter 2: summary
1 56910040 MS.VANNAK SOTH 2 56920001 นางสาวเจฬรย ล าเลศ 3 56920003 นายธนศกด วฒวโรภาส 4 56920004 นายนพปฎล เฉยศร 5 56920005 นายปรเมศวร รตนผล 6 56920006 พนตรพรภรมย มนฤกษ 7 56920007 นายวนปยะ รตตะมณ 8 56920336 นายฉตรชย เสกประเสรฐ 9 56920337 นายธนพนธ เดชจระกล 10 56920338 นายธนนทร เมธโยธน 11 56920340 นางสาวพรพรรณ ขวญกจบรรจง 12 56920341 นายพสกร ปญญวรากจ 13 56920343 นางโพธรตน หรญรง 14 56920344 นายรกชาต เหมะสขณฑกะ 15 56920345 นายสมบรณ เฉลมรตนาพร 16 56920347 นายเอกพล ออนปาน
Credit ผแปล
1-111 บทน ำ