Mụ hỡnh giao tip Client/Server

Một phần của tài liệu Gáip Trình quản trị mạng Máy tính (Trang 109)

TCP/IP ph thu c vào khỏi ni m mỏy khỏch (Client) và mỏy ch (Server). Thu t ng Server dựng ch nh ng ch ng trỡnh cung c p cỏc d ch v thụng qua ng. Cỏc Server nh n m nhi m ch c n ng ỏp ng cỏc yờu c u c a mỏy khỏch, th c hi n vi c ph c v và tr l i k t qu . Thu t ng Client dựng ch cỏc ch ng trỡnh ng d ng g i cỏc yờu c u n Server và ch k t qu tr v .

Cỏc ch ng trỡnh Client và Server th ng th c thi trờn cỏc mỏy khỏc nhau. i ch ng trỡnh Server cú th cựng ỏp ng cho nhi u ch ng trỡnh Client trờn nhi u mỏy tớnh khỏc nhau cựng m t lỳc.

7.5.1 Quỏ trỡnh trao i d li u dựng Stream Socket

Stream socket d a trờn n n giao th c TCP ũi h i ph i t o m t k t n i tr c khi hai bờn cú th truy n ho c nh n d li u cho nhau. Stream Socket cung c p m t dũng cỏc byte d li u khụng cú phõn cỏch cú th truy n hai chi u. Cỏc dũng d li u cú th tin c y c phõn phỏt tu n t , d li u khụng trựng l p, ngh a là cỏc gúi d li u c phõn phỏt theo th t c phỏt, và m i l n ch cú m t gúi riờng bi t

c truy n. Mỏy C Mỏy B hi u c ng ngu n 350, c ng ớch là 23 hi u c ng ngu n 351, c ng ớch là 23 hi u c ng ngu n 352, c ng ớch là 23 Mỏy A Mỏy ớch

ng socket này r t thớch h p v i mụ hỡnh Client/Server. Server s t o m t socket, gỏn cho nú m t tờn (cung c p m t a IP c a mỏy và m t port giao ti p), và i client n i k t n socket. Bờn client c ng t o m t socket và n i k t n tờn socket trờn server. Khi server phỏt hi n cú yờu c u k t n i t client, nú s t o m t socket m i và s d ng socket m i ú giao ti p v i client. Socket c ti p t c i

t n i t cỏc client khỏc.

trao i d li u gi a Client/Server b ng cỏch dựng Socket c bi u di n nh sau : Start connect() send()/recv() socket() Kết thúc close() CLIENT socket() bind() Start End Wait for connections from clients accept() send() / recv() listen() close() SERVER

Hỡnh 7-8. S trao i d li u gi a Client/Server b ng StreamSocket.

7.5.2 Quỏ trỡnh trao i d li u dựng Datagram Socket

Datagram Socket d a trờn giao th c UDP khụng ũi h i ph i thi t l p m t k t i tr c khi truy n và nh n d li u. D li u ch là m t gúi n, vỡ v y d ng socket này th ng dựng truy n cỏc m u tin, khụng c n nhi u cỏc header l p ng d ng. ng socket này cung c p lu ng d li u khụng b o m theo th t ho c khụng b trựng l p, khụng b o m d li u s n c n i nh n. D li u cú th n khụng theo th t c phỏt và cú kh n ng b trựng l p. Nh ng s phõn cỏch gi a cỏc

u tin thỡ c duy trỡ. Trong m ng LAN datagram cú kh n ng tin c y t ng i t, nh ng trong m ng WAN, nh m ng Internet thỡ khụng c m b o.

Đ u client/server s d ng giao th c UDP

socket() bind() Start End send() / recv() close() SERVER Start send()/recv() socket() End close() CLIENT

Hỡnh 7-9. S trao i d li u gi a Client/Server b ng DatagramSocket.

7.5.3 Vớ d ch ng trỡnh client/server

Trong vớ d d i õy ch ng trỡnh server th c hi n cỏc b c thi t l p cho vi c ch i m t k t n i t ch ng trỡnh client. Sau khi thi t l p k t n i v i client, c hai th c hi n m t s thao tỏc truy n và nh n thụng tin r i k t thỳc ch ng trỡnh.

7.5.3.1 l nh ch ng trỡnh Server

- T o ra m t socket v i hàmsocket().

- Ràng bu c socket v i m t a ch b ng hàmbind ().

- Dựng hàmlisten() ch i m t k t n i.

- Nh n b t k thụng tin nào yờu c u k t n i b ng hàmaccept().

- Nh n cỏc thụng bỏo g i n b ng hàmread()và g i thụng bỏo n client b ng hàmwrite().

-

/* mksock.c make and bind to a socket - userver*/

#include<stdio.h> #include<sys/socket.h> #include<sys/un.h> #include<unistd.h> void die(char * message); void copyData(int from, int to);

