You are on page 1of 68

Chương 2:Tầng Ứng dụng

Mục tiêu: Sẽ học cái gì ?


 Định nghĩa, Hoạt động các
 Các giao thức cụ thể:
giao thức trong tầng Ứng
 HTTP
dụng.
 Mô hình khách hàng -  FTP
người phục vụ (client-  SMTP
server)  POP
 Mô hình đồng đẳng
 DNS
 Tìm hiểu một số giao thức
tầng Ứng dụng thông qua  Lập trình các ứng dụng mạng :
các ví dụ cụ thể. socket API

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

 Trao đổi thông điệp với nhau.


 email, FTP, Web

Giao thức tầng ứng dụng


 Là một phần của trình ứng
dụng.
 Xác định thông điệp trao đổi application
application transport
giữa các ứng dụng. transport
network
network
data link
 Sử dụng dịch vụ truyền thông data link physical
physical
do giao thức tầng dưới (TCP,
UDP) cung cấp.

2: Application Layer 2
Một số thuật ngữ

 Tiến trình : là chương  user agent: là phần mềm


trình chạy trên thiết bị đóng vai trò giao diện
đầu cuối. giữa người dùng và
 Trên cùng máy tính, hai mạng.
tiến trình có thể truyền  Cài đặt Giao thức
thông với nhau thông qua tầng Ứng dụng.
truyền thông liên tiến  Web: browser
trình (HĐH quản lý).
 E-mail: mail reader
 Các tiến trình chạy trên
 streaming
các máy tính khác nhau :
tuân thủ giao thức tầng audio/video: media
ứng dụng. player

2: Application Layer 3
Mô hình Client-Server
Ứng dụng gồm hai thành phần : application

client và server transport


network
data link
physical
Client: Yêu cầu
 Khởi tạo giao tiếp với server
(“speaks first”)
 Yêu cầu dịch vụ từ server.
 Web : client nhận và hiển thị web
Trả lời
page ; e-mail: các trình đọc thư.
application
Server: transport
network
 Cung cấp dịch vụ theo yêu cầu từ data link
physical

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ể

Application Data loss Bandwidth Time Sensitive

file transfer no loss elastic no


e-mail no loss elastic no
Web documents loss-tolerant elastic no
real-time audio/video loss-tolerant audio: 5Kb-1Mb yes, 100’s msec
video:10Kb-5Mb
stored audio/video loss-tolerant same as above yes, few secs
interactive games loss-tolerant few Kbps up yes, 100’s msec
financial apps no loss elastic yes and no

2: Application Layer 7
Dịch vụ Giao thức giao vận Internet

Dịch vụ TCP: Dịch vụ UDP:


 Hướng nối : Yêu cầu thiết lập  Truyền dữ liệu không tin
kết nối giữa client và server. cậy giữa các tiến trình gửi
 Truyền dữ liệu tin cậy giữa tiến và nhận.
trình gửi và nhận  Không hỗ trợ : thiết lập
 Điều khiển lưu lượng : bên gửi kết nối, độ tin cậy, điều
sẽ không làm “lụt” bên nhận. khiển lưu lượng, kiểm soát
 Kiểm soát tắc nghẽn: điều tắc nghẽn, thời gian, băng
chỉnh tốc độ gửi khi mạng quá thông tối thiểu.
tải.
 Không hỗ trợ : thời gian, băng Q: Tại sao một số ứng dụng sử
thông tối thiểu. dụng UDP?

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

e-mail SMTP [RFC 821] TCP


remote terminal access telnet [RFC 854] TCP
Web HTTP [RFC 2068] TCP
file transfer FTP [RFC 959] TCP
streaming multimedia proprietary TCP or UDP
(e.g. RealNetworks)
remote file server NSF TCP or UDP
Internet telephony proprietary typically UDP
(e.g., Vocaltec)

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

 Server chấp nhận kết nối TCP từ


Client Giao thức lưu lại trạng sẽ rất
phức tạp !
 Các thông điệp HTTP : trao đổi  Các trạng thái trước đây phải
giữa Browser (HTTP client) và được lưu lại (tốn bộ nhớ).
Web server (HTTP server)
 Nếu kết nối server/client bị

 Đóng kết nối TCP. gián đoạn, trạng thái trên


chúng có thể sai khác => cần
cơ chế điều chỉnh lại

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

4. HTTP server đóng kết nối


TCP.
5. HTTP client nhận thông điệp
trả lời bao gồm tệp html, hiển
thị html.Phân tích tệp html
file, tìm 10 jpeg đối tượng
được tham chiếu
Thời gian
6. Các bước từ 1 đến 5 được lặp lại cho
từng đối tường trong 10 đối tượng jpeg

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.

