You are on page 1of 108

Chng 2

Lp Application
Computer Networking:
A Top Down Approach
Featuring the Internet,
3rd edition.
Jim Kurose, Keith Ross
Addison-Wesley, July
2004.

Slide ny c bin dch sang ting Vit theo


s cho php ca cc tc gi

All material copyright 1996-2006


J.F Kurose and K.W. Ross, All Rights Reserved

Lp Application

Chng 2: Ni dung trnh by


2.1 Cc nguyn l ca

ng dng mng
2.2 Web v HTTP
2.3 FTP
2.4 Electronic Mail

SMTP, POP3, IMAP

2.5 DNS

2.6 Chia s file P2P


2.7 Lp trnh socket

viTCP
2.8 Lp trnh socket vi
UDP
2.9 Xy dng mt Web
server

Lp Application

Chng 2: Lp Application
Mc tiu:
Khi nim, cc kha
cnh hin thc ca
cc giao thc ng
dng mng
Cc m hnh dch
v lp transport
M hnh clientserver

M hnh peer-to-peer

Nghin cu giao thc

thng qua xem xt


mt s giao thc lp
application

HTTP
FTP
SMTP / POP3 / IMAP
DNS

Lp trnh ng dng

mng

socket API

Lp Application

Mt s ng dng mng
E-mail

in thoi Internet

Web

Hi tho video thi

Tin nhn nhanh

ng nhp t xa
Chia s file P2P

gian thc
Tnh ton ln, tnh
ton song song

Tr chi nhiu ngi

trn mng
Streaming cc video
clips

Lp Application

To mt ng dng mng
Vit chng trnh :

chy trn cc h thng u


cui khc, v
truyn thng qua mng
V d: Web: phn mm Web
server truyn thng vi
phn mm trnh duyt

application
transport
network
data link
physical

Phn mm nh vit cho cc


thit b trung tm mng

cc thit b trung tm mng


khng chy cc m ng dng
ca ngi dng
ng dng trn cc h thng
u cui cho php pht
trin ng dng nhanh, ph
bin

application
transport
network
data link
physical

application
transport
network
data link
physical

Lp Application

2.1 Cc nguyn l ca ng dng


mng

Lp Application

Cc kin trc ca ng dng


Client-server
Peer-to-peer (P2P)
Lai gia client-server v P2P

Lp Application

Kin trc client-server


server:

host lun hot ng


a ch IP c nh
nhm cc server chia
s cng vic

clients:

truyn thng vi server


c th kt ni khng lin
tc
c th c a ch IP thay
i
khng truyn thng trc
tip vi client khc

Lp Application

Kin trc P2P thun ty


khng c server lun

hot ng
truyn thng trc tip
vi h thng u cui bt
k
cc im kt ni khng
lin tc v thay i a
ch IP
V d: Gnutella
linh hot cao nhng kh
qun l
Lp Application

Lai gia client-server v P2P


Skype

ng dng in thoi Internet


Tm a ch ca thnh vin xa: server trung tm
Kt ni trc tip Client-client (khng thng qua server)

Tin nhn nhanh

Chat gia 2 user l P2P


M hnh client-server:
User ng k a ch IP ca h vi server trung tm khi trc
tuyn
User tip xc vi server trung tm tm a ch IP ca bn

Lp Application

10

Tin trnh truyn thng


Tin trnh: chng trnh
chy bn trong 1 host.
trong cng host, 2 tin
trnh truyn thng dng
truyn thng ni b (do
h iu hnh xc nh).
cc tin trnh trong cc
host khc nhau truyn
thng bng cch trao
i cc thng ip

Tin trnh Client: tin


trnh khi to truyn
thng
Tin trnh Server: tin
trnh ch c tip
xc
Ch : cc ng dng vi

kin trc P2P c c cc


tin trnh client v
server.
Lp Application

11

Sockets
cc tin trnh gi/nhn

cc thng ip n/t
socket ca n
socket tng t nh ca

tin trnh gi y thng


ip ra ngoi ca
tin trnh nhn ph thuc
vo h tng lu thng mang
thng ip n socket thch
hp

host /
server

Host /
server

process
socket
TCP vi
b m,
cc bin

iu khin
bi ngi
pht trin
ng dng

process
socket

Internet

TCP vi
b m,
cc bin

iu khin
bi h iu
hnh

API: (1) la chn giao thc vn chuyn; (2) kh nng

chnh sa mt vi tham s (xem phn sau)

Lp Application

12

Tin trnh nh a ch
nhn c thng

ip, tin trnh phi c


nh danh (identifier)
thit b host phi c a
ch IP duy nht
a ch IP m trn
tin trnh ang chy c
nhn dng tin
trnh?

KHNG, nhiu tin trnh


c th chy trn cng 1
host

nh danh bao gm c a

ch IP v cc s cng
(port) lin kt vi tin
trnh trn host.
V d v s port:

HTTP server: 80
Mail server: 25

gi thng ip HTTP

cho web server


gaia.cs.umass.edu :

IP address: 128.119.245.12
Port number: 80
Lp Application

13

nh ngha giao thc lp ng dng


cc kiu ca trao i

thng ip

V d: yu cu, p ng

C php thng ip:


Cc trng no trong
thng ip v cch thc
m t
Ng ngha thng ip
ngha ca thng tin
trong cc trng

Cc giao thc Publicdomain:


nh ngha trong RFC
Cho php cng tc
V d: HTTP, SMTP
Cc giao thc c quyn:
V d: KaZaA

Cc quy tc v thi gian

v phng thc cc
tin trnh gi v p ng
cc thng ip
Lp Application

14

Mt ng dng cn dch v vn chuyn no


