Verkkoliikennettä Java[ssa lla] Jouni Smed 9.2.2001 1
Perusteita 1 (2) tarvittavat luokat paketissa MDYDQHW IP-osoitteita käsitellään,qhw$gguhvv-olioina luonti (huom. ei konstruktoria):,qhw$gguhvvdggu,qhw$gguhvvjhw%\1dphdgguhvv parametri DNS-muodossa (VWDIIFVXWXIL) IP-numerona () QXOO (= ORFDOKRVW = ) 2
Perusteita 2 (2) portti ohjaa osoitteeseen tulevan liikenteen oikealle pistokkeelle (socket) porttinumerot 1 1024 varattuja pistoketyypit: 6HUYHU6RFNHW: kuuntee tiettyyn porttiin tulevia yhteyspyyntöjä 6RFNHW: varsinainen pistoke, joka hoitaa viestin välityksen 3
Palvelin-asiakas -esimerkki palvelin 6HUYHU6RFNHW V QHZ 6HUYHU6RFNHW3257 WU\^ 6RFNHWVRFNHW VDFFHSW WU\^ Nl\WHWllQ SLVWRNHWWD `ILQDOO\^ VRFNHWFORVH `ILQDOO\^ VFORVH ` asiakas 6RFNHWVRFNHW QHZ 6RFNHWDGGU3257 WU\^ Nl\WHWllQ SLVWRNHWWD `ILQDOO\^ VRFNHWFORVH ` 4
Mitä oikein tapahtuu? 1 (2) palvelin luo palvelupistokkeen, joka jää kuuntelemaan annettua porttia (ts. suoritus pysähtyy DFFHSW-metodiin) asiakas luo pistokkeen antaen sille palvelimen osoitteen ja palvelupistokkeen porttinumeron; luotu pistoke lähettää yhteyskutsun 5
Mitä oikein tapahtuu? 2 (2) palvelupistoke vastaa kutsuun luomalla pistokkeen johonkin porttiin ja välittämällä tämän porttinumeron asiakkaalle asiakas yhdistää pistokkeensa uuteen porttiin ja pistoke palautetaan konstruktorin kutsujalle DFFHSW palauttaa palvelimeen luodun pistokkeen 6
Tietovirtojen käyttö 1 (2) syötevirta: %XIIHUHG5HDGHULQ QHZ %XIIHUHG5HDGHUQHZ,QSXW6WUHDP5HDGHU VRFNHWJHW,QSXW6WUHDP tulosvirta: 3ULQW:ULWHURXW QHZ3ULQW:ULWHUQHZ %XIIHUHG:ULWHUQHZ 2XWSXW6WUHDP:ULWHU VRFNHWJHW2XWSXW6WUHDPWUXH virtoihin luku ja kirjoitus normaalia: RXWSULQWOQIRR 6WULQJV LQUHDG/LQH 7
Tietovirtojen käyttö 2 (2) huom. eo. palvelin voi olla yhteydessä vain yhteen asiakkaaseen kerrallaan useampi samanaikainen asiakas palvelin luo vastauspistokkeen uuteen säikeeseen virrat käyttävät TCP:a luotettavaa mutta hidasta 8
Palvelinesimerkki 1 (2) FODVV 6HUYHU H[WHQGV7KUHDG^ SXEOLF 6HUYHU^VHW'DHPRQWUXH` ` SXEOLFYRLGUXQ^ WU\^ 6HUYHU6RFNHW V QHZ6HUYHU6RFNHW3257 ZKLOH WHUPLQDWHG^ 6RFNHWVRFNHW VDFFHSW QHZ 7KUHDGQHZ+DQGOHUVRFNHWVWDUW ` VFORVH ` FDWFK,2([FHSWLRQ H^ SRUWWLHLDXHQQXW ` ` 9
Palvelinesimerkki 2 (2) FODVV +DQGOHU H[WHQGV7KUHDG^ SULYDWH 6RFNHWVRFNHW SXEOLF+DQGOHU6RFNHWV^VRFNHW V` SXEOLFYRLGUXQ^ WU\^ %XIIHUHG5HDGHU LQ QHZ %XIIHUHG5HDGHUQHZ,QSXW6WUHDP5HDGHUVRFNHWJHW,QSXW6WUHDP OXHWDDQMRWDLQ LQFORVH ` FDWFK,2([FHSWLRQ H^ OXNLMDQOXRQWLWDLOXNXHSlRQQLVWXL ` ILQDOO\ ^ WU\ ^ VRFNHWFORVH ` FDWFK,2([FHSWLRQ H^ SLVWRNHHLVXONHXWXQXW ```` 10
TCP versus UDP TCP = transmission control protocol reliable, stream-based, point-to-point, lost data retransmission, rerouted if necessary, bytes delivered in the order they are sent; but has a high overhead TCP-portti UDP-portti UDP = user datagram protocol independent, selfcontained message sent over the network whose arrival, arrival time, and content are not guaranteed; but has a low overhead (28 bytes) and allows multicasting 11
UDP ja datagrammit ei tarvita palvelinpistoketta: 'DWDJUDP6RFNHWpistokkeet sekä lähettävät että vastaanottavat paketteja 'DWDJUDP3DFNHW-olio sisältää lähetettävän/ vastaanotetun tiedon (maksimikoko 64 kb) vastaanottava paketti: 'DWDJUDP3DFNHWGS QHZ 'DWDJUDP3DFNHWEXIEXIOHQJWK lähetettävä paketti: 'DWDJUDP3DFNHWGS QHZ 'DWDJUDP3DFNHWEXIOHQDGGUSRUW 12
Datagrammi-esimerkki WU\^ VRFNHW QHZ'DWDJUDP6RFNHW3257 VRFNHWUHFHLYHGS VRFNHWVHQGGS `FDWFK6RFNHW([FHSWLRQH^ SLVWRNHHLDXHQQXW `FDWFK,2([FHSWLRQH^ YLNDDYLHVWLQQlVVl `ILQDOO\^ VRFNHWFORVH ` 13
Datagrammin sisältö lähettäjän osoite:,qhw$gguhvvdggu GSJHW$GGUHVV lähettäjän portti: LQWSRUW GSJHW3RUW paketin koko: LQWO GSJHW/HQJWK paketin sisältö: E\WH>@EXI GSJHW'DWD paketin lähettäjän ei tarvitse (välttämättä) sisällyttää yhteystietojaan dataan, vaan vastaanottaja voi selvittää sen yo. metodeilla mahdollisuus väärinkäyttöön: DoS (denial of service), jossa paketin lähettäjä on väärentänyt yhteystiedot 14
Multicast 1 (2) UDP:tä käyttävää liikennettä, jossa datagrammia ei lähetetä yksittäiselle koneelle vaan D-luokan osoitteen ilmaisemalle ryhmälle D-luokan osoitteet: 224.0.0.0 239.255.255.255 paikallisille sovelluksille: 239.0.0.0 239.255.255.255 lähettäminen kuten unicast-paketeilla 15
Multicast 2 (2) vastaanottajan on liityttävä kuuntelemaan annettua ryhmää: 0XOWLFDVW6RFNHWVRFNHW QHZ0XOWLFDVW6RFNHW3257,QHW$GGUHVVJURXS,QHW$GGUHVVJHW%\1DPH$''5 VRFNHWMRLQ*URXSJURXS vastaanotto kuten unicast-paketeille: VRFNHWUHFHLYHGS lopuksi lähdetään ryhmästä: VRFNHWOHDYH*URXSJURXS VRFNHWFORVH 16
Multicast: palvelin FODVV 0XOWLFDVW6HUYHU ^ SULYDWH 6RFNHWVRFNHW SXEOLF0XOWLFDVW6HUYHU ^ WU\^VRFNHW QHZ'DWDJUDP6RFNHW3257` FDWFK6RFNHW([FHSWLRQH^SLVWRNHHLDXHQQXW `` SXEOLFYRLGVHQGE\WH>@GDWD ^ WU\^ 'DWDJUDPSDFNHW QHZ'DWDJUDP3DFNHWGDWD GDWDOHQJWK*5283B$''5(663257 VRFNHWVHQGSDFNHW `FDWFK,2([FHSWLRQH^OlKHW\VHSlRQQLVWXL `` SXEOLFYRLGILQDOL]H^ VRFNHWFORVH VXSHUILQDOL]H `` 17
Multicast: asiakas FODVV 0XOWLFDVW&OLHQW ^ SULYDWH 0XOWLFDVW6RFNHW VRFNHW SXEOLF0XOWLFDVW&OLHQW ^ WU\^ VRFNHW QHZ0XOWLFDVW6RFNHW3257 VRFNHWMRLQ*URXS*5283B$''5(66 `FDWFK,2([FHSWLRQH^HLRQQLVWXQXW` ` SXEOLFE\WH>@ UHFHLYH ^ E\WH>@EXI QHZE\WH>%8))(5B6,=(@ 'DWDJUDP3DFNHWSDFNHW QHZ'DWDJUDP3DFNHWEXIEXIOHQJWK WU\^ VRFNHWUHFHLYHSDFNHW UHWXUQSDFNHWJHW'DWD `FDWFK,2([FHSWLRQH^YDVWDDQRWWRHSlRQQLVWXL` UHWXUQQXOO `` 18