Dòng yêu cầu


(Lệnh GET, POST, GET /somedir/page.html HTTP/1.0
HEAD) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
Các dòng header Accept-language:fr

CR,LF: Kết (CR,LF)


thúc thông điệp

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

data data data data data ...


Dữ liệu (chẳng hạn
file html được
yêu cầu)

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)

1. Telnet tới Web server:


telnet www.eurecom.fr 80 Tạo kết nối TCP tới cổng 80
(cổng mặc định cho HTTP server)
ở địa chỉ www.eurecom.fr

2. Lệnh GET trong thông điệp HTTP request:


GET /~ross/index.html HTTP/1.0 Gửi thông điệp yêu cầu lấy tệp
index.html trong thư mục ~ross
cho client

3. Xem thông điệp response do HTTP server gửi về!

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

Thông thường, trình duyệt cache usual http response msg


username/pass để người dùng không
phải gõ lại trong mỗi truy cập
2: Application Layer 20
Lưu lại trạng thái nhờ Cookie

 Do Server tạo ra, lưu lại để client server


sử dụng về sau: usual http request msg
 Thẩm định quyền
usual http response +
 Ghi nhớ các “sở thích”, Set-cookie: #
hoạt động của người
dùng. usual http request msg
 Server gửi “cookie” tới cookie: # cookie-
client trong thông điệp spectific
usual http response msg action
response.
Set-cookie: 1678453
 Client gửi kèm cookie usual http request msg
cookie-
trong những lần yêu cầu cookie: #
spectific
sau. usual http response msg action
cookie: 1678453
2: Application Layer 21
GET có điều kiện : caching bên client

 Mục đích : không gửi lại nếuclient server


client đã có bản mới nhất của
đối tượng trong cache. http request msg
If-modified-since: object
 Client: chỉ ra ngày lấy đối <date> not
tượng về trong thông điệp http response modified
HTTP request. HTTP/1.0
If-modified-since: <date> 304 Not Modified

 Server: Thông điệp trả về sẽ


không kèm theo đối tượng
nếu đối tượng đó chưa bị thay http request msg
If-modified-since:
đổi trên server: <date>
object
HTTP/1.0 304 Not modified modified
http response
HTTP/1.1 200 OK

<data>
2: Application Layer 22
Web Caches (proxy server)
Mục đích : Đáp ứng yêu cầu của client mà không cần tới server thật
sự chứa đối tượng

 User cấu hình browser truy origin


nhập Web thông qua Web server
Cache Proxy
HT t
 Client gửi tất cả các yêu cầu TP
req server reques
HTTP request tới Web Cache clientHTTP ues
t H TT
P
p o n se
res
pon P res
 Nếu có đối tượng, Web se HTT
Cache gửi đối tượng về cho est
u
client. P req nse
T po
HT res
 Nếu không có, Web Cache TP
HT
yêu cầu đối tượng từ server
thực, sau đó gửi đối tượng client
cho client origin
server

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

FTP file transfer


FTP FTP
user client server
interface
user
at host local file remote file
system system

 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

Các lệnh thường gặp: Các mã trả về thường gặp


 Được mã hoá bằng mã ASCII  Tương tự HTTP.
 USER username  331 chấp nhận username,
 PASS password yêu cầu password
 LIST trả về danh sách các file  125 kết nối dữ liệu được
và thư mục trong thư mục thiết lập, chuẩn bị truyền dữ
hiện thời. liệu.
 RETR filename lấy file từ  425 Không thể thiết lập kết
thư mục hiện thời. nối dữ liệu
 STOR filename Tải file vào  452 Lỗi ghi file.
thư mục hiện thời trên máy
tính ở xa

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]

 Sử dụng dịch vụ TCP, truyền email tin cậy từ SMTP


client tới SMTP server qua cổng 25
 Truyền trực tiếp : server gửi tới server nhận.
 Truyền qua ba giai đoạn :
 “Bắt tay”
 Truyền các thông điệp
 Đóng kết nối.
 Tương tác: Lệnh (client => server) và Trả lời (Server
=> Client)
 Lệnh : mã bằng bảng mã ASCII.
 Trả lời : mã trạng thái và có thể có thêm giải thích
 Các thông điệp phải được mã bằng bảng mã ASCII 7
bit
2: Application Layer 30
Một số tương tác SMTP
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr>
S: 250 alice@crepes.fr... Sender ok
C: RCPT TO: <bob@hamburger.edu>
S: 250 bob@hamburger.edu ... 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

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

