Professional Documents
Culture Documents
2: Application Layer 1
Trình ứng dụng và Giao thức tầng Ứng dụng
Trình ứng dụng : Các tiến trình phân application
transport
tán truyền thông với nhau network
data link
Chạy trên các thiết bị đầu cuối physical
2: Application Layer 2
Một số thuật ngữ
2: Application Layer 3
Mô hình Client-Server
Ứng dụng gồm hai thành phần : application
Client
Web server gửi Web page, Mail
server gửi và nhận E-mail
2: Application Layer 4
Giao thức tầng Ứng dụng
API: Application Q: Phân biệt các tiến trình
Programming Interface bằng cách nào?
Là giao diện giữa tầng Ứng Địa chỉ IP của máy.
dụng và tầng Giao vận. Số hiệu cổng – cho
Socket : Internet API phép bên máy tính nhận
Hai tiến trình truyền xác định tiến trình nào
thông bằng cách nhận thư.
gửi/nhận dữ liệu vào/từ
socket.
Còn tiếp …
2: Application Layer 5
Ứng dụng cần Dịch vụ Giao vận gì?
Mất mát dữ liệu (Data loss) Băng thông (Bandwidth)
Một số ứng dụng có thể chấp Một số ứng dụng (đa phương
nhận một số mất mát. tiện) yêu cầu băng thông tối
Một số ứng dụng lại đòi hỏi thiểu để có thể hoạt động
100% dữ liệu truyền tin cậy được.
(web). Một số ứng dụng khác có thể
sử dụng bất cứ băng thông
Thời gian (Timing)
nào được cấp phát.
Một số ứng dụng (hội thoại
qua Internet, các trò chơi
trực tuyến) đòi hỏi độ trễ
thấp.
2: Application Layer 6
Yêu cầu với một số Ứng dụng cụ thể
2: Application Layer 7
Dịch vụ Giao thức giao vận Internet
2: Application Layer 8
Các ứng dụng trên Internet và giao thức
giao vận tương ứng
Giao thức Giao thức Giao vận
Ứng dụng Ứng dụng tương ứng
2: Application Layer 9
Giao thức Web : HTTP
HTTP: Giao thức truyền siêu văn
bản.
HT
Là giao thức tầng ứng dụng cho ứng TP
req
PC sử dụng HT ues
dụng Web. TP t
Explorer resp
o ns
Sử dụng mô hình client/server e
client: browser yêu cầu, nhận,
e st
hiển thị các đối tượng Web. u
P req se Server
T o n
server: Web server gửi các đối HT r es
p sử dụng
T P NCSA Web
tượng khi có yêu cầu HT
server
HTTP1.0 : RFC 1945
HTTP1.1 : RFC 2068 Mac sử dụng
Navigator
2: Application Layer 10
Giao thức HTTP
HTTP là giao thức “không
HTTP sử dụng giao thức TCP. trạng thái”
server không lưu lại
Client khởi tạo kết nối TCP thông tin về yêu cầu của
(socket) tới server qua cổng 80 client
2: Application Layer 11
Ví dụ về HTTP
Bạn đánh địa chỉ trên trình duyệt
www.someSchool.edu/someDepartment/home.index (bao gồm file HTML
tham chiếu tới 10
ảnh JPEG)
1a. HTTP client khởi tạo kết nối
TCP tới HTTP server tại địa 1b. HTTP server ở địa chỉ
chỉ www.someSchool.edu.
www.someSchool.edu đợi kết
Cổng mặc định là 80.
nối TCP ở cổng 80, chấp nhận
kết nối, thông báo lại cho client.
2. HTTP client gửi thông điệp
HTTP yêu cầu (bao gồm URL)
qua kết nối TCP vừa thiết lập 3. HTTP server nhận thông điệp yêu
cầu,lấy các đối tượng được yêu cầu
gửi vào trong thông điệp trả lời,
(someDepartment/home.index)
gửi thông điệp vào socket
Thời gian
2: Application Layer 12
Ví dụ về HTTP
2: Application Layer 13
Kết nối liên tục và không liên tục
Không kiên trì: Kiên trì:
HTTP/1.0 : server phân Mặc định cho HTTP/1.1
tích yêu cầu, trả lời rồi server phân tích yêu
đóng kết nối TCP. cầu, trả lời, phân tích
Một đối tượng : 2 RTT yêu cầu kế tiếp: trên
(độ trễ). cùng một kết nối TCP
Mỗi lần truyền, chịu một client gửi yêu cầu cho
độ trễ do thiết lập kết nối. tất cả các đối tượng khi
Nhưng phần lớn trình nhận được file HTML
cơ sở
duyệt mở đồng thời
nhiều kết nối TCP. Ít bước hơn, nhanh hơn.
2: Application Layer 14
Định dạng thông điệp yêu cầu HTTP
Có hai kiểu thông điệp HTTP : Thông điệp yêu cầu (request)
và Thông điệp trả lời (response)
Thông điệp HTTP request:
Theo định dạng mã ASCII.
2: Application Layer 15
Định dạng Thông điệp HTTP Request
2: Application Layer 16
Định dạng Thông điệp HTTP response
Dòng trạng thái
(mã trạng thái)
HTTP/1.0 200 OK
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Các dòng tiêu đề Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
2: Application Layer 17
Mã trạng thái trong Thông điệp Trả lời
Được ghi ở dòng đầu tiên trong thông điệp Server trả lời Client
Một số mã thường gặp:
200 OK
Yêu cầu thành công, các đối tượng được yêu cầu ở phần thân
thông điệp.
301 Moved Permanently
Đối tượng yêu cầu đã được chuyển và địa chỉ mới của đối
tượng được đặt trong trường Location:
400 Bad Request
Server không hiểu được Thông điệp yêu cầu
404 Not Found
Đối tượng được yêu cầu không có trong server
505 HTTP Version Not Supported
Server không hỗ trợ phiên bản giao thức HTTP.
2: Application Layer 18
Thử kiểm nghiệm HTTP (phía Client)
2: Application Layer 19
Tương tác User-Server: Kiểm chứng
Mục tiêu : kiểm soát quyền truy
server
cập tới đối tượng lưu trên server. client
Phương pháp : sử dụng Tên truy usual http request msg
cập và Mật khẩu 401: authorization req.
Không trạng thái : mỗi lần yêu cầu, WWW authenticate:
client phải chứng tỏ mình có quyền
Kiểm chứng : usual http request msg
Tiêu đề authorization: trong + Authorization:line
mỗi yêu cầu gửi đi. usual http response msg
Nếu không có quyền : server từ
chối truy cập và gửi yêu cầu có
trường tiêu đề WWW usual http request msg
authenticate: + Authorization:line
2: Application Layer 23
Tại sao sử dụng Web Caching ?
origin
servers
Giả định : cache gần client
hơn (có thể trong cùng public
Internet
mạng LAN)
Giảm thời gian client phải
đợi 1.5 Mbps
Giảm tải mạng access link
institutional
Đường kết nối ra ngoài
network
10 Mbps LAN
mạng nội bộ thường
xảy ra hiện tượng “thắt
nút cổ chai”.
institutional
cache
2: Application Layer 24
Giao thức truyền file FTP
Là giao thức trao đổi file với máy tính ở xa (remote host).
Sử dụng mô hình client/server
client: khởi tạo kết nối.
server: máy tính ở xa (remote host)
FTP được đặc tả trong RFC 959
FTP server: port 21
2: Application Layer 25
Hai kết nối FTP : Kiểm soát và Dữ liệu
FTP client kết nối với FTP server
qua cổng 21.
Hai kết nối TCP đồng thời được
tạo: TCP control connection
Kiểm soát : trao đổi lệnh, port 21
phản hồi giữa client và server.
“out of band control” TCP data connection
FTP port 20 FTP
Dữ liệu : kết nối tải file từ
client server
client đến server hay từ server
về client.
FTP server lưu lại trạng thái : thư
mục hiện thời, lần truy nhập gần
đây nhất
2: Application Layer 26
Các lệnh và Trả lời thường gặp
2: Application Layer 27
Thư điện tử outgoing
message queue
user mailbox
user
Gồm 3 thành phần chính: agent
user agent mail
user
mail servers server
agent
simple mail transfer protocol: SMTP mail
SMTP server user
SMTP agent
User Agent
Còn gọi là “mail reader” SMTP
mail user
Giúp soạn thảo và đọc thư. agent
server
Ví dụ: Eudora, Outlook, elm,
Netscape Messenger user
agent
Các thông điệp outgoing, user
incoming được lưu trên server agent
2: Application Layer 28
Thư điện tử : Mail Server
user
Mail Server
agent
Hộp thư lưu lại các thư điện tử
mail
user
(có thể chưa được đọc) của server
agent
người sử dụng.
SMTP mail
Hàng đợi chứa các thư sẽ được
server user
gửi đi. SMTP agent
Giao thức SMTP là giao thức để
các mail server trao đổi email. SMTP
mail user
Đóng vai trò client khi gửi server agent
thư.
user
Đóng vai trò server khi nhận
agent
thư. user
agent
2: Application Layer 29
Thư điện tử : Mail Server [RFC 821]
2: Application Layer 31
Tự thử nghiệm tương tác bằng SMTP
telnet servername 25
Nhận được hồi đáp có mã 220 từ server.
Đánh các lệnh HELO, MAIL FROM, RCPT TO,
DATA, QUIT.
Các lệnh trên cho phép bạn gửi thư mà không cần dùng
đến email client (reader)
2: Application Layer 32
SMTP : Kết thúc
Giao thức SMTP sử dụng kết So sánh với HTTP:
nối bền vững.
HTTP: giao thức kiểu “kéo”
SMTP đòi hỏi thông điệp
(“kéo” thông tin từ server về)
(header & body) phải được định
Email :là giao thức kiểu “đẩy”
dạng bằng mã ASCII 7bit.
(“đẩy” thông tin lên server)
Những xâu kí tự đặc biệt (ví dụ
CRLF.CRLF) không được phép Cả hai đều tương tác gửi lệnh (mã
ghi vào thông điệp (do đó chuỗi ASCII)/ trả lời (mã trạng thái).
ký tự này phải được mã hóa)
SMTP server sử dụng HTTP : Mỗi đối tượng nằm trong
2: Application Layer 34
Định dạng thông điệp mở rộng đa phương tiện
MIME : Multimedia Mail Extension, RFC 2045, 2056
Bổ sung thêm một dòng trong phần tiêu đề của thông điệp
để mô tả kiểu MIME.
From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
Phương thức MIME-Version: 1.0
mã hoá dữ liệu Content-Transfer-Encoding: base64
Content-Type: image/jpeg
Khai báo kiểu dữ liệu
Multimedia, kiểu phụ base64 encoded data .....
.........................
......base64 encoded data
Dữ liệu đã mã hoá
2: Application Layer 35
Kiểu MIME
Content-Type: type/subtype; parameters
Text Video
Kiểu : plain, html Kiểu : mpeg, quicktime
Image Application
Kiểu : jpeg, gif Các loại dữ liệu khác
phải được xử lý bằng
chương trình đọc tương
Audio ứng mới có thể đọc,
Kiểu : basic (loại có quy xem được.
luật hoá 8-bit), Ví dụ các kiểu: msword,
32kadpcm (mã hóa 32 octet-stream
kbps)
2: Application Layer 36
Kiểu chứa nhiều loại đối tượng
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
2: Application Layer 37
Các giao thức truy nhập Mail
SMTP SMTP POP3 or user
user
agent IMAP agent
2: Application Layer 38
Giao thức POP3 S: +OK POP3 server ready
C: user alice
Giai đoạn kiểm chứng S: +OK
Các lệnh Client gửi: C: pass hungry
user: username S: +OK user successfully logged on
2: Application Layer 40
DNS : Name Server (Máy chủ Tên)
Tại sao tạo ra một DNS Không có server nào có thể lưu toàn bộ
Server tập trung ? được tên miền và địa chỉ IP tương ứng
Điểm hỏng duy nhất - nếu local name servers:
name-server “chết” thì cả Mỗi ISP, công ty có local name
mạng Internet sẽ “chết” server (ngầm định)
theo.
Câu hỏi truy vấn của host về DNS sẽ
Khối lượng giao dịch tại
được chuyển tới local name server
điểm tập trung lớn.
Chức năng của name server:
Cơ sở dữ liệu tập trung ở
Đối với host: lưu địa chỉ IP và tên
“xa” với nhiều nơi
Bảo trì dễ hơn. miền tương ứng của host
Có thể tìm tên miền ứng với địa chỉ
IP và ngược lại
Không MỞ RỘNG được !
2: Application Layer 41
DNS : Root Name Server
Local name server sẽ hỏi Root name server khi không xác định được
ánh xạ.
Root name server:
Hỏi authoritative name server nếu không trả lời được
Nhận câu trả lời từ authoritative name server
Trả lời local name server a NSI Herndon, VA
k RIPE London
c PSInet Herndon, VA
d U Maryland College Park, MD i NORDUnet Stockholm
g DISA Vienna, VA
h ARL Aberdeen, MD
j NSI (TBD) Herndon, VA m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA
2: Application Layer 42
DNS : Ví dụ đơn giản root name server
2: Application Layer 43
Name Server Trung gian
root name server
Root name server: 2 6
7 3
Có thể không biết
authoritative name
server
local name server intermediate name server
Chỉ biết Name Server dns.eurecom.fr
dns.umass.edu
4 5
trung gian, qua đó mới 1 8
tìm được authoritative
name server
authoritative name server
dns.cs.umass.edu
requesting host
surf.eurecom.fr
gaia.cs.umass.edu
2: Application Layer 44
DNS: các loại truy vấn
root name server
Truy vấn đệ quy :
Name server là nơi giải mã iterated query
2
địa chỉ/tên. Nếu không tự 3
mình giải mã được sẽ gửi yêu
cầu đến name server khác. 4
Root name server liệu có bị
quá tải ? 7
gaia.cs.umass.edu
2: Application Layer 45
DNS: Lưu tạm và Cập nhật bản ghi
Khi “học” được thêm một ánh xạ, name server sẽ “ghi nhớ”
ánh xạ này
Sau một khoảng thời gian, nếu thành phần nào trong cache
không được sử dụng thì sẽ bị xóa bỏ.
2: Application Layer 46
Bản ghi DNS
DNS: cơ sở dữ liệu phân tán lưu các Bản ghi Tài nguyên (RR)
Định dạng RR : (name, value, type, TTL)
Type=A Type=CNAME
name : hostname name : tên bí danh cho một tên
value : IP address thực nào đó : ví dụ
Type=NS
www.ibm.com là tên bí danh của
servereast.backup2.ibm.com
name : domain (ví dụ
foo.com)
value : là tên thực
value : địa chỉ IP authoritative
name server cho tên miền đó
Type=MX
value : tên của mailserver
2: Application Layer 47
Giao thức và Thông điệp của DNS
Giao thức DNS : Thông điệp truy vấn và trả lời đều có chung một định dạng
2: Application Layer 48
DNS – Giao thức và Thông điệp
Trường tên và
Kiểu truy vấn
2: Application Layer 49
Lập trình Socket
Mục đích : Nghiên cứu cách xây dựng ứng dụng client/server
giao tiếp qua socket
Socket API socket
BSD4.1 UNIX, 1981
Ứng dụng Tạo, Sử dụng và Đóng Là giao diện nằm trên máy
socket một cách tường minh. tính, do ứng dụng tạo ra và
Sử dụng theo mô hình client/server quản lý, nhưng HĐH kiểm
Hai kiểu dịch vụ ứng dụng sử dụng soát (là “cửa”) thông qua
đó tiến trình vừa gửi và
socket API:
nhận thông điệp từ các tiến
Truyền không tin cậy
trình ứng dụng khác (ở trên
Tin cậy, hướng nối, đúng thứ tự. máy tính khác)
2: Application Layer 50
Lập trình Socket TCP
Socket: Là “cửa” giữa tiến trình ứng dụng và giao thức giao vận
đầu cuối (UCP/TCP)
TCP: Dịch vụ truyền byte tin cậy từ tiến trình này sang tiến trình
khác.
2: Application Layer 51
Lập trình TCP Socket
Client phải liên lạc với server Khi client tạo socket: client TCP
Tiến trình trên server phải chạy thiết lập kết nối tới server TCP.
trước. Khi nhận được yêu cầu từ client,
Server phải tạo sẵn socket (door) server TCP tạo socket mới cho
tiến trình trên server trao đổi dữ
để tiếp nhận yêu cầu từ client. liệu với client
Client trao đổi với server bằng Cho phép server có thể đáp
inFromUser
input
Client đọc một dòng kí tự từ input stream
inFromServer
outToServer
output input
cho client. stream stream
2: Application Layer 53
Tương tác Socket Client/server : TCP
Server Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
2: Application Layer 54
Ví dụ Java Client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
sentence = inFromUser.readLine();
Gửi dòng kí tự
đến server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
2: Application Layer 56
Ví dụ về Java Server (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
while(true) {
Đợi đến khi có socket
từ client gửi đến Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
Tạo input stream, new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
đính kèm vào socket
2: Application Layer 57
Ví dụ về Java Server (TCP)
Tạo output
stream,
đính kèm vào DataOutputStream outToClient =
socket new DataOutputStream(connectionSocket.getOutputStream());
Đọc dòng kí tự
clientSentence = inFromClient.readLine();
trong socket
capitalizedSentence = clientSentence.toUpperCase() + '\n';
Ghi dòng kí tự đã
outToClient.writeBytes(capitalizedSentence);
biến đổi vào socket }
}
} Kết thúc vòng lặp while,
quay trở về vòng lặp chính,
đợi kết nối khác
2: Application Layer 58
Lập trình Socket UDP
2: Application Layer 59
Tương tác Socket Client/Server : UDP
Server Client
create socket,
port=x, for create socket,
clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket
write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port umber close
clientSocket
2: Application Layer 60
Ví dụ Java Client (UDP)
keyboard monitor
inFromUser
input
stream
Tiến trình
Process
Client Input: nhận packet
(TCP nhận “luồng
Output: Gửi packet byte”)
(TCP gửi “luồng
receivePacket
sendPacket
byte”) UDP UDP
packet packet
client UDP
clientSocket
socket UDP
socket
2: Application Layer 61
Ví dụ Java Client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
Tạo input stream
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Tạo client socket
DatagramSocket clientSocket = new DatagramSocket();
Chuyển hostname
InetAddress IPAddress = InetAddress.getByName("hostname");
sang địa chỉ IP
sử dụng DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
2: Application Layer 63
Ví dụ Java Server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
Tạo datagram socket
ở cổng 9876 DatagramSocket serverSocket = new DatagramSocket(9876);
while(true)
{
sendData = capitalizedSentence.getBytes();
Tạo datagram để
DatagramPacket sendPacket =
gửi tới client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Đính datagram
serverSocket.send(sendPacket);
vào socket }
}
} Kết thúc vòng lặp while,
Quay trở về vòng lặp chính,
đợi datagram khác đến
2: Application Layer 65
Lập trình Socket : Tham khảo
C-language tutorial (audio/slides):
“Unix Network Programming” (J. Kurose),
HTTP://manic.cs.umass.edu/~amldemo/courseware/intro.
Java-tutorials:
“All About Sockets” (Sun tutorial),
HTTP://www.javaworld.com/javaworld/jw-12-1996/jw-12-
sockets.html
“Socket Programming in Java: a tutorial,”
HTTP://www.javaworld.com/javaworld/jw-12-1996/jw-12-
sockets.html
2: Application Layer 66
Phần 2 : TỔNG KẾT
Đã học xong tầng ỨNG DỤNG !
2: Application Layer 67
Phần 2 : TỔNG KẾT
Trong chương này, chú trọng về GIAO THỨC !
Chủ yếu trao đổi thông điệp Nhiều Dịch vụ trái ngược :
Request/Reply: Thông điệp mang điều khiển vs.
Client yêu cầu thông tin hoặc
thông điệp mang dữ liệu.
dịch vụ.
in-based, out-of-band
Server trả lại dữ liệu cùng mã
Tập trung và Phân tán.
trạng thái.
Định dạng Thông điệp: Không trạng thái và Lưu trạng
Header : các trường lưu giữ thái.
thông tin về dữ liệu. Truyền thông điệp Tin cậy và
Dữ liệu: thông tin được trao Không tin cậy.
đổi. An ninh : Kiểm chứng.
2: Application Layer 68