Mt mt d liu
mt s ng dng (vd:
audio) c kh nng chu li
cc ng dng khc (vd:
truyn file, telnet) yu cu
d liu tin cy 100%

Thi gian
mt s ng dng (vd:
in thoi Internet,
tr chi tng tc) yu
cu tr thp t
hiu qu

Bandwidth (bng thng)


mt s ng dng (vd: a
phng tin) yu cu
bng thng t hiu
qu
cc ng dng khc mm
do hn c th dng bt
k bng thng no cng
c

Lp Application

15

Mt s yu cu i vi cc ng dng ph bin
Application
Truyn file
e-mail
Web
audio/video
thi gian thc
audio/video lu
Tr chi tng tc
Tin nhn nhanh

Data loss

Bandwidth

Time Sensitive

khng
khng
Khng
chu li

mm do
mm do
mm do
audio: 5kbps-1Mbps
video:10kbps-5Mbps
Nh trn
Mt vi kbps
mm do

khng
khng
khng
c, 100 mili giy

chu li
chu li
khng

c, mt vi giy
c, 100 mili giy
C v khng

Lp Application

16

Cc dch v giao thc vn chuyn Internet


TCP:
Hng kt ni: cn thit lp

tin trnh gia client v


server
Vn chuyn tin cy: gia tin
trnh gi v nhn
iu khin lung: ngi gi s
khng ln t ngi nhn
iu khin tc nghn: iu tit
ngi gi khi mng qu ti
Khng h tr: thi gian tc
th, bo m v bng thng ti
thiu

UDP:
truyn d liu khng tin

cy gia gi v nhn
Khng h tr: thit lp kt
ni, tin cy, iu khin
lung, iu khin tc nghn,
nh th, bo m bng
thng ti thiu
Th th sinh ra UDP lm
g?

Lp Application

17

Cc giao thc lp application, transport


Application
e-mail
Truy cp terminal t xa
Web
Truyn file
streaming multimedia
in thoi Internet

Giao thc lp
Application
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
c quyn
(vd: RealNetworks)
c quyn
(vd: Vonage,Dialpad)

Giao thc di lp
transport
TCP
TCP
TCP
TCP
TCP / UDP

UDP

Lp Application

18

2.2 Web v HTTP

Lp Application

19

Web v HTTP
Mt s thut ng chuyn mn
Web page (trang Web) bao gm cc objects (i
tng)
i tng c th l file HTML, hnh nh JPEG, Java
applet, file audio,
Trang Web file HTML c bn s cha mt s i
tng c tham chiu
Mi i tng c th nh a ch bng mt URL
V d URL:
www.someschool.edu/someDept/pic.gif
Tn host

Tn ng dn
Lp Application

20

Tng quan HTTP


HTTP: hypertext
transfer protocol
Giao thc lp ng dng ca

Web
M hnh client/server
Client: trnh duyt yu
cu, nhn v hin th cc
i tng Web
Server: Web server gi
cc i tng p ng
cho yu cu
HTTP 1.0: RFC 1945
HTTP 1.1: RFC 2068

PC chy
Explorer

Server
chy
Apache Web
server
Mac chy
Navigator

Lp Application

21

Tng quan HTTP


Dng TCP:
client khi to kt ni TCP

(to socket) n server, port


80
server chp nhn kt ni TCP
t client
Cc thng ip HTTP (thng
ip giao thc lp
application) trao i gia
trnh duyt (HTTP client) v
Web server (HTTP server)
ng kt ni TCP

HTTP l khng trng


thi
server khng gi thng

tin v cc yu cu trc
ca client

vn lin quan

Cc giao thc no gi trng


thi th phc tp!
lch s qu kh (trng thi)
phi gi li
nu server/client b s c,
cch nhn ca n v trng
thi mu thun, phi c
iu chnh
Lp Application

22

Cc kt ni HTTP
HTTP khng bn vng
Ch c ti a l mt i
tng c gi qua mt
kt ni TCP.
HTTP/1.0 dng HTTP
khng bn vng

HTTP bn vng
Nhiu i tng c th
c gi qua mt kt
ni TCP n gia client
v server.
HTTP/1.1 mc nhin
dng HTTP bn vng

Lp Application

23

HTTP khng bn vng


Gi s user nhp vo URL nh sau:
www.someSchool.edu/someDepartment/home.index

(cha text,
tham chiu n
10 hnh)

1a. HTTP client khi to kt ni

TCP n HTTP server (tin


trnh) ti www.someSchool.edu
trn port 80

2. HTTP client gi HTTP thng


ip yu cu (cha URL) vo
trong socket kt ni TCP.
Thng ip ch rng client
mun cc i tng
someDepartment/home.index

1b. HTTP server ti host

www.someSchool.edu ch kt
ni TCP ti port 80. chp
nhn kt ni, thng bo cho
client

3. HTTP server nhn thng ip


yu cu, nh dng thng ip
p ng cha i tng c
yu cu v gi thng ip vo
trong socket ca n

Thi gian
Lp Application

24

HTTP khng bn vng


4. HTTP server ng kt ni TCP.

5. HTTP client nhn thng ip

p ng cha file HTML, hin


th n. Phn tch c php html
file, tm ra 1 tham chiu n
i tng jpeg

time 6. Lp li cc bc t 1-5 cho cc


i tng jpeg khc

Lp Application

25

HTTP khng bn vng: thi gian p ng


nh ngha RTT: thi gian
gi mt gi nh i t
client n server v quay
khi to
li.
kt ni
Thi gian p ng:
TCP
RTT
yu cu
Mt RTT khi to kt
file
ni TCP
RTT
Mt RTT cho yu cu
nhn file
HTTP v mt vi byte u
tin ca p ng HTTP
c tr v
Thi gian
Thi gian truyn file
Tng cng = 2RTT+ Thi
gian truyn file

