Linux Client-Server Overview

Embed Size (px)

Citation preview

  • 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