Quỏ trỡnh trao id l iu dựng StreamSocket

Một phần của tài liệu GIÁO TRÌNH MÔN HӐC MҤNG MÁY TÍNH (Trang 109)

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

}

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

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

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

DISC0NNECT User Data. Acknowledge orderly Release

NOT FINISHED User Data. Reject Orderly Release

ABORT Transport disconnect, Protocol Error

Code, User Data. Abnormal connection Release

ABORT ACCEPT Transport disconnect, Protocol ErrorCode, User Data. Acknowledge Abort

DATA TRANSFER Enclosure item,User Data. Transfer normal Data

EXPEDITED User data. Transfer typed data

CAPABILITY DATA ACK User Data. Acknowledge Capability data

GIVE TOKENS Tokens. Transfer tokens

PLEASE TOKENS Tokens , User Data. Request token Assignment

GIVE TOKENS CONFIRM - Transfer all tokens

GIVE TOKENS ACK - Acknowledge all tokens

MONOR SYNC POINT Confirm required flag, Serialnumber, User data. Define minor sync point

MINOR SYNC ACK Serial number, User Data. Acknowledge minor syncpoint

MAJOR SYNC POINT End of activity flag, Serial number,User Data. Define major sync point

MAJOR SYNC ACK Serial number,User data. Acknowledge major sync

Một phần của tài liệu GIÁO TRÌNH MÔN HӐC MҤNG MÁY TÍNH (Trang 109)

Tải bản đầy đủ (PDF)

(182 trang)