Thi
gian
truyn
file

Thi gian

Lp Application

26

HTTP bn vng
Vn vi HTTP khng bn
vng:
Yu cu 2 RTT mi i tng
H iu hnh lin quan n
mi kt ni TCP
Cc trnh duyt thng m
song song cc kt ni TCP
em v cc tham chiu n
cc i tng
HTTP bn vng
server m kt ni sau khi
gi p ng.
cc thng ip HTTP ca
cng client/server c gi
thng qua kt ni m

Bn vng khng c pipelining:


client pht ra yu cu mi
ch khi p ng trc
nhn xong
1 RTT cho mi i tng
tham chiu
Bn vng c pipelining:
mc nhin trong HTTP/1.1
client gi yu cu ngay sau
khi gp mt i tng tham
chiu
t nht 1 RTT cho tt c i
tng tham chiu

Lp Application

27

Thng ip yu cu HTTP
2 kiu thng ip HTTP: yu cu, p ng
Thng ip yu cu HTTP:
ASCII ( dng thc con ngi c th c c)
dng yu cu
(cc lnh GET, POST, GET /somedir/page.html HTTP/1.1
HEAD)
Host: www.someschool.edu
User-agent: Mozilla/4.0
cc dng Connection: close
header Accept-language:fr
k t xung dng,
(thm mt k t xung dng)
v u dng mi ch
im cui cng ca
thng ip

Lp Application

28

Thng ip yu cu HTTP: khun dng


tng qut

Lp Application

29

Ti ln form input
Phng php Post:
Web page thng cha
form input
Input c ti ln vo
server trong thn thc
th

Phng php URL:


Dng GET
Input c ti ln
trong trng URL ca
dng yu cu:

www.somesite.com/animalsearch?monkeys&banana

Lp Application

30

Cc kiu phng php


HTTP/1.0
GET
POST
HEAD

hi server mc i
tng yu cu m khng
p ng

HTTP/1.1
GET, POST, HEAD
PUT

ti ln file trong thn


thc th n ng dn
c xc nh trong
trng URL

DELETE
xa file c xc nh
trong trng URL

Lp Application

31

Thng ip p ng HTTP
dng trng thi
(giao thc
m trng thi
cm t trng thi)
cc dng
header

D liu, vd: file


HTML yu cu

HTTP/1.1 200 OK
Connection close
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 ...

Lp Application

32

Cc m trng thi p ng HTTP


Trong dng u tin ca thng ip p ng server->
client.
Mt s mu:
200 OK

yu cu thnh cng, i tng yu cu nm pha sau thng


ip ny

301 Moved Permanently

i tng yu cu di chuyn, v tr mi xc nh pha


sau thng ip ny (Location:)

400 Bad Request

thng ip yu cu server khng hiu

404 Not Found

ti liu yu cu khng c trong server

505 HTTP Version Not Supported

Lp Application

33

Kim tra HTTP (pha client)


1. Telnet n Web server a thch ca bn:
telnet cis.poly.edu 80

M kt ni TCP port 80
(port HTTP server mc nhin) ti cis.poly.edu.
Mi th nhp vo gi n
port 80 ti cis.poly.edu

2. Nhp vo yu cu trong lnh GET HTTP:


GET /~ross/ HTTP/1.1
Host: cis.poly.edu

Do nh lnh ny (enter 2 ln),


bn gi yu cu GET ti thiu
(nhng y ) n HTTP server

3. Xem thng ip p ng gi t HTTP server!


Lp Application

34

Kho st hnh ng ca HTTP


telnet
Ethereal

Lp Application

35

Trng thi User-server: cc


cookie
Nhiu Web sites dng
cc cookie
4 thnh phn:
1) cookie header line ca
thng ip p ng
HTTP
2) cookie header line
trong thng ip p
ng HTTP
3) cookie file lu trong
host ca user, qun l
bi trnh duyt ca user
4) c s d liu back-end
ti Web site

V d:

Susan truy cp Internet


lun t mt PC
C y ln u tin vo
mt e-commerce site
xc nh
Khi yu cu khi to
HTTP n site, site to
mt ID duy nht v to
mt im ng nhp
trong c s d liu backend cho ID

Lp Application

36

cc cookie: lu gi trng thi (tt.)


client
Cookie file

server

usual http request msg


usual http response +

ebay: 8734
Cookie file
amazon: 1678
ebay: 8734

Set-cookie: 1678
usual http request msg

cookie: 1678
usual http response msg

mt tun sau:
Cookie file

amazon: 1678
ebay: 8734

usual http request msg

cookie: 1678
usual http response msg

server
to ID
1678 cho user
cookiespecific
action
cookiespectific
action
Lp Application

37

cc cookie (tip)
Cc cookie em li:
s cp php
gi mua hng
cc khuyn co

trng thi phin lm vic

ca user (Web e-mail)

Lm th no gi trng
thi:

ngoi ra

cc cookie v s ring t:
cc cookie cho php
cc site bit nhiu hn
v bn
bn c th cung cp tn
v e-mail cho sites

cc thi im kt thc giao

thc: bo tr trng thi ti


sender/receiver thng qua
nhiu giao tc
cc cookie: trng thi mang
cc thng ip http

Lp Application

38

Web caches (proxy server)


Mc tiu: tha mn yu cu ca client khng cn lin quan

n server ngun
user thit lp trnh duyt:
truy cp Web thng qua
cache
trnh duyt gi tt c yu
cu HTTP cho cache