CRLF.CRLF để đánh dấu kết một thông điệp riêng.


thúc thông điệp.  SMTP: nhiều đối tượng nằm trong
cùng một thông điệp
2: Application Layer 33
Định dạng thông điệp Mail
SMTP : Giao thức để trao đổi
email. header
blank
RFC 822 : chuẩn định dạng thông
line
điệp email:
 Tiêu đề :
 To:
body
 From:
 Subject:

rất khác so với thông điệp


lệnh của SMTP !
 Thân thông điệp
 Chỉ bao gồm các ký tự kiểu
ASCII

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

base64 encoded data .....


.........................
......base64 encoded data
--98766789--

2: Application Layer 37
Các giao thức truy nhập Mail
SMTP SMTP POP3 or user
user
agent IMAP agent

Mail server Mail server


GỬI NHẬN
 SMTP: Gửi thư tới Server chứa thư của người nhận
 Giao thức đọc thư : lấy thư từ server
 POP : Post Office Protocol [RFC 1939]
• Kiểm chứng (agent <-->server) và tải thư về
 IMAP: Internet Mail Access Protocol [RFC 1730]
• Phức tạp hơn do có nhiều đặc tính hơn.
• Thao tác trên các thư lưu trên server.
 HTTP : Hotmail , Yahoo! Mail, Gmail,…

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

 pass: password C: list


 Server trả lời S: 1 498
 +OK
S: 2 912
S: .
 -ERR C: retr 1
Giai đoạn xử lý,cập nhật : S: <message 1 contents>
 list: in ra danh sách các S: .
thư(được đánh số ID). C: dele 1
 retr: lấy thư có ID là số nhập C: retr 2
S: <message 1 contents>
vào
S: .
 dele: xoá thư
C: dele 2
 quit C: quit
S: +OK POP3 server signing off
2: Application Layer 39
DNS : Hệ thống Tên miền

Con người : có thể nhận dạng Domain Name System:


bằng nhiều cách:  Là Hệ cơ sở dữ liệu phân tán
 Số Chứng Minh Thư
cài đặt bởi nhiều name servers
 Tên, Biệt danh
phân cấp
 Số hộ chiếu
 Giao thức tầng ứng dụng :
Máy tính và Router trên Internet host, routers yêu cầu name servers
 Địa chỉ IP (32 bit) - sử dụng để giải mã tên (ánh xạ địa chỉ <-
để đánh địa chỉ cho các >tên)
datagram  Chú ý : Chức năng cơ bản của
 “Tên”, ví dụ như Internet hoạt động như giao
gaia.cs.umass.edu thức tầng Ứng dụng
Q: Ánh xạ giữa Địa chỉ IP và Tên?  “Phức tạp” đặt ở “rìa”

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

13 root name servers


trên Thế giới b USC-ISI Marina del Rey, CA
l ICANN Marina del Rey, CA

2: Application Layer 42
DNS : Ví dụ đơn giản root name server

host surf.eurecom.fr muốn biết


2 4
địa chỉ IP của 3
gaia.cs.umass.edu 5

1. Hỏi local DNS server


(dns.eurecom.fr)
2. dns.eurecom.fr hỏi root local name server authorititive name server
name server nếu cần thiết dns.eurecom.fr dns.umass.edu
3. root name server hỏi
1 6
authoritative name server,
dns.umass.edu nếu cần
thiết.
requesting host gaia.cs.umass.edu
surf.eurecom.fr

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

local name server name server trung gian


dns.eurecom.fr dns.umass.edu
Truy vấn tương tác: 5 6
 Nếu không phân giải được 1 8
địa chỉ IP, gửi thông điệp
“Tôi không biết, hãy hỏi bạn authoritative name server
tôi là A”. A là địa chỉ IP của dns.cs.umass.edu
name server kế tiếp. requesting host
surf.eurecom.fr

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ỏ.

 Cơ chế Cập nhật và Thông báo do IETF thiết kế:


 RFC 2136
 http://www.ietf.org/html.charters/dnsind-charter.html

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

Tiêu đề Thông điệp


 identification: 16 bit.
Thông điệp trả lời và truy
vấn có cùng định danh.
 Cờ:
 Cờ query hay reply
 Cờ mong muốn đệ quy
 Cờ chấp nhận đệ quy
 Cờ authoritative

2: Application Layer 48
DNS – Giao thức và Thông điệp

Trường tên và
Kiểu truy vấn

Thông điệp trả lời

Các bản ghi của


authoritative server

Những thông tin ngoại lệ