int main(void) {

struct sockaddr_un address; int sock,conn; size_t addrLength; if ((sock=socket(PF_UNIX,SOCK_STREAM,0))<0) die("socket"); /*unlik("./sample_socket");*/ address.sun_family=AF_UNIX; strcpy(address.sun_path,"./sample_socket"); addrLength=sizeof(address.sun_family)+strlen(address.sun_path); if(bind(sock,(struct sockaddr *)&address,addrLength))

die("bind"); if(listen(sock,5)) die("listen"); while((conn=accept(sock,(struct sockaddr*)&address,&addrLength))>=0) { printf("---getting data\n"); copyData(conn,1); printf("---done\n"); close(conn); } if (conn<0) die("accept"); close(sock); return 0; }

void die(char * message){ perror(message); exit(1);

} (adsbygoogle = window.adsbygoogle || []).push({});

void copyData(int from,int to){ char buf[1024]; int amount; while ((amount=read(from,buf,sizeof(buf)))>0){ if(write(to,buf,amount)!=amount){ die ("write"); return; } } if (amount<0) die("read"); } 7.5.3.2 l nh ch ng trỡnh client

ch ng trỡnh client , th c hi n c m t k t n i n server và truy n nh n thụng tin ch c n th c hi n 2 b c c b n nh sau:

- T o m tsocket() ng ng v i ch ng trỡnhserver th .

- Yờu c u n server th c hi n k t n i b ng cỏch g i hàmconnect().

u m t k t n i c t o ra, client cú th g i yờu c u b ng hàm write() và nh n cỏc ỏp ng ph n h i b ng hàmread().

/* sockconn.c - connect to a socket - uclient*/

#include<sys/socket.h> #include<sys/un.h> #include<unistd.h> void die (char * message);

void copyData(int from, int to);

int main(void){

struct sockaddr_un address; int sock;

size_t addrLength;

if ((sock=socket(PF_UNIX,SOCK_STREAM,0))<0) die("socket"); address.sun_family=AF_UNIX;

strcpy(address.sun_path,"./sample_socket");

addrLength=sizeof (address.sun_family) + strlen(address.sun_path); if(connect(sock,(struct sockaddr *)& address,addrLength)) die("connect"); copyData(0,sock);

close(sock); return 0; }

void die(char * message){ perror(message); exit(1);

}

void copyData(int from, int to){ char buf[1024]; int amount; while ((amount=read(from,buf,sizeof(buf)))>0){ if(write(to,buf,amount)!=amount) { die("write"); return; } } if (amount<0) die("read"); } --- BÀI T P 1. Tỡm hi u cỏc mụ t Socket và c u trỳc d li u c a socket mà h u hành p phỏt l u tr cỏc thụng tin c n thi t cho k t n i m ng.

2. Tỡm hi u cỏc th vi n l p trỡnh WinSock trờn h u hành Windows. 3. Vi t cỏc ch ng trỡnh giao ti p Client/Server theo mụ hỡnh giao ti p

Ch ng 8 NG PHIấN

ng phiờn (Session Layer) làm nhi m v t ch c và ng b s chuy n i li u gi a cỏc ti n trỡnh ng d ng khỏc nhau. T ng Phiờn làm vi c v i t ng ng ng cung c p cỏc t p d li u, c g i là cỏc m ng b , cỏc m này cho phộp m t ng d ng bi t quỏ trỡnh truy n và nh n d li u c th c hi n nh th nào.

ng phiờn ch u trỏch nhi m thi t l p và duy trỡ m t phiờn truy n thụng gi a hai tr m ho c nỳt m ng. M t phiờn truy n thụng qua m t m ng ho t ng cú ph n gi ng v i m t cu c g i qua cỏc ng dõy n tho i. T ng Phiờn c g ng thi t l p t phiờn truy n thụng gi a hai nỳt trờn m t m ng. C hai nỳt u th a nh n phiờn truy n thụng này th ng s c gỏn m t s hi u nh n di n. M i nỳt cú th ng t phiờn truy n thụng gi a hai nỳt trờn m t m ng c g i là t c ng lu n lý

(Socket). Khi m t phiờn truy n thụng c thi t l p, m t c ng lu n lý s c m ra. M t phiờn truy n thụng c k t thỳc c g i là t c ng lu n lý b úng

(Close Socket).

c tiờu c a t ng phiờn là cú kh n ng cung c p cho ng i s d ng cỏc ch c ng c n thi t qu n lý cỏc phiờn ng d ng c th nh :

- u ph i vi c trao i d li u gi a cỏc ng d ng b ng cỏch thi t l p và gi i phúng (m t cỏch logic) cỏc phiờn (hay g i là cỏc h i tho idialogues).

- Cung c p cỏc m ng b húa ki m soỏt vi c trao i d li u.