i tng trong cache:


cache tr v i tng
ngc li cache yu cu
i tng t server
ngun, sau tr v cho
client

server
ngun

client

client

Proxy
server

server
ngun
Lp Application

39

Web caching
Cache hot ng ti c

client v server
Tiu biu cache c ci
t bi ISP (trng hc,
cng ty, ISP ring)

Ti sao dng Web


caching?
Gim thi gian p ng cho

yu cu ca client
Gim lu thng trn lin kt
truy cp
Internet rt ng nghch vi
caches: cho php nhng
ngi cung cp ni dung
ngho nn phn pht hiu
qu ni dung (cng vy
i vi P2P file sharing)

Lp Application

40

V d Caching
Gi s
kch thc trung bnh i
tng= 100,000 bits
tc trung bnh yu cu t
trnh duyt n server = 15/s
tr t router ni gi yu
cu n server ngun ri quay
li = 2 s
Kt qu
kh dng ca LAN = 15%

servers
ngun
Internet
cng cng

1.5 Mbps
lin kt truy cp
network gi
yu cu

10 Mbps LAN

kh dng trn lin kt truy

cp= 100%
tng thi gian tr = tr Internet +
tr truy cp+ tr LAN = 2 s + cc
pht+ mili s

cache ni gi
yu cu
Lp Application

41

V d Caching (tip)
Gii php c th
tng bng thng truy cp ln,
v d 10 Mbps
Kt qu

servers
ngun
Internet
cng cng

kh dng ca LAN = 15%


kh dng trn lin kt truy cp

= 15%
tng thi gian tr = tr Internet +
tr truy cp+ tr LAN = 2 s + mili
s + mili s
thng tng chi ph

10 Mbps
lin kt truy cp
network gi
yu cu

10 Mbps LAN

cache ni gi
yu cu
Lp Application

42

V d Caching (tip)
servers
ngun

ci t cache

tc h tr l 0.4

kt qu

Internet
cng cng

40% yu cu s c tha

mn hu nh ngay lp tc
60% yu cu s c tha
mn bi server ngun
kh dng trn lin kt
truy cp gim n 60%, do
tr khng ng k (vd 10 mili
s)
tng thi gian tr = tr
Internet + tr truy cp+ tr
LAN = 0.6*(2.01) s +
0.4*mili s < 1.4 s

1.5 Mbps
lin kt truy cp
network
gi yu cu

10 Mbps LAN

cache ni
gi yu cu
Lp Application

43

GET c iu kin
Mc tiu: khng gi i tng

nu cache cp nht
cache: xc nh ngy ca bn
sao cache trong yu cu
HTTP:
If-modified-since:
<date>
server: p ng khng cha

i tng nu bn sao cache


cp nht:
HTTP/1.0 304 Not
Modified

server

cache
HTTP request msg
If-modified-since:
<date>

HTTP response

i tng
khng
sa i

HTTP/1.0
304 Not Modified

HTTP request msg


If-modified-since:
<date>

HTTP response
HTTP/1.0 200 OK

i tng
c
sa i

<data>
Lp Application

44

2.3 FTP

Lp Application

45

FTP: giao thc truyn file

user
ti host

giao din FTP


FTP
client
user

truyn file

FTP
server

h thng
file t xa

h thng
file
cc b

truyn file n/t host t xa


m hnh client/server

client: pha khi to truyn (n/t host xa)


server: host xa
ftp: RFC 959
ftp server: port 21

Lp Application

46

FTP: kt ni d liu, iu khin ring bit


kt ni iu khin TCP
port 21

FTP client tip xc FTP

server ti port 21, xc nh


TCP nh giao thc transport
Client ly giy php thng qua
kt ni iu khin
Client xem th mc xa bng
vic gi cc lnh thng qua kt
ni iu khin.
Khi server nhn lnh truyn
file, server m kt ni TCP
th 2 (cho file) n client
Sau khi truyn 1 file, server
ng kt ni d liu

FTP
client

kt ni d liu TCP
port 20

FTP
server

Server m kt ni d liu TCP

khc truyn file khc


iu khin kt ni: out of
band
FTP server gi li trng
thi: th mc hin hnh, giy
php trc

Lp Application

47

Cc lnh, phn hi FTP


V d cc lnh:

V d m tr v

gi nh vn bn ASCII trn

m trng thi v cm (nh

knh iu khin
USER username
PASS password

LIST tr v danh sch ca

file trong th mc hin


hnh

RETR filename trch chn

(ly) file

STOR filename lu (t)

file vo trong host xa

HTTP)
331 Username OK,
password required
125 data connection
already open;
transfer starting
425 Cant open data
connection
452 Error writing
file

Lp Application

48

2.4 Electronic Mail

Lp Application

49

Electronic Mail

outgoing
hng message
hp th user
user
agent

3 thnh phn quan trng:


user agents
mail servers

mail
server

SMTP

simple mail transfer

protocol: SMTP

User Agent
cn gi l mail reader
vit, sa i, c cc thng
ip mail
V d: Eudora, Outlook, elm,
Netscape Messenger
cc thng ip i v n
c lu trn server

SMTP
mail
server

user
agent

SMTP

user
agent
mail
server

user
agent

user
agent

user
agent

Lp Application

50

Electronic Mail: mail servers


user
agent

Mail Servers
mailbox (hp th) cha cc

thng ip n user
hng thng ip cho cc
thng ip email ra ngoi
(chun b gi)
giao thc SMTP gia cc
mail servers gi cc
thng ip email
client: mail server gi
server: mail server
nhn

mail
server

SMTP
SMTP
mail
server

user
agent

SMTP