có thể hữu dụng

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.

Lập trình viên


Lập trình viên process process
kiểm soát kiểm soát
socket socket
TCP with TCP with
Hệ Điều Hành buffers, Hệ Điều Hành
buffers, Internet kiểm soát
kiểm soát variables variables

Máy tính Máy tính

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

cách: ứng yêu cầu của nhiều client.


 Tạo socket TCP ở phía client
 Xác định địa chỉ IP, số hiệu cổng
của tiến trình server.
Quan điểm Lập trình ứng dụng
TCP cung cấp dịch vụ truyền dữ liệu tin cậy
theo bytes giữa Client và Server
2: Application Layer 52
Lập trình Socket TCP
keyboard monitor
Ví dụ ứng dụng client-server:

inFromUser
input
 Client đọc một dòng kí tự từ input stream

chuẩn (inFromUser stream), gửi tới Client


Process Input stream:
server qua socket (outToServer) process sequence of bytes
 server đọc dòng kí tự từ socket output stream: into process
 server biến đổi dòng ký tự đó (chữ sequence of bytes
out of process
thường thành chữ hoa) và gửi trả về

inFromServer
outToServer
output input
cho client. stream stream

 client đọc dòng ký tự đã biến đổi từ


client TCP
socket, in ra (inFromServer) clientSocket
socket TCP
socket

to network from network

2: Application Layer 53
Tương tác Socket Client/server : TCP
Server Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP create socket,


wait for incoming
connection request connection setup connect to hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

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 {

public static void main(String argv[]) throws Exception


{
String sentence;
String modifiedSentence;

Tạo input stream BufferedReader inFromUser =


new BufferedReader(new InputStreamReader(System.in));
Tạo client socket,
Socket clientSocket = new Socket ("hostname", 6789);
kết nối tới server
DataOutputStream outToServer =
Tạo output stream, new DataOutputStream(clientSocket.getOutputStream());
đính kèm vào socket
2: Application Layer 55
Ví dụ về Java Client (TCP)

Tạo input stream, BufferedReader inFromServer =


new BufferedReader(new
đính kèm vào socket
InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Gửi dòng kí tự
đến server outToServer.writeBytes(sentence + '\n');

Đọc dòng kí tự modifiedSentence = inFromServer.readLine();


(đã biến đổi) do server
gửi về System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
2: Application Layer 56
Ví dụ về Java Server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception


{
String clientSentence;
String capitalizedSentence;
Tạo Socket để đợi
ở cổng 6789 ServerSocket welcomeSocket = new ServerSocket(6789);

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

UDP: không thiết lập kết nối


giữa client và server
 Không “bắt tay”.
Với Lập trình Ứ
 Bên gửi phải xác định chính ng dụng
xác địa chỉ IP và cổng của UDP cung cấp dịch vụ truyền dữ
tiến trình nhận. liệu theo từng nhóm byte
 Server xác định địa chỉ IP và (datagram) không tin cậy
cổng của bên gửi từ UDP
datagram nhận được.
UDP : dữ liệu truyền đi có thể
đến đích không theo đúng
thứ tự hay mất mát.

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

to network from network

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];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
2: Application Layer 62
Ví dụ Java Client (UDP)
Tạo datagram cùng
với dữ liệu,độ dài, DatagramPacket sendPacket =
địa chỉ IP, cổng new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Gửi datagram clientSocket.send(sendPacket);


tới server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Đọc datagram
clientSocket.receive(receivePacket);
gửi về từ server
String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}

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);

byte[] receiveData = new byte[1024];


byte[] sendData = new byte[1024];

while(true)
{

Tạo datagram DatagramPacket receivePacket =


new DatagramPacket(receiveData, receiveData.length);
Nhận serverSocket.receive(receivePacket);
datagram
2: Application Layer 64
Ví dụ về Java Server (UDP)
String sentence = new String(receivePacket.getData());

Nhận địa chỉ IP và InetAddress IPAddress = receivePacket.getAddress();


cổng của bên Gửi
int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

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 !

 Các yêu cầu của Dịch vụ tầng


 Các Giao thức đặc trưng:
Ứng dụng:
 Sự tin cậy, Băng thông, Độ
 HTTP
trễ.  FTP
 Mô hình Client - Server.  SMTP, POP3
 Các mô hình dịch vụ của tầng  DNS
giao vận trên Internet
 Hướng kết nối, tin cậy: TCP
 Lập trình Socket
 Không tin cậy, datagram:
UDP
 Giao tiếp client/server
 Sử dụng TCP, UDP socket

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

You might also like