You are on page 1of 104

, ,

()


.
 (
)


(resource sharing)

.
,

:

,
,
,
Lost,
iTunes,

4

(CPU): ,
thin client,
SETI@home
: ,
(typesetters), drum scanners, , ..
: (proxy server), (file/DB
server)
: -11 (
)
:



, (.. ),
(.. web-banking)
, ..
, ..
, iTunes,
Lost
, file server

Internet

Host intranet

WAP
gateway

Wireless LAN

Mobile
phone
Laptop

Printer
Camera

Home intranet

Host site







.

;
;

;

10

:
RFID reader
RFID tag



(

.

11


 (context)

 :
 , , , , ,
, ,
,

 (context-aware
application):
 /


12

:

..

( )

13

:



(..

T



( )
14


= (
)






15



.
,


, ,
.



.
16





,

.
,


.

17






.

,
.

18

: e-mail

19



(, ,
)
.
,



, ,


20


(omission failure),
(arbitrary failure)
(timing failure).

21





.

()
.

(buffer)

.


.
22

23




,
.

:

.


.
, ,
.

24

25





.


.
:

,
,
,

26



:
/
.

27

client/server
To :

service: server
server: /

client: /

Directory server

client

Print server

File server

client
28

client/server

(client)

(server)

Client/Server

(proxy servers)
(caching)
(mobile code)
(mobile agents)
(network computers)
() (thin clients)
(fat clients)
30

31



-
.
,
,

.

:

,

.
32

(proxy servers)
(caching)

33

(proxy servers)
(caching)

-
(.. )
(..
) .



(.. cache ).




.
34

(proxy servers)
(caching)


.
, ,
.
,

,
,
, .

,
,
(..
HTML WAP).
35

(mobile code)


.

Java applets
.

,
.

36

(mobile code)
applet

O applet

37

(mobile code)
,



.

(push model)
, , .

,
.

38

(mobile agents)

( )

,
, ,
.

,

,

.

39

(mobile agents)
, (
)
,
, .



.

40

(network computers)
()
,
(.. )
RAM.
,
,
.

Java,
.

.
Sun Oracle
.
41

(thin clients)
H

,

.

,
,

,
.

42

(thin clients)


,
,
, .

,
,

,
,

(compute server).
43

44


,
PDAs
GSM, 3G,
WiFi Bluetooth.

-
.


,
.

45



()


.

(service discovery)

.

46

47

3-
client/server 2 (2-tier architecture).
2-


, ,
DNS Internet
Domain Names .

, :

(web crawlers)

:
( )
()

3-
client-server 3-
, ,
.

( )

( )

( )

Web ,
Web Server


DB Server.
49

3-

50

3-


()

-
:



:
Google: web
: URL,
: HTML,
: ,
,

: ,
, ..



.. Wikipedia
OpenOffice



:
..
( ...)

3-


legacy

(
)

55

3-

56

-tier

Java
application
server

web
server

load
balancer

firewall

client

firewall

multi-tiered

database

Object
Store

Gartner Group
-

58


thin client .
H
,

.
,
GUI
.
-11
Window System Unix , Virtual Network Computer
& Labs, Remote Desktop Protocol Microsoft, ..
screenscraping (emulation-based)
(legacy systems) textbased windows-based .
(dumb
terminals).
59



.
thin client .


, ,
.
on-line
transaction , (ftp, telnet,
..) Web Web
browsers.

60




(application logic) .


(.. ).


.
Web
( ) ,
, Java applet.

61


fat-client
PC.

.
(DB2, Oracle, Informix, ..)
client/server

.
(Network File Systems)
.

(Decision Support System)
,
.

62




.
fat-client
(cache)
.

(.. NFS)
.
63


(Peer-to-Peer)


(, )

: Napster,
Gnutella, FastTrack, Kontiki,
Osiris, Skype)
64



,
( ).
(.. )
, ,
.
,
,
.

,
.
,
, ,

.
65

CLIENT/SERVER

66

header.h
header.h
/* definitions needed by clients and servers.*/
#define MAX_PATH 255 /* maximum length of a file name */
#define BUF_SIZE
1024 /* how much data to transfer at once */
#define FILE_SERVER 243 /* file servers network address */
/* definitions of the allowed operations. */
#define CREATE
1 /* create a new file */
#define READ
2 /* read a piece of a file and return it */
#define WRITE
3 /* write a piece of a file */
#define DELETE
4 /* delete an existing file */

header.h
/* Error codes. */
#define OK
#define E_BAD_OPCODE
#define E_BAD_PARAM
#define E_IO

0
1
2
3

/* operation performed correctly */


/* unknown operation requested */
/* error in a parameter */
/* disk error or other I/O error */

header.h
/* Definition of the message format. */
struct message {
long source; /* senders identity */
long dest; /* receivers identity */
long opcode; /* which operation: CREATE, READ, etc. */
long count; /* how many bytes to transfer */
long offset; /* where in file to start reading or writing */
long extra1; /* extra field */
long extra2; /* extra field */
long result; /* result of the operation reported here */
char name[MAX_PATH]; /* name of the file being operated on */
char data[BUF_SIZE]; /* data to be read or written */
};

server
#include <header.h>
void main(void)
{
struct message m1, m2; /* incoming and outgoing messages */
int r;
/* result code */
while (1) { /* server runs forever */
receive(ANY, &m1); /* block waiting for a message */
switch(m1.opcode) { /* dispatch on type of request */
case CREATE:
r = do_create(&m1, &m2); break;
case READ:
r = do_read(&m1, &m2); break;
case WRITE:
r = do_write(&m1, &m2); break;
case DELETE:
r = do_delete(&m1, &m2); break;
default:
r = E_BAD_OPCODE;
}
m2.result = r; /* return result to client */
send(m1.source, &m2); /* send reply */
}
}

client
#include <header.h>
int copy (char *src, char *dst) { /* procedure to copy file using the server */
struct message m1; /* message buffer */
long position;
/* current file position */
long client = 110;
/* clients address */
initialize(); /* prepare for execution */
position = 0;

client
do { /* get a block of data from the source file. */
m1.opcode = READ; /* operation is a read */
m1.offset = position; /* current position in the file */
strcpy(&m1.name, src); /* copy name of file to be read to message */
send(FILE_SERVER, &m1); /* send the message to the file server */
receive(FILE_SERVER, &m1); /* block waiting for the reply */
/* write the data just received to the destination file. */
m1.opcode = WRITE; /* operation is a write */
m1.offset = position; /* current position in the file */
m1.count = m1.result; /* how many bytes to write */
strcpy(&m1.name, dst); /* copy name of file to be written to buf */
send(FILE_SERVER, &m1); /* send the message to the file server */
receive(FILE_SERVER, &m1); /* block waiting for the reply */
position += m1.result; /* m1.result is number of bytes written */
} while (m1.result > 0); /* iterate until done */
return (m1.result >=0 > OK: m1.result); /* return OK or error code */
} /* copy */

73




:
,
,
,
,
()

,
,

.
74


,
,
.
, :
(.., Ethernet, Token Ring, FDDI)

(.., Big Endian, Little Endian)
(.., Unix, MAC OS, MS Windows)

(.., Java,
C++, Python)

75


TCP/IP (
)
.
(middleware)
.


,
,
.
,



76




:
,
,
,
,
()

,
,

.
77



.
(..
)
,
.

.

.

(.. )
.
,
, .
78



:

,


+ +
+
:
,

:



:
,
,




:
,
,
,
,
()

,
,

.
81



,
.
, ,

.

.


.


.
82



,

.

(access rights)
.



.

(secure channel)
.
Virtual Private Networks Secure Sockets Layer
.
83




:
,
,
,
,
()

,
,

.
84


.
,
,
.


.


.
,
,
.


.
85


:
:
:

: ,


,







..

() :

(.. )


(.. 12:00 )


--



/ /

, , ...

;
,

..

...

... ;

..
,
, applets,
...
!




, ,



:






, ..

, /




: DNS
, ()
server

web ()



,
, (
)
:
, , /


,
, (.. )




:
,
,
,
,
()

,
,

.
94





.


.

, .




.
95



, .
,


.

,

.

.
(redundancy)
.
96



.
.

(omission failure),
(arbitrary failure),
(timing failure).


;

.

97




:
,
,
,
,
()

,
,

.
98




.


.
,


, .. ,

.
99




( ).

.
(amount)
( PIN myPIN)

(thread) .
.
1. case CMD_WITHDRAW:
2.
Account sessionAcc = getSessionAccount(myPIN); // Account
3.
String result = sessionAcc.withdraw(amount); //
4.
saveSessionAccount(sessionAcc); //
5.
break;

100


To : (1 2)
()
, 5000,
3000 4000
.
.
(race condition)


,
.
To

.
101




:
,
,
,
,
()

,
,

.
102




,

.
:



(
, IP )


,
103




,

,

,









104

You might also like