user
agent
mail
server

user
agent

user
agent

user
agent

Lp Application

51

Electronic Mail: SMTP [RFC 2821]


dng TCP truyn tin cy thng ip email t client n

server trn port 25


truyn trc tip: server gi n server nhn
3 knh truyn
bt tay (cho hi)
truyn thng ip
ng
tng tc lnh/phn hi
lnh: vn bn ASCII
phn hi: m trng thi v cm

cc thng ip phi dng m ASCII 7-bit

Lp Application

52

Tnh hung: Alice gi cho Bob


4) SMTP client gi thng ip
ca Alice trn kt ni TCP
5) mail server ca Bob t
thng ip vo hp th ca
Bob
6) Bob kch hot trnh user
agent c thng ip

1) Alice dng UA vit thng


ip v gi n
bob@someschool.edu
2) UA ca Alice gi thng ip
ca c y n mail server;
thng ip c gia nhp
vo hng i
3) Pha Client ca SMTP m
kt ni TCP vi mail server
ca Bob
1
user
agent

mail
server
3

mail
server
4

user
agent

Lp Application

53

V d tng tc SMTP
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:

220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alice@crepes.fr>
250 alice@crepes.fr... Sender ok
RCPT TO: <bob@hamburger.edu>
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
Lp Application

54

Th nghim tng tc SMTP:


telnet servername 25
thy 220 tr li t server
nhp cc lnh HELO, MAIL FROM, RCPT TO,

DATA, QUIT
lnh trn cho php bn gi email khng cn dng email
client (reader)

Lp Application

55

SMTP
SMTP dng cc kt ni bn

vng
SMTP yu cu cc thng
ip (header & body) phi
dng thc 7-bit ASCII
SMTP server dng
CRLF.CRLF xc nh kt
thc thng ip

So snh vi HTTP:
HTTP: ko
SMTP: y

tt c u c tng tc

lnh/p ng, cc m trng


thi ASCII

HTTP: mi i tng c

ng kn trong thng ip
p ng ca n
SMTP: nhiu i tng c
gi trong thng ip nhiu
phn
Lp Application

56

Dng thc thng ip email


SMTP: giao thc cho trao i
cc thng ip email
RFC 822: chun cho dng thc
vn bn:
cc dng header, v d:
To:
From:
Subject:
khc vi cc lnh SMTP!

header

dng
trng

body

body

thng ip, ch c cc k
t ASCII

Lp Application

57

Dng thc thng ip: cc m rng


multimedia
MIME: m rng email multimedia, RFC 2045, 2056
cc dng b sung trong header ca thng ip khai bo

kiu ni dung MIME


phin bn MIME

phng php dng


m ha d liu
kiu, kiu con,
khai bo tham s
d liu multimedia
d liu m ha

From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data

Lp Application

58

Cc giao thc truy cp email


user
agent

SMTP

SMTP

mail server ca ngi gi

giao thc
truy cp

user
agent

mail server ca ngi nhn

SMTP: truyn dn/lu tr vo server ca ngi nhn

Giao thc truy cp email: trch xut t server

POP: Post Office Protocol [RFC 1939]


cp php (agent <--> server) v download
IMAP: Internet Mail Access Protocol [RFC 1730]
nhiu tnh nng (phc tp hn)
iu khin cc thng ip lu trn server
HTTP: Hotmail , Yahoo! Mail,
Lp Application

59

Giao thc POP3


giai on cp php
cc lnh pha client:

user: khai bo username


pass: password
cc p ng pha server
+OK
-ERR

giai on giao dch, client:


list: lit k cc s thng

ip
retr: trch xut thng ip
theo s
dele: xa
quit

S:
C:
S:
C:
S:

+OK POP3 server ready


user bob
+OK
pass hungry
+OK user successfully logged

C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:

list
1 498
2 912
.
retr 1
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
Lp Application

on

60

POP3 v IMAP
nghin cu thm v POP3
V d trc dng ch
ti xung v xa.
Bob khng th c li
email nu thay i
client
ti xung-v-gi: sao
chp cc thng ip
trn cc client khc
nhau
POP3 khng gi trng
thi ca cc phin lm
vic

IMAP
Gi tt c thng ip
ti 1 v tr: server
Cho php user t chc
cc thng ip theo
dng th mc
IMAP gi trng thi
xuyn sut cc phin
lm vic:

cc tn ca th mc v
nh x gia ID ca
thng ip v tn th
mc
Lp Application

61

2.5 DNS

Lp Application

62

DNS: Domain Name System


Con ngi: nhiu cch
nhn dng:

SSN, tn, #h chiu

Internet hosts, routers:

a ch IP (32 bit) dng


cho cc gi nh a ch
tn, v d:
www.yahoo.com dng
bi con ngi

nh x gia a ch IP v
tn?

Domain Name System:


c s d liu phn b hin thc

theo t chc phn cp ca


nhiu servers tn
giao thc lp application host,
routers, name servers
truyn thng vi cc tn phn
gii (a ch/dch ra tn)
lu : chc nng li
Internet, hin thc nh
giao thc lp application
phc tp bin mng

Lp Application

63

DNS
Cc dch v DNS
Tn Host chuyn thnh
a ch IP
B danh Host

cc tn ng chun v b
danh

B danh Mail server

Ti phn b
Cc Web server bn
sao: tp cc a ch IP
cho 1 tn ng chun

Ti sao khng tp trung ha


DNS?
mt im chu li
lu lng
khong cch c s d liu
tp trung
bo tr
khng linh hot!

Lp Application

64

C s d liu cu trc, phn b


DNS Servers gc

com DNS servers