- ỏp t cỏc qui t c cho cỏc t ng tỏc gi a cỏc ng d ng c a ng i s d ng. - Cung c p c ch l y l t (n m quy n) trong cỏc quỏ trỡnh trao i d li u.

Trong t ng phiờn thỡ v n ng b húa c th c hi n t ng t nh m t c ch ki m tra / ph c h i (check point/reset).Trong m t h qu n tr t p tin, d ch v này cho phộp ng i s d ng xỏc nh cỏc m ng b húa trong dũng d li u và cú th khụi ph c l i vi c h i tho i b t u t m t trong cỏc m ú.

8.1 D ch v OSI cho t ng Phiờn (adsbygoogle = window.adsbygoogle || []).push({});

ng phiờn làm vi c qu n lý cỏc cu c tho i gi a hai mỏy tớnh b ng cỏch thi t p, qu n lý, và k t thỳc cỏc phiờn truy n thụng.

8.1.1 Cung c p cho ng i s d ng d ch v t ng phiờn (SS-user)

- Thi t l p m t liờn k t v i m t ng i s d ng d ch v t ng phiờn khỏc, trao i li u v i ng i s d ng ú m t cỏch ng b và h y b liờn k t m t cỏch cú tr t t khi khụng dựng n n a.

- Th ng l ng v vi c dựng cỏc th bài (TOKEN) trao i d li u, ng b húa và h y b liờn k t ,s p x p ph ng th c trao i d li u (half-duplex ho c full-duplex).

- Thi t l p cỏc m ng b húa trong cỏc h i tho i và khi x y ra s c thỡ cú th khụi ph c l i vi c h i tho i b t u t m t m ng b húa ó th a thu n.

- Ng t h i tho i và khụi ph c l i h i tho i sau ú t m t m xỏc nh tr c. Cỏc d ch v xỏc nh m ng b húa là nh m vào hai m c ớch :

1) Cỏc m ng b húa cú th phõn tỏch cỏc ph n c a m t h i tho i. 2) Cỏc m ng b húa cú th dựng ph c h i l i.

Cỏc m ng b húa chớnhdựng c u trỳc quỏ trỡnh trao i d li u thành t chu i cỏc n v h i tho i (dialogue), m i m này ph i c xỏc nh n và ng i s d ng s b h n ch trong m t s d ch v nh t nh cho t i khi nh n c t s xỏc nh n m i. M t m ng b húa chớnh c dựng tỏch bi t cỏc hai n v h i tho i liờn ti p.

Cỏc m ng b húa ph c dựng c u trỳc quỏ trỡnh trao i d li u trong m t n v h i tho i, và cỏc m này khụng c n ph i c xỏc nh tr c.Vi c dựng cỏc m ng húa ph trong quỏ trỡnh truy n t p nú s ng n ch n vi c truy n l i d li u v i m t kh i l ng l n

t n v h i tho i là m t Activity (hành ng) nguyờn t trong ú m i hành ng truy n thụng khụng cú liờn quan gỡ n b t k m t ho t ng truy n thụng nào tr c và sau ú. M t hành ng bao g m nhi u n v h i tho i, và õy c ng chớnh là m t t p h p logic cỏc nhi m v liờn quan v i nhau; m t th i m thỡ ch cú t activity trờn m t liờn k t phiờn nh ng m t activity thỡ cú th di n ra trờn nhi u liờn k t phiờn, nú cú th b ng t và sau ú cú th khụi ph c l i trong m t liờn k t phiờn khỏc, m t vũng i c a m t liờn k t phiờn thỡ cú th cú nhi u Activity liờn ti p.

8.1.2 u khi n trao i d li u

Vi c trao i d li u x y nh sau th c hi n m t trong ba ph ng th c nh sau : hai chi u ng th i (full-duplex), hai chi u luõn phiờn (haft -duplex), m t chi u (simplex).

8.1.2.1 Trao i d li u m t chi u

Liờn quan n cỏc t chuy n giao d li u m t chi u. Bỏo chỏy là m t vớ d , nú g i m t thụng p bỏo ng n tr m ch ng chỏy, nh ng khụng th (và khụng

n) nh n cỏc thụng p t tr m ch ng chỏy.

i ph ng th c m t chi u thỡ ớt x y ra: ch ng h n nh d li u c g i n t i t ng t m th i khụng làm vi c, thỡ ch cú m t ch ng trỡnh nh n v i m t nhi m v duy nh t là ti p nh n d li u n và gi l i.

8.1.2.2 Trao i d li u hai chi u luõn phiờn

Liờn quan n cỏc t chuy n giao d li u hai chi u, ú cỏc lu ng d li u i l n i theo m i h ng. Khi m t thi t b hoàn t t m t phiờn truy n, nú ph i " tr i " v t t i cho thi t b kia n phiờn thi t b ú c truy n.

