linux client-server overview
Post on 26-Feb-2018
241 Views
Preview:
TRANSCRIPT
-
7/25/2019 Linux Client-Server Overview
1/37
EE 367LClient Server Lab
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
2/37
Outline Big piture
Client server para!ig"
#e"ote $le server Linu% operations
How to all a Linu% o""an! fro" a progra" e%e& '
How to get t(e output of a Linu% o""an! ) pipes How to all operations fro" a progra" for*& ' an! wait& '
+roesses
#e"ote $le server Client
#e"ote server
So*ets
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
3/37
Server
University of Hawaii EE 367L
-nternet&Clou!'
Stdin
Stdout
socket socket
> lsa.outhello.chello
Server
-
7/25/2019 Linux Client-Server Overview
4/37
Client Server +ara!ig"
University of Hawaii EE 367L
Client
Serve&e/g/0 wi#euest servie&sen! o""an!'e/g/0 ls0 at0 "ov
#eplies to reueste/g/0 !ata t(at satis$est(e reuest
Listening for ran! t(en re
-ssues o""an!sfor servie
-
7/25/2019 Linux Client-Server Overview
5/37
Linu% o""an!s
Linu% o""an!s are e%eute! by software provLinu%
Syste" alls2 e%a"ples2 ls0 r"0 at0 ////
Lets suppose you wante! to write a progra" t(t(e ontents of your urrent !iretory on t(e pan
!isplay How !o you i"ple"ent 4ls5 fro" a progra"
Option 12 Use very basi syste" alls0 e/g/0 open&'0 wrea!& '0 to e"ulate 4ls5/ (is is basially writing t(e sfro" srat(
Option ,2 8ou an all 4ls5 using e%e& '0 or one of itsvariations University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
6/37
e%el
Useful w(en you want to write a progra" : t(at Linu% o""an!s su( as 4r"50 4ls50 4p5
e%el an be use! to all t(ese o""an!s -t overwrites t(e e%isting proess wit( anot(er progra"
E%a"ple2 e%el&4;bin;ls50 4ls50 4)l50 &(ar ?irst para"eter is t(e progra" t(at overwrites t(e urrent pr
(e ne%t para"eters are w(at woul! nor"ally be type! by a
user2 ls )l Seon! para"eter is t(e $rst argu"ent in t(e argu"ent list0 i/e/
(ir! para"eter is t(e seon! para"eter in t(e argu"ent list0 i/
?ourt( para"eter in!iates t(ats t(e en! of t(e argu"ent list spara"eter list (as an arbitrary lengt(
not(er e%a"ple2 e%el&4;usr;bin;s(50 4s(50 4)50 4ls
(ere are variations su( as e%elp google to $n!University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
7/37
E%a"ple
University of Hawaii EE 367L
ain&'
%el&4;bin;ls50 4ls50 &(ar
Overwrite
ls
e! to !o "ore beause t(e original progra" is comple
ant a progra" toll a U=-: o""an!e !ata fro" t(e o""an! an! ontinue proessing
-
7/25/2019 Linux Client-Server Overview
8/37
Solution
Original progra" &4proess5' reates anot(er 4progra"
(e (il! progra" e%eutes 4e%el5
(e original is not overwritten an! ontinues to
(is is i"ple"ente! using t(e for*& ' syste" al -t reates a (il! proess w(i( is i!ential to t(e orig
proess
-f t(eyre i!ential opies0 (ow an a proess tell w(et(e (il! or parent
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
9/37
+roesses +roess is a 4running progra"5 sort of a virtual o"pu
E%eutable o!e
Ie"ory for !ata0 e/g/0 global variables0 sta*0 (eap &for !yna"e"ory alloation'
C+U #egisters0 su( as general purpose registers0 progra" ounter0 status
registers0 ///
Jery si"ple o"puters run e%atly one proess E%a"ples2 signal proessing0 e"be!!e! syste"s
Keneral purpose o"puters an run "ultiple proesses(e proesses run li*e in!epen!ent virtual o"puters
Iultiple proesses are reate! by t(e operating syste"given proess -s &+-s'
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
10/37
+roesses"ain&'Dw(ile&1' D if &fork( ) NN A' D ;< (il!
F else D ;< parent
F
FF
"ain&'Dw(ile&1' D if &fork( ) NN A' D ;< (il!
F else D ;< parent ;; parent o!e
FFF
"ain&'Dw(ile&1' D
if &fork( ) NN tas*1& '2 ;; e%it&E:-SU F else D ;< paren tas*,& '> wait& '>
FFF
Original parent processfor*&' returns +- of (il!
Child procefor*&' return
University of Hawaii EE 367L
k& ' reates an i!ential opy of t(e proess0alle! a 4(il!5 proess/ So now t(ere is a (il!n! t(e 4parent5 &original' proessunning toget(erturns
A if its a (il! proess+- of (il! if its t(e parent
wait& ' will stop t(e proess until a (il!proess ter"inates
-
7/25/2019 Linux Client-Server Overview
11/37
+roesses
;
f!@A N rea!)en! of t(e pipef!@1 N write)en! of t(e pipe
8ou an write0 rea!0 lose
Be sure to reate a pipe before yo(il! an! parent (ave aess to t
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
16/37
e%el
+rogra" : E%a"ple 12 wit(out pipe
Iain progra" alls for*& ' to reate a (il! C(il! alls e%el &4ls5//////'
C(il! is overwritten by 4ls5
(e output of 4ls5 goes to st!io0 w(i( by !efault is your ter"i
E%a"ple ,2 wit( pipe Iain progra" reates a pipe0 an! reeives $le !esriptors
Iain progra" &parent' reates a (il! C(il! re!irets st!io to t(e pipe using dup2
C(il! alls e%el&4ls5///' output goes t(roug( t(e pipe
+arent reeives t(e output t(roug( t(e pipe
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
17/37
E%a"ple 1
"ain&'D
F
arent Child
University of Hawaii EE 367L
"ain&'D
for*& '
F
"ain&'D
e%el progra"0 e/g/0 4ls5
F
Ov
C(il! will run 4ls50 w(i( now sen!soutput to st!io0 w(i( by !efault ist(e ter"inal
Output
-
7/25/2019 Linux Client-Server Overview
18/37
E%a"ple ,
"ain&'DListen to pipe+roess w(at o"esF
arent Child
University of Hawaii EE 367L
"ain&'D!ake a pipe"ind #le descriptorsfork& 'F
"ain&'D#e!iret output fro" st!io to pipe using !up,e%el progra"0 e/g/0 4ls5F
pipe
-
7/25/2019 Linux Client-Server Overview
19/37
E%a"ple ,
"ain&'D$isten to pipe+roess w(at o"esF
arent Child
University of Hawaii EE 367L
"ain&'DIa*e a pipeBin! $le !esriptorsfor*& 'F
"ain&'D%edirect output fro& stdio to pipe using dup2e%el progra"0 e/g/0 4ls5F
pipe
-
7/25/2019 Linux Client-Server Overview
20/37
E%a"ple ,
"ain&'DListen to piperocess what co&esF
arent Child
University of Hawaii EE 367L
"ain&'DIa*e a pipeBin! $le !esriptorsfor*& 'F
"ain&'D#e!iret output fro" st!io to pipe using !up,e%el progra"0 e/g/0 4ls5F
pipeCo"Ove
-
7/25/2019 Linux Client-Server Overview
21/37
e%el0 et
(ere is a progra" pipe/ in t(e proPet t(at s(owto use e%el0 !up,0 an! pipes
#ea! it0 o"pile it0 an! run it
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
22/37
Server
University of Hawaii EE 367L
-nternet&Clou!'
Client '
socket socke
> lsa.outhello.chello
1. ser types *ls+2. Sends a &essage to server re,uesting *ls+
-. aits for a reply fro& /. 0ets reply and outputs to user
. $istening
. %eceivesan *ls+
3. 4xecutes5. Sends th
client '
6ey issue7 how do wetransport over thecloud
-
7/25/2019 Linux Client-Server Overview
23/37
?ile ransferypial syste" alls &to t(e operating syste"'
f! N fopen&4$lena"e50 4w5'>
Operating syste" reates a $le in t(e loal server &loal !is* !rive'
-t gives t(e $le an na"e 4$lena"e5 an! t(is is reoso"ew(ere by t(e operating syste"
Operating syste" assigns t(e $le a $le !esriptor n&f!'
?ro" t(is point0 t(e $le is referene! using f!
fprintf&f!0 4Hello worl!5'>
flose&f!'>
Even si"pler is write& ' an! rea!& '
#e"ote $les
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
24/37
So*ets
wo types Strea& sockets
Long live! onnetion between two entities
Base! on t(e C+ protool
e8ll concentrate on this type of socke
atagra" so*ets
One "essage &!atagra"'
Base! on t(e U+ protool
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
25/37
So*ets
-nternet =etwor*
&=etwor* Layer -+ protool'port N -+ a!!ress 1,/19/,A/A
C+ +orts
ppliations Client
C+ protool C
o"ew(ere/o"in na"e for t(eressin =a"e Syste" &=S' is use! to onvert a !o"ain na"e into a
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
26/37
Co"ponents to set up a So*et Ket infor"ation for a so*et
Client
-+ a!!ress Converte! fro" a url0 su( as www/ee/(awaii/e!u w(i( re
servie
C+ port nu"ber
ype of so*et0 e/g/0 !atagra" versus strea"
ServerC+ port nu"ber
ype of so*et
Set up t(e so*et0 auire $le !esriptor f!
sen!;rev using f!
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
27/37
So*ets getting t(e infor"atio geta!!rinfo&4www/e%a"ple/o"5 0 4(ttp50 Q(ints0
www/e%a"ple/o" is t(e (ost na"e &-+ a!!ress' to on
input Seon! para"eter is a port nu"ber )) input
lternatively0 you an use 4(ttp5 if its t(e port for t(e (ttp on
4(ints5 (as !ata t(at to be use! to set up t(e onnetio E%a"ples
(ints/aifa"ily N ?U=S+EC> ;; ont speify -+v. or -+v6
(ints/aiso*type N SOCRS#EI> ;; or SOCRK#I
(ints/aiags N -+SS-JE> ;; ssign loal (ost to -+ a!struture
4res5 is t(e output or results an! t(is is in a lin*e! list fouput
e (ttp2;;beeP/us;gui!e;bgnet;output;(t"l;"ultipage;sysalls/(t"lr t(ese syste" alls an! t(ere is an e%a"ple alle! s(owip/ t(at you an runin setion 9/1
University of Hawaii EE 367L
http://beej.us/guide/bgnet/output/html/multipage/syscalls.htmlhttp://beej.us/guide/bgnet/output/html/multipage/syscalls.htmlhttp://beej.us/guide/bgnet/output/html/multipage/syscalls.html -
7/25/2019 Linux Client-Server Overview
28/37
So*ets geta!!rinfo&4www/e%a"ple/o"5 05(ttp50 Q(ints
so*f! N so*et&res)Taifa"ily0 res)Taiso*type0
Taiprotool'> so*f! is t(e so*et $le !esriptor0 si"ilar to a $le !es
+oints to infor"ation nee!e! to set up a onnetion
o "a*e a onnetion0 so*f! nee!s to bin! itself to a pa!!ress;port
-t !epen!s on w(et(er it is a 4lient5 or 4server5
University of Hawaii EE 367L
-
7/25/2019 Linux Client-Server Overview
29/37
Client)Server
University of Hawaii EE 367L
Client Server
#euest
#eply-nitiates ransation
Client Server
#euest onnetionto a port : ; -+ a!!ress
+rovi!es its own port;-+ a!!r
#eply-nitiates onnetion
r
no -+ a!
G
re
sen!rev
sen!rev
-
7/25/2019 Linux Client-Server Overview
30/37
Client So*et geta!!rinfo&4www/e%a"ple/o"5 03.MA0 Q(ints0
so*f! N so*et&res)Taifa"ily0 res)Taiso*type0
Taiprotool'> =ow so*f! is t(e so*et $le !esriptor0 si"ilar to a $le
Client connect&so*f!0 res)Taia!!r0 res)Taia!!rlen'>
(is will onnet to t(e re"ote a!!ress www/e%a"ple/
in res)Taia!!r an! on port 3.MA
University of Hawaii EE 367L
S S * t
-
7/25/2019 Linux Client-Server Overview
31/37
Server So*et
geta!!rinfo&4www/e%a"ple/o"5 05(ttp50 Q(ints0 Qres'>
so*f! N so*et&res)Taifa"ily0 res)Taiso*type0 res)Tai =ow so*f! is t(e so*et $le !esriptor0 si"ilar to a $le !esripto
Server7 (ints/aiags N -+SS-JE> ;; use loal a!!ress
geta!!rinfo&=ULL0 3.MA0 Q(ints0 Qres'>
so*etf! N so*et&res)Taifa"ily0 res)Taiso*type0 res)Taiprot
bin!&int so*f!0 res)Taia!!r0 res)Taia!!rlen'> Bin!s so*f! !ata struture to t(e loal -+ a!!ress an! port 3.MA
so*f! N so*et $le !esriptor
res)Taia!!r N pointer to a!!ress infor"ation2 port nu"ber
res)Taia!!rlen N lengt( in bytes of t(e a!!ress
Server an now listenon so*f!
G(en it (as a reuest0 it an accept
University of Hawaii EE 367L
lilisten& ' for
-
7/25/2019 Linux Client-Server Overview
32/37
Client)Server
University of Hawaii EE 367L
Client +roess&Server'
onnet& 'port .AAA
o*ay
listen& ' foronnetionreuests atport .AAA
+roessis busy
Client
onnet& 'port .AAA
Client+roess&Server'
o*ay
Client
onnet& 'port .AAA
C(il!new port 6A9M
new so*f!
port 6A9M +roessis not busy
accept( )
S * t
-
7/25/2019 Linux Client-Server Overview
33/37
So*ets Client will onnet to a server
onnet&so*f!0 res)Taia!!r0 res)Taia!!rlen'>
(is will onnet to t(e re"ote -+ a!!ress spei$e! in res)Tai+ort fro" so*f!
Server waits;listens for onnetions fro" lients int listen&int so*f!0 int ba*log'>
Calls &onnetion reuests' arrive at t(e server an! are ueuet(ey are 4aepte!5
ba*log N "a%i"u" nu"ber ino"ing alls in a ueue -t listens on a port0 say port 1,3.
int aept&int so*f!0 struta!!r
-
7/25/2019 Linux Client-Server Overview
34/37
So*ets sen!&int so*f!0 onst voi!
-
7/25/2019 Linux Client-Server Overview
35/37
Client Server
Client ServerCreate so*etConnect
Create solistenCall ueue
accept
Ket a newCreate a to use
sen!rev
University of Hawaii EE 367L
-!eas
-
7/25/2019 Linux Client-Server Overview
36/37
-!eas
Brea* up t(e progra""ing proble" into s"aller (un*s so ttest it
E%a"ple2 art 12 Use t(e lient server progra"s fro" BeePs gui!e/ #un t(e" to "a*
wor* art 22 Io!ify t(e server so t(at it e%eutes 4ls5 every ti"e it gets a onne
fro" t(e lient/ =ote t(e output of 4ls5 goes to t(e onsole of t(e server/ (ter"inates t(e onnetion/
(is will give you e%periene wit( e%el an! proesses &an! also "aybe pipes'
art 2 Io!ify t(e server so t(at it e%eutes 4ls5 every ti"e it gets a onnefro" t(e lient but t(e output of 4ls5 goes t(roug( t(e so*et ba* to t(e liwill ter"inate t(e onnetion/ (e lient will !isplay t(e output
(is will give you e%periene wit( pipes as well as so*ets
art 2 Io!ify t(e lient so t(at it aepts t(e t(ree o""an!s &4list50 4(eW$lena"eT50 an! 4get W$lena"eT5' fro" t(e user0 starts a onnetion persen!s a "essage to in!iate t(e o""an! to t(e server &e/g/0 4list50 4(e*4get W$le na"eT5'/ (e server is "o!i$e! so t(at it aepts t(e onnetiono""an! on its own onsole0 e%eutes ls0 sen!s t(e output of ls ba* to t(e
art 32 Co"plete t(e proPet
University of Hawaii EE 367L
-!eas
-
7/25/2019 Linux Client-Server Overview
37/37
-!eas
Hint2 Io!el2 lient sen!s reuest )T server proess replies
Have ea( transation orrespon! to a new onnet0 i/ter"inate a onnetion after a reply
University of Hawaii EE 367L
top related