yahoo.com
amazon.com
DNS servers DNS servers

org DNS servers


pbs.org
DNS servers

edu DNS servers

poly.edu
umass.edu
DNS serversDNS servers

Client mun IP cho www.amazon.com:


Client hi mt server gc (root) tm com DNS
server
Client hi com DNS server ly amazon.com DNS
server
Client hi amazon.com DNS server ly a ch IP
ca www.amazon.com
Lp Application

65

DNS: cc server tn gc
tip xc qua server tn cc b no khng th phn gii tn
server tn gc:

tip xc server tn c thm quyn nu nh x tn khng xc nh


ly nh x
tr v nh x n server tn cc b
a Verisign, Dulles, VA
c Cogent, Herndon, VA (also Los Angeles)
d U Maryland College Park, MD
k RIPE London (also Amsterdam,
g US DoD Vienna, VA
Frankfurt)
i Autonomica, Stockholm (plus 3
h ARL Aberdeen, MD
j Verisign, ( 11 locations)
other locations)
m WIDE Tokyo

e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA (and 17 other locations)

13 name servers
gc trn ton cu
b USC-ISI Marina del Rey, CA
l ICANN Los Angeles, CA

Lp Application

66

TLD v Server c thm quyn


Cc server Top-level domain (TLD) : chu

trch nhim cho tn min com, org, net, edu,


v cc tn min quc gia nh uk, fr, ca, jp.

Lnh vc gio dc cho edu TLD

Cc DNS server c thm quyn: DNS server

ca t chc, cung cp cc tn host c thm


quyn nh x IP cho server (v d: Web v
mail).

Khng th duy tr bi t chc hoc ngi cung cp


dch v

Lp Application

67

Server tn cc b
Khng hon ton theo cu trc phn cp
Mi ISP (ISP c nhn, cng ty, trng hc)

c mt server cc b nh vy.

cng gi l server tn mc nhin

Khi mt host to mt truy vn DNS, truy

vn c gi ti DNS server cc b ca
n

Hot ng nh mt proxy, chuyn truy vn vo


cho t chc phn cp

Lp Application

68

V d

DNS server gc

Host ti cis.poly.edu

mun a ch IP ca
gaia.cs.umass.edu

TLD DNS server

4
5

DNS server cc b
dns.poly.edu

host yu cu

DNS server c thm quyn


dns.cs.umass.edu

cis.poly.edu
gaia.cs.umass.edu
Lp Application

69

Cc truy vn
quy
truy vn quy:
y trch nhim phn

DNS server gc

gii tn cho server


tn tip xc c
ti qu nng?

truy vn tun t:
tn tip xc c

3
7

6
TLD DNS server

DNS server cc b
dns.poly.edu

tr li vi tn ca
1
8
server
Ti khng bit tn
, nhng c th hi
host yu cu
server ny
cis.poly.edu

DNS server c thm quyn


dns.cs.umass.edu

gaia.cs.umass.edu
Lp Application

70

DNS: caching v cp nht cc


record
mt khi server tn hc cch nh x, n cache nh

im ng nhp cache s thot ra (bin mt)


sau mt vi ln
TLD servers in hnh s c cache trong cc
server tn cc b

Do server tn gc s khng thng xuyn c


truy cp

c ch cp nht/thng bo bn di c thit k

bi IETF

RFC 2136

http://www.ietf.org/html.charters/dnsind-charter.html
Lp Application

71

Cc DNS record
DNS: c s d liu phn b lu tr cc record ti nguyn (RR)

dng thc RR: (name,


Type=A
name l tn host
value l a ch IP

value, type, ttl)

Type=CNAME
name l b danh ca tn
chun (tn thc)
www.ibm.com l tn thc

Type=NS
servereast.backup2.ibm.com
name l tn min (vd:
value l tn chun
foo.com)
value l tn host ca
Type=MX
server tn c thm quyn
value l tn ca email
cho tn min ny
server lin kt vi name
Lp Application

72

Giao thc v cc thng ip DNS


Giao thc DNS: cc thng ip truy vn v tr li, u
c cng dng thc thng ip
header thng ip
identification: 16 bit #

cho truy vn, tr li cho


truy vn dng cng #
flags:
truy vn hoc tr li
quy mong ch
quy sn sng
tr li c cp php

Lp Application

73

Giao thc v cc thng ip DNS


cc trng Name,
type cho 1 truy vn
cc RR trong p
ng cho truy vn
cc record cho cc
server c thm quyn
thng tin hu ch b
sung c th s dng

Lp Application

74

Chn cc record vo DNS


V d: mi to Network Utopia
ng k tn min networkuptopia.com ti mt

registrar (v d: Network Solutions)

Cn cung cp cho registrar tn v a ch IP ca server tn


c thm quyn (primary v secondary) ca bn
Registrar chn 2 RR vo trong com TLD server:

(networkutopia.com, dns1.networkutopia.com, NS)


(dns1.networkutopia.com, 212.212.212.1, A)

a vo trong server c thm quyn record Type A

cho www.networkuptopia.com v bn ghi Type MX cho


networkutopia.com
Lm sao ngi khc c th bit c a ch IP Web
site ca bn?
Lp Application

75

2.6 Chia s file P2P

Lp Application

76

Chia s file P2P


V d
Alice chy ng dng
P2P client trn my
tnh xch tay ca c
Kt ni khng lin tc
vo Internet; ly a
ch IP cho mi kt ni
Hi v Hey Jude
ng dng s hin th
nhng peer khc c bn
sao ca Hey Jude.

Alice chn 1 trong

nhng peer, l Bob.


