Chương 2. Giao thức tầng ứng dụng (application layer) Mạng Máy Tính Nguyễn Duy Khoa Mạng Máy Tính và Truyền Thông Trường ĐH Công Nghệ Thông Tin
Application Layer
9/30/2011
2 of 44
1
MMT_Chương02
9/30/2011
Ch2. The Application Layer 2.1. Một số khái niệm và nguyên tắc. 2.2. Web & Hyper Text Transfer Protocol.
2.3. Web design and HTTP, Web programming. 2.4. File Transfer Protocol. 2.5. Electronic Mail Protocols. 2.6. Domain Name System.
9/30/2011
3 of 44
2.1. Một số khái niệm và nguyên tắc
Một số chương trình ứng dụng (network applications): Email
(Yahoo! Mail, MS Outlook…). Web browser (MS Internet Explorer, Netscape Navigator…). Instant messenger (Yahoo! Messenger, ICQ…). P2P file sharing (Napster, KazaA…). Internet games (Yahoo! Games). Internet telephone (Skype, FPTFone,VNNFone…). Streaming stored video clips. Real-time video conference. Massive parallel computing.
9/30/2011
4 of 44
2
MMT_Chương02
9/30/2011
Một số giao thức (application-layer protocols)
HTTP (Hyper Text Transfer Protocol)
FTP (File Transfer Protocol)
Giao thức web. Giao thức truyền tệp.
SMTP (Simple Mail Transfer Protocol)
POP (Post Office Protocol)
Giao thức truyền thư điện tử. Giao thức nhận thư điện tử.
IMAP (Internet Mail Access Protocol)
DNS (Domain Name System)
TFTP (Trivial FTP)
Giao thức nhận thư điện tử (khác POP3) DNS = hệ thống tên miền, giao thức DNS quy định quy tắc sử dụng tên miền. Một dạng khác của FTP.
9/30/2011
5 of 44
Net applications vs. application-layer protocols
Applications:
Application-layer protocols:
9/30/2011
Chương trình ứng dụng chạy trên các máy tính. Trao đổi thông điệp (message) với
các ứng dụng khác nhằm thực thi vai trò của ứng dụng. Vd: web browser, email client… Là một thành phần của chương trình ứng dụng. Định nghĩa các quy tắc trao đổi thông điệp. Giao tiếp với các dịch vụ được cung cấp bởi tầng dưới (TCP, UDP).
6 of 44
3
MMT_Chương02
9/30/2011
Các chương trình giao tiếp với nhau ntn?
Các chương trình trên cùng một máy tính Sử
dụng các dịch vụ được cung cấp bởi hệ điều hành (interprocess communication).
Các chương trình trên các máy tính khác nhau Giao
tiếp thông qua giao thức của tầng ứng dụng (application-layer protocol).
Chương trình phía người dùng = user agent Giao
tiếp với người sử dụng (giao diện sử dụng). Giao tiếp với các giao thức mạng. 7 of 44
9/30/2011
Mô hình khách-phục vụ (client-server paradigm) Mô hình khách-phục vụ được quen gọi là mô hình khách-chủ. Một ứng dụng application cụ thể bao gồm hai phần: transport
Client
request
Thiết lập liên kết với server. Yêu cầu dịch vụ từ server. Nhiều clients. Vd: web browser.
Server
9/30/2011
network data link physical
Chờ và cung cấp các dịch vụ khi client yêu cầu.
Thường chỉ có 1 server, không thay đổi địa chỉ, chạy 24/7. Vd: web server.
reply application transport network data link physical
8 of 44
4
MMT_Chương02
9/30/2011
Mô hình ngang hàng (Peer-to-peer paradigm)
Không có máy dịch vụ cố định,
các máy tính trong mạng lúc này là server (nhận yêu cầu kết nối) nhưng lúc khác lại là client (yêu cầu máy khác kết nối). Các máy tính là ngang hàng, tự do kết nối và giao tiếp đôi một. Địa chỉ của các máy tính tham gia giao tiếp liên tục thay đổi.
9/30/2011
9 of 44
Client-server & P2P examples
CNN.com
Client-server
Yahoo! Mail
Client-server
Google
Client-server
Yahoo! Messenger
Client-server
& P2P
Internet Relay Chat (IRC)
Client-server
& P2P
9/30/2011
10 of 44
5
MMT_Chương02
9/30/2011
Dịch vụ tầng dưới đối với application-layer Có thể coi tầng application (Internet) = tầng application + presentation + session trong mô hình OSI. Các dịch vụ với application:
Presentation: gắn liền với application trong TCP/IP
Cung cấp dịch vụ vận chuyển cho application (TCP/IP). Hai giao thức: TCP và UDP.
9/30/2011
11 of 44
Yêu cầu đối với việc vận chuyển dữ liệu
Data loss Các ứng
dụng audio/video có thể chấp nhận mất mát, sai lệch dữ liệu trong khoảng cho phép. Email, file transfer yêu cầu dữ liệu phải chính xác.
Timing Các ứng
dụng online cần độ trễ (delay) nhỏ (phone, games).
Bandwidth Các ứng
dụng multimedia cần đường truyền tốc độ cao để đảm bảo chất lượng. Các ứng dụng email, file transfer mềm dẻo hơn, tuỳ theo tốc độ.
9/30/2011
12 of 44
6
MMT_Chương02
9/30/2011
Các yêu cầu giao vận của một số ứng dụng
9/30/2011
13 of 44
Internet Transport protocols: TCP & UDP TCP (Transmission Control Protocol)
connection-oriented: setup required between client, server. reliable transport between sending and receiving process. flow control: sender won’t overwhelm receiver. congestion control: throttle sender when network overloaded. does not providing: timing, minimum bandwidth guarantees.
9/30/2011
UDP (User Datagram Protocol)
unreliable data transfer between sending and receiving process does not provide: connection setup, reliability, flow control, congestion control, timing, or bandwidth guarantee.
14 of 44
7
MMT_Chương02
9/30/2011
Internet applications: TCP or UDP?
9/30/2011
15 of 44
Ch2. The Application Layer 2.1. Một số khái niệm và nguyên tắc. 2.2. Web & Hyper Text Transfer Protocol. 2.3. Web design and programming. 2.4. File Transfer Protocol. 2.5. Electronic Mail Protocols. 2.6. Domain Name System.
9/30/2011
16 of 44
8
MMT_Chương02
9/30/2011
2.2. Web & HTTP
Trang web (web page): một loại tài liệu có chứa trong đó
nhiều đối tượng: text, image, audio, Java applet, HTML… Về cơ bản, web page = HTML file (base HTML). HTML =
Hyper Text Markup Language. HTML sử dụng các thẻ (tag) để mô tả đối tượng chứa trong nó.
Mỗi đối tượng được chỉ ra bởi địa chỉ URL (Uniform Resource Locator) :80/cs/index.htm :80/cs/images/calendar.jpg Protocol
Host name & port
Path
9/30/2011
17 of 44
HTTP (Hyper Text Transfer Protocol)
Giao thức tầng ứng dụng web. Sử dụng mô hình client/server.
Client
(user agent):
Trình duyệt web (web browser) Yêu cầu truy cập web thông qua URL (URL request).
Server
Máy phục vụ web (web server). Gửi các đối tượng tới client thông quan phản hồi (response).
HTTP version: HTTP 1.0:
RFC 1945 HTTP 1.1: RFC 2068 9/30/2011
18 of 44
9
MMT_Chương02
9/30/2011
HTTP: Quá trình trao đổi thông điệp Client (browser) thiết lập liên kết tới web server (TCP connection) qua cổng 80 (mặc định). Server đồng ý kết nối (accept). Các thông điệp (HTTP messages) được trao đổi giữa browser và server. Ngắt kết nối.
9/30/2011
19 of 44
HTTP example Giả sử người dùng truy cập URL: www.uit.edu/cs/index.htm (trang web có text và 10 hình ảnh jpeg) 1a. http client thiết lập liên kết TCP với http server (process)
tại địa chỉ www.hau1.edu.vn, cổng 80 (ngầm định với http server).
1b. http server tại máy phục vụ www.hau1.edu.vn chờ yêu cầu kết nối TCP tại cổng 80, chấp nhận kết nối rồi thông báo với client.
2. http client gửi http request message (bao gồm cả URL) tới TCP connection socket
time 9/30/2011
3.
http server nhận request message, tạo ra http response message có chứa các đối tượng được yêu cầu rồi gửi vào socket.
20 of 44
10
MMT_Chương02
9/30/2011
4. http server ngắt liên kết. 5. http client nhận response
time
message có chứa html file, hiển thị html. Sau đó, phân tích html file, tìm URL của 10 hình ảnh jpeg trong tài liệu.
6. Bước 1-5 được lặp lại với từng hình ảnh.
9/30/2011
21 of 44
HTTP Connection: Persistent & Non-persistent Non-persistent HTTP Nhiều nhất là một đối
tượng được truyền qua liên kết TCP. HTTP 1.0
9/30/2011
Persistent HTTP Cho phép nhiều đối tượng được truyền trên cùng một liên kết. Client phân tích, tìm ra và gửi yêu cầu tới tất cả các đối tượng ngay sau khi nhận được trang HTML ban đầu (base HTML). HTTP 1.1 sử dụng liên kết loại này ở chế độ mặc định.
22 of 44
11
MMT_Chương02
9/30/2011
HTTP Message Format: request & response Hai loại message: request và response. HTTP request message: dạng ASCII (đọc được!)
Carriage return, line feed indicates end of message
9/30/2011
(extra carriage return, line feed)
23 of 44
HTTP request message
9/30/2011
24 of 44
12
MMT_Chương02
9/30/2011
HTTP response message status line (protocol status code status phrase) header lines
HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ...
data, e.g., requested html file
9/30/2011
25 of 44
HTTP response message
9/30/2011
26 of 44
13
MMT_Chương02
9/30/2011
HTTP response message: status codes 200 OK
request
succeeded, requested object later in this message
301 Moved Permanently requested object
moved, new location specified later in this message (Location:)
400 Bad Request request
message not understood by server
404 Not Found requested document
not found on this server
505 HTTP Version Not Supported
9/30/2011
27 of 44
Ví dụ thực hành 1. Telnet tới web server:
telnet www.uit.edu.vn 80 Mở một kết nối (TCP) tới cổng 80 tại web server của trường ĐHNNI. Sau khi kết nối, tất cả ký tự gõ vào sẽ được gửi tới cổng 80.
2. Nhập vào GET http request: GET /cs/index.htm HTTP/1.0 Đây là một http request đơn giản. Nhập xong gõ 2 lần Enter để gửi tới server
3. Kiểm tra kết quả nhận được (http response message)!
9/30/2011
28 of 44
14
MMT_Chương02
9/30/2011
User-server interaction: authentication & cookies Authenthication
Server phát sinh một con số server nào đó (#) khi client request, client đồng thời ghi nhớ số này để
usual http request msg sử dụng sau này: usual http response + Chứng thực Set-cookie: # (authentication) Ghi nhớ sở thích, thói usual http request msg quen, lựa chọn truy cập cookiecookie: # lần trước. spectific server gửi “cookie” tới usual http response msg action client qua response msg, vd: Set-cookie: 1678453
Lần sau truy cập website, client gửi kèm cookie, vd: cookie: 1678453
9/30/2011
usual http request msg
cookie: # usual http response msg
cookiespectific action 30 of 44
15
MMT_Chương02
9/30/2011
Conditional GET: client-side caching
MĐ: server không cần gửi client obj tới client khi client đã có http request msg phiên bản cập nhật (up-toIf-modified-since: <date> date) của obj. Client phải chỉ ra thời gian http response sửa gần đây nhất của obj
HTTP/1.0 304 Not Modified trong http request msg.
server object not modified
If-modified-since: <date>
http request msg
Server sẽ trả về response msg không chứa obj nếu obj là cập nhật:
If-modified-since: <date>
object modified
http response
HTTP/1.0 304 Not Modified
HTTP/1.1 200 OK
<data> 31 of 44
9/30/2011
Web Caches (proxy server)
Client gửi http requests tới web cache thay vì tới server.
Web cache sẽ khiến người dùng có cảm giác duyệt web nhanh hơn, giảm nghẽn mạng. Vd: proxy server trong IE.
9/30/2011
Nếu obj có tại web cache: web cache tạo http response msg gửi về cho client. Nếu không, web cache tạo gửi http request tới server, nhận obj, lưu trữ, rồi gửi http response msg tới client.
origin server
Proxy server client
client
origin server
32 of 44
16
MMT_Chương02
9/30/2011
Why Web Caching? Assume: cache is “close” to client (e.g., in same network) smaller response time: cache “closer” to client decrease traffic to distant servers
origin servers public Internet
1.5 Mbps access link institutional network
link
out of institutional/local ISP network often bottleneck
10 Mbps LAN
institutional
cache
9/30/2011
33 of 44
Web servers
IIS (Microsoft Internet Information Server) Chạy trên
môi trường Windows Đi kèm Windows 2000 Server (IIS 5.0).
Apache web server Mã nguồn
mở. Linux/Windows… Web server được dùng nhiều nhất.
Tomcat, Netscape, Xitami…
9/30/2011
34 of 44
17
MMT_Chương02
9/30/2011
Ch2. The Application Layer 2.1. Một số khái niệm và nguyên tắc. 2.2. Web & Hyper Text Transfer Protocol. 2.3. Web design and HTTP, Web programming. 2.4. File Transfer Protocol. 2.5. Electronic Mail Protocols. 2.6. Domain Name System.
9/30/2011
35 of 44
Web design: HTML
Thiết kế web: Tạo ra tài liệu HTML HTML (Hyper Text Markup Language) Trong tài liệu
Công cụ: Text editor: Notepad, Ultra Microsoft FrontPage Macromedia Dreamweaver
()
9/30/2011
Edit...
36 of 44
18
MMT_Chương02
9/30/2011
Web programming HTML = trang web tĩnh (Static web): Web server luôn trả về một trang HTML cố định khi nhận được yêu cầu của người dùng. Lập trình web: tương tác với người sử dụng thông qua web.
HTML Form: Send user requests <html> HTML <head> <title>Simple Form</title> </head> <body> <form method="POST" action = "simple.asp">
<input type="text" name="myName" size="20">
name="B1"> </form>
</body> </html>
9/30/2011
<%@ Language=VBScript %> ASP <HTML> <HEAD> <Title>Simple ASP</title> </HEAD> <BODY> <% dim welcome dim myName myName=Request.Form("myName") welcome = “
Welcome " & myName & “!
” Response.Write (welcome ) %> </BODY> </HTML>
38 of 44
19
MMT_Chương02
9/30/2011
ASP (Active Server Page)
Microsoft/IIS. Một tài liệu ASP có thể coi như một tài liệu HTML có nhúng các script ASP, được ghi lại dạng tệp *.asp, đặt tại web server. Mỗi khi được request, các script được chạy ở phía server, kết quả trả về client dạng HTML (client không thấy source). Các đối tượng: Request
Client request. Server response.
Response Application
QueryString…
Công cụ: MS Visual InterDev 39 of 44
9/30/2011
Mô hình 3 lớp trong lập trình web req WEB BROWSER
WEB SERVER (Apache, IIS) resp
Server-side scripts
ASP, PHP, JSP
Các thủ tục truy xuất CSDL
CSDL
9/30/2011
DB API
DB
40 of 44
20
MMT_Chương02
9/30/2011
TCP Socket Programming
Giao thức HTTP: application-layer protocol Hai ứng dụng application muốn giao tiếp phải sử dụng dịch vụ của tầng giao vận: Socket: a
door between application process and end-end-transport protocol (UCP or TCP).
controlled by application developer controlled by
operating system
process
process
socket TCP with buffers, variables
socket TCP with buffers, variables
internet
controlled by operating system
host or server
host or server
9/30/2011
controlled by application developer
41 of 44
TCP Socket: Client/server
Server socket đã mở sẵn và đợi tại một cổng (port) nào đó. Port
được sử dụng để chỉ một process cụ thể sử dụng TCP trên một host.
Client phải thiết lập kết nối với server (request). Khi server nhận yêu cầu kết nối, nó tạo ra một socket mới để tiếp nhận (cho phép nhiều clients). Microsoft Visual Basic:
Winsock:
9/30/2011
Windows Socket Component.
42 of 44
21
MMT_Chương02
9/30/2011
Winsock & OSI
9/30/2011
43 of 44
Bài tập
Sử dụng ASP lập trang web động. Tham
khảo:
Sử dụng công cụ Visual Basic và Winsock component để viết một web server đơn giản. Phân
tích lệnh GET Trả về response message thích hợp. Header Body