i ph ng th c luõn phiờn hai chi u thỡ n y sinh cỏc v n nh sau :

- Cỏc i t ng s d ng phiờn ph i “l y l t” truy n d li u ( n hỡnh c a ph ng th c này là dựng cho cỏc ng d ng h i ỏp).

- Th c th t ng phiờn(session entity) duy trỡ t ng tỏc luõn phiờn b ng cỏch bỏo cho cỏc i t ng khi n l c h s truy n d li u.

8.1.2.3 Trao i d li u hai chi u ng th i.

Cho phộp ti n hành cỏc t chuy n giao d li u hai chi u ng th i b ng cỏch cung c p cho m i thi t b m t kờnh truy n thụng riờng bi t. n tho i ti ng là nh ng thi t b song cụng y , và m t trong hai bờn c a m t cu c àm tho i cú th núi b t k lỳc nào. H u h t cỏc mụ em mỏy tớnh u cú th ho t ng theo ch

song cụng y .

Ch truy n thụng bỏn song cụng cú th d n n tỡnh tr ng b ng thụng b lóng phớ trong quóng th i gian mà t truy n thụng ang quay tr . Trong khi ú, ch

truy n thụng song cụng y th ng yờu c u m t ban thụng l n h n so v i ch truy n thụng bỏn song cụng

i ph ng th c hai chi u ng th i thỡ c hai bờn cựng ng th i g i d li u cựng m t lỳc, m t khi ph ng th c này ó c th a thu n thỡ khụng ũi h i ph i cú nhi m v qu n tr t ng tỏc t bi t õy c ng là m t ph ng th c ph bi n nh t.

8.1.3 u hành phiờn làm vi c

Phiờn làm vi c (session) là m t cu c tho i chớnh th c gi a m t bờn yờu c u dich v và m t bờn cung c p d ch v . Cỏc phiờn b n làm vi c th ng cú ớt nh t ba giai n :

Thi t l p tuy n liờn k t : Bờn yờu c u d ch v s yờu c u kh i phỏt m t d ch . Trong quỏ trỡnh xỏc l p, phiờn truy n thụng c thi t l p và cỏc quy t c (adsbygoogle = window.adsbygoogle || []).push({});

c tho thu n.

Chuy n giao d li u : Do cỏc quy t c c tho thu n trong khi xỏc l p, nờn i bờn c a cu c tho i s bi t n i dung mong i. Phiờn truy n thụng s h u hi u và cỏc l i c ng d phỏt hi n.

Gi i phúng cỏc k t n i : Khi hoàn t t phiờn làm vi c, cu c tho i k t thỳc trong tr t t .

8.1.4 Liờn k t phiờn

ng Phiờn th c hi n t t ng ng liờn k t phiờn v i cỏc liờn k t giao v n. Trong m t quỏ trỡnh liờn k t cú th x y ra 2 tr ng h p :

1. M t liờn k t giao v n thi t l p v i nhi u liờn k t phiờn liờn ti p : Liờn k t Phiờn

Liờn k t Giao v n

2. Nhi u liờn k t giao v n s d ng cựng m t liờn k t phiên:

Liờn k t Phiờn Liờn k t Giao v n

Ký hi u : : Thi t l p liờn k t : Gi i phúng liờn k t

8.2 Giao th c chu n t ng phiờn

Giao th c chu n t ng phiờn s d ng t i 34 lo i n v d li u (SPDU) khỏc nhau,và cú khuụn d ng t ng quỏt nh sau :

Trong ú :

• SI: nh danh c a lo i SPDU (m t trong 34 lo i)

L PARAMETERS USER DATA

Time Time

• LI(length indicator): Ch dài c a vựng tham s (parameters)

• PARAMETERS: vựng khai bỏo cỏc tham s SPDU, m i lo i SPDU cú danh sỏch tham s riờng. M i tham s c khai bỏo d i d ng t ng quỏt g m 3 vựng con : parameter identifier, length indecation, parameter value và chỳng c g i theo n v pi ho c PGI (m i n v PGI g m cú 3 vựng con: PGI, LENGTH INDICATION, PARAMETER VALUE).

• User data: ch a d li u c a ng i s d ng.

8.2.1 Cỏc lo i SPDU, cỏc tham s và ch c n ng

SPDU PARAMENTERS FUNCTION

CONNECT

Connection ID, Protocol Options, Version Number, Serial Number, Token setting, Maximum TSDU size, Requirements, Calling SSAP, Called SSAP, User Data.

Initiate session Connection

ACCEPT Same as CONNECT SPDU. Etablist SESSIONCONNECTION

REFUSE Connection ID, Transportdisconnect, Requirements, Version

number, Season. Reject connection request

FINISH Transport Disconnect, User Data. Initiate Orderly Release

Một phần của tài liệu Gáip Trình quản trị mạng Máy tính (Trang 109)