File c sao chp t
my tnh ca Bob:
HTTP
Trong khi Alice ti
xung, cc user khc
ti ln t Alice.
Alice l 1 peer ng c
vai tr Web client v
Web server tm thi.
Tt c peer l server =
linh hot cao!
Lp Application

77

P2P: directory tp trung


u tin do Napster thit
k
1) khi peer kt ni, n
thng bo cho server
trung tm:

a ch IP
ni dung

2) Alice truy vn Hey


Jude
3) Alice yu cu file t Bob

Bob
directory server
trung tm

1
peers
1

1
2

Alice

Lp Application

78

P2P: cc vn vi directory tp trung


Mt im chu li
Hin tng tc nghn

c chai
Xm phm bn quyn

truyn file khng tp


trung nhng tm kim
ni dung th tp trung
cao

Lp Application

79

Trn ngp truy vn: Gnutella


hon ton phn b
khng c server tp
trung
giao thc tn min

chung
nhiu Gnutella client
hin thc giao thc

overlay network: th
c cnh gia peer X v
Y nu c 1 kt ni TCP
tt c cc peer ang
hot ng v cc cnh
l mng overlay
network
cnh khng phi l mt
lin kt vt l
peer s kt ni vi < 10
peer ln cn

Lp Application

80

Gnutella: giao thc


Truy vn thng

ip gi trn cc kt
ni TCP ang c
peer chuyn thng
ip truy vn
QueryHit
gi trn ng
ngc chiu

Truyn File:
HTTP
Truy vn
QueryHit

Truy vn
QueryHit

linh hot:
hn ch trn ngp
theo phm vi

Lp Application

81

Gnutella: hi t Peer
Hi t peer X phi tm mt s peer khc trong
Gnutella network: dng mt danh sch cc peer
d tuyn
2. X ln lt th to TCP vi cc peer trn danh sch
cho n khi kt ni thit lp c vi Y
3. X gi thng ip Ping n Y; Y chuyn thng ip
Ping.
4. Tt c cc peer nhn thng ip Ping s tr li
bng thng ip Pong
5. X nhn c nhiu thng ip Pong. N sau c
th thit lp thm cc kt ni TCP.
Peer leaving: xem mt s vn mng gia nh!
1.

Lp Application

82

KaZaA
Mi peer l mt hoc

c gn thnh ch huy
nhm

TCP kt ni gia peer v


nhm ch huy ca n
TCP kt ni gia mt s
cp nhm ch huy.

Nhm ch huy theo di

ni dung trong tt c
thnh vin bn trong

ordinary peer
group-leader peer
neighoring relationships
in overlay network

Lp Application

83

KaZaA: Truy vn
Mi file c mt bm (hash) hoc mt m t

Client gi t kha truy vn n nhm ch huy

ca n
Nhm ch huy p ng vi truy vn ca
nhm:

ng vi mi so trng: metadata, hash, a ch IP

Nu nhm ch huy chuyn truy vn cho nhm

khc, chng phn hi thch hp


Client sau chn cc file download

Cc yu cu HTTP dng hash nh mt nhn dng


gi n cho peer qun l file mong mun
Lp Application

84

KaZaA: cc th thut
Hn ch khi ti ln ng thi
Xp hng yu cu
Khch l u tin
ti xung song song

Tm hiu thm thng tin :


J. Liang, R. Kumar, K. Ross, Understanding KaZaA,
(Web site: cis.poly.edu/~ross)

Lp Application

85

2.7 Lp trnh socket viTCP

(xem thm slide Lp trnh


socket)

Lp Application

86

Lp trnh socket
Mc tiu: nghin cu cch xy dng ng dng truyn
thng client/server dng sockets
Socket API
c gii thiu trong

BSD4.1 UNIX, 1981


r rng ti, s dng v gii
phng bi ng dng
m hnh client/server
2 kiu dch v lu thng qua
socket API:
datagram khng tin cy
tin cy, truyn byte theo
streaming

socket
mt giao din host-cc b,
to bi ng dng,
iu khin bi h iu hnh
interface (mt ca)
trong tin trnh ng
dng c th gi v nhn
cc thng ip n/t cc
tin trnh khc

Lp Application

87

Lp trnh socket dng TCP


Socket: mt cnh ca gia tin trnh ng dng v giao
thc transport (UCP hoc TCP)
Dch v TCP: truyn tin cy cc bytes t mt tin
trnh n tin trnh khc
iu khin bi
ngi pht trin
ng dng
iu khin bi
h iu hnh

tin trnh

tin trnh
socket
TCP vi
b m,
cc bin

host hoc
server

internet

socket
TCP vi
b m,
cc bin

iu khin bi
ngi pht trin
ng dng
iu khin bi
h iu hnh

host hoc
server
Lp Application

88

Lp trnh socket vi TCP


Client phi tip xc vi server
tin trnh server phi chy
trc
server phi to socket (ca)
mi client n tip xc
Client tip xc server bng:
to socketTCP client cc b
xc nh a ch IP, s port
ca tin trnh server
Khi client to socket: client
TCP thit lp kt ni vi
server TCP

Khi c tip xc bi

client, server TCP to socket


mi cho tin trnh server
truyn thng vi client
cho php server ni
chuyn vi nhiu client
s port dng phn bit
cc client (xem tip trong
chng 3)

Nhn di gc ng dng
TCP cung cp vic truyn cc byte
tin cy v theo th t
gia client v server
Lp Application

89

Giao tip socket Client/server: TCP


Server (chy trn

Client

hostid)

create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP

wait for incoming


connection request connection
connectionSocket =
welcomeSocket.accept()
read request from
connectionSocket
write reply to
connectionSocket
close
connectionSocket

setup

create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket

read reply from


clientSocket
close
clientSocket
Lp Application

90

Thut ng Stream
keyboard

monitor

output
stream

inFromServer

tin
Process
trnh
Client

input
stream

outToServer

cc k t c chy vo
hoc ra khi mt tin trnh
Mt input stream ch
ngun vo ca mt tin
trnh, vd: bn phm hoc
socket.
Mt output stream ch
ngun ra ca mt tin trnh,
vd: mn hnh hoc socket.

inFromUser

Mt stream l mt chui

input
stream

client
TCP
clientSocket
socket
to network

TCP
socket

from network

Lp Application

91

Lp trnh socket dng TCP


V d ng dng client-server :

1) client c cc dng t input chun (inFromUser stream) , gi


n server thng qua socket (outToServer stream)
2) server c cc dng t socket
3) server chuyn cc dng thnh ch hoa, gi ngc tr li cho
client
4) client c, in cc dng sa i t socket (inFromServer
stream)

Lp Application

92

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;
to
input stream
to
client socket,
kt ni vo server
to
output stream
gn vo socket

BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("hostname", 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
Lp Application

93

V d: Java client (TCP)


to
input stream
gn vo socket

BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();

Gi dng
n server

outToServer.writeBytes(sentence + '\n');

c dng
t server

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

clientSocket.close();
}
}
Lp Application

94

V d: Java server (TCP)


import java.io.*;
import java.net.*;
class TCPServer {

to
socket mi tip xc
ti port 6789
Ch, client
tip cn vi
server
To input
stream, gn vo
socket

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()));
Lp Application

95

V d: Java server (TCP)


To output
stream, gn vo
socket

DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());

c dng
t socket

clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';

Vit dng ra
t socket

outToClient.writeBytes(capitalizedSentence);
}
}

kt thc vng lp while


quay li v ch cho
kt ni ca client khc

Lp Application

96

2.8 Lp trnh socket vi UDP

(xem thm slide Lp trnh


socket)

Lp Application

97

Lp trnh socket vi UDP


UDP: khng kt ni gia
client v server
khng bt tay
ngi gi r rng gn a ch
IP v port ca ch vo mi
gi
phi trch a ch IP, port
ca ngi gi t gi nhn
UDP: d liu truyn c th
khng theo th t, hoc b
mt mt

gc nhn ng dng

UDP cung cp vic truyn khng


tin cy
mt nhm cc byte (datagrams)
gia client v server

Lp Application

98

Giao tip socket Client/server: UDP


Server (chy trn hostid)
create socket,
port=x, for
incoming request:
serverSocket =
DatagramSocket()

read request from


serverSocket
write reply to
serverSocket
specifying client
host address,
port number

Client
create socket,
clientSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket

read reply from


clientSocket
close
clientSocket

Lp Application

99

V d: Java client (UDP)


input
stream

Client
Process
process

monitor

inFromUser

keyboard

Input: nhn gi

(cn gi l TCP
nhn dng byte)
UDP
packet

receivePacket

(cn gi l TCP
gi dng byte)

sendPacket

Output: gi gi
UDP
packet

client
UDP
clientSocket
socket
to network

UDP
socket

from network

Lp Application

100

V d: Java client (UDP)


import java.io.*;
import java.net.*;

to
input stream
to
client socket

dch
hostname thnh
a ch IP dng DNS

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();
Lp Application

101

V d: Java client (UDP).

to datagram vi
d liu gi,
di, a ch IP, port
gi datagram
n server

DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);

c datagram
t server

clientSocket.receive(receivePacket);
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
Lp Application

102

V d: Java server (UDP)


import java.io.*;
import java.net.*;

To
datagram socket
ti port 9876

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

To khng gian
nhn datagram

nhn
datagram

DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
Lp Application

103

V d: Java server (UDP)


String sentence = new String(receivePacket.getData());

ly a ch IP
port #, ca
ngi gi

InetAddress IPAddress = receivePacket.getAddress();


int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

to datagram
gi ti client

DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress,
port);

vit
datagram
vo socket

serverSocket.send(sendPacket);
}
}

kt thc vng lp while,


quay li v ch
datagram khc

Lp Application

104

2.9 Xy dng mt Web server

Lp Application

105

Xy dng 1 Web server n gin


qun l 1 yu cu HTTP
chp nhn yu cu
phn tch c php

header
ly file c yu cu t
h thng file ca server
to thng ip p ng
HTTP:

sau khi to server, bn

c th yu cu file
dng trnh duyt (v d:
IE)
xem gio trnh bit
thm chi tit

cc dng header + file

gi p ng n client

Lp Application

106

Chng 2: Tng kt
Tng quan mt s vn v ng dng mng!
Cc kin trc ng dng
client-server
P2P
lai
cc yu cu dch v:
tin cy, bandwidth, tr

cc giao thc c bit:


HTTP
FTP
SMTP, POP, IMAP
DNS
lp trnh socket

m hnh dch v Internet

transport

connection-oriented, tin
cy: TCP
khng tin cy, datagrams:
UDP
Lp Application

107

Chng 2: Tng kt
Phn quan trng: nghin cu v cc giao thc
trao i thng ip yu

cu/tr li in hnh:

client yu cu thng tin


hoc dch v service
server p ng vi d
liu, m trng thi

cc dng thng ip:


headers: cc trng cho
bit thng tin v d liu
d liu: thng tin
truyn thng

iu khin vi cc thng ip

d liu
in-band, out-of-band
tp trung v khng tp trung
khng trng thi v c trng
thi
truyn thng ip tin cy v
khng tin cy
s phc tp ca cc vn
lin quan n mng
Lp Application

108

You might also like