Verkkoliikennettä Java[ssa|lla]
Jouni Smed
9.2.2001
Perusteita 1 (2)
T tarvittavat luokat paketissa MDYDQHW
T IP-osoitteita käsitellään ,QHW$GGUHVV -olioina
T luonti (huom. ei konstruktoria):
,QHW$GGUHVVDGGU
,QHW$GGUHVVJHW%\1DPHDGGUHVV
T parametri
T
DNS-muodossa ( VWDIIFVXWXIL )
T
IP-numerona ( )
QXOO ORFDOKRVW
Perusteita 2 (2)
T portti ohjaa osoitteeseen tulevan liikenteen oikealle pistokkeelle (socket)
T porttinumerot 1–1024 varattuja
T pistoketyypit:
T
6HUYHU6RFNHW : kuuntee tiettyyn porttiin tulevia yhteyspyyntöjä
T
6RFNHW : varsinainen pistoke, joka hoitaa viestin
välityksen
Palvelin-asiakas -esimerkki
T palvelin
6HUYHU6RFNHW V QHZ 6HUYHU6RFNHW3257 WU\^ 6RFNHWVRFNHW
VDFFHSW WU\^ Nl\WHWllQ
SLVWRNHWWD
`ILQDOO\^
VRFNHWFORVH
`ILQDOO\^
VFORVH
T asiakas
6RFNHWVRFNHW QHZ
6RFNHWDGGU3257 WU\^ Nl\WHWllQ
SLVWRNHWWD
`ILQDOO\^
VRFNHWFORVH
`
Mitä oikein tapahtuu? 1 (2)
T palvelin luo palvelupistokkeen, joka jää kuuntelemaan annettua porttia (ts. suoritus pysähtyy DFFHSW -metodiin)
T asiakas luo pistokkeen antaen sille palvelimen osoitteen ja palvelupistokkeen porttinumeron;
luotu pistoke lähettää yhteyskutsun
Mitä oikein tapahtuu? 2 (2)
T palvelupistoke vastaa kutsuun luomalla pistokkeen johonkin porttiin ja välittämällä tämän
porttinumeron asiakkaalle
T asiakas yhdistää pistokkeensa uuteen porttiin ja pistoke palautetaan konstruktorin kutsujalle
T DFFHSW palauttaa palvelimeen luodun
pistokkeen
Tietovirtojen käyttö 1 (2)
T syötevirta:
%XIIHUHG5HDGHULQ QHZ
%XIIHUHG5HDGHUQHZ,QSXW6WUHDP5HDGHU VRFNHWJHW,QSXW6WUHDP
T tulosvirta:
3ULQW:ULWHURXW QHZ3ULQW:ULWHUQHZ
%XIIHUHG:ULWHUQHZ 2XWSXW6WUHDP:ULWHU
VRFNHWJHW2XWSXW6WUHDPWUXH
T virtoihin luku ja kirjoitus normaalia:
RXWSULQWOQIRR
6WULQJV LQUHDG/LQH
Tietovirtojen käyttö 2 (2)
T huom. eo. palvelin voi olla yhteydessä vain yhteen asiakkaaseen kerrallaan
T useampi samanaikainen asiakas
⇒ palvelin luo vastauspistokkeen uuteen säikeeseen
T virrat käyttävät TCP:a
⇒ luotettavaa mutta hidasta
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
``
`
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
TCP versus UDP
T TCP = transmission control protocol
T 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
T TCP-portti ≠ UDP-portti
T UDP = user datagram protocol
T independent, self-
contained message sent over the network whose arrival, arrival time, and content are not
guaranteed; but has a low
overhead (28 bytes) and
allows multicasting
UDP ja datagrammit
T ei tarvita palvelinpistoketta: 'DWDJUDP6RFNHW -
pistokkeet sekä lähettävät että vastaanottavat paketteja
T 'DWDJUDP3DFNHW -olio sisältää lähetettävän/
vastaanotetun tiedon (maksimikoko 64 kB)
T vastaanottava paketti:
'DWDJUDP3DFNHWGS QHZ
'DWDJUDP3DFNHWEXIEXIOHQJWK
T lähetettävä paketti:
'DWDJUDP3DFNHWGS QHZ
Datagrammi-esimerkki
WU\^ VRFNHW QHZ'DWDJUDP6RFNHW3257 VRFNHWUHFHLYHGS
VRFNHWVHQGGS
`FDWFK6RFNHW([FHSWLRQH^
SLVWRNHHLDXHQQXW
`FDWFK,2([FHSWLRQH^
YLNDDYLHVWLQQlVVl
`ILQDOO\^
VRFNHWFORVH
`
Datagrammin sisältö
T lähettäjän osoite: ,QHW$GGUHVVDGGU GSJHW$GGUHVV
T lähettäjän portti: LQWSRUW GSJHW3RUW
T paketin koko: LQWO GSJHW/HQJWK
T paketin sisältö: E\WH>@EXI GSJHW'DWD
T paketin lähettäjän ei tarvitse (välttämättä) sisällyttää
yhteystietojaan dataan, vaan vastaanottaja voi selvittää sen yo. metodeilla
T ⇒ mahdollisuus väärinkäyttöön: DoS (denial of service),
Multicast 1 (2)
T UDP:tä käyttävää liikennettä, jossa datagrammia ei lähetetä yksittäiselle koneelle vaan D-luokan osoitteen ilmaisemalle ryhmälle
T D-luokan osoitteet:
224.0.0.0–239.255.255.255 paikallisille sovelluksille:
239.0.0.0–239.255.255.255
T lähettäminen kuten unicast-paketeilla
Multicast 2 (2)
T vastaanottajan on liityttävä kuuntelemaan annettua ryhmää:
0XOWLFDVW6RFNHWVRFNHW
QHZ0XOWLFDVW6RFNHW3257 ,QHW$GGUHVVJURXS
,QHW$GGUHVVJHW%\1DPH$''5 VRFNHWMRLQ*URXSJURXS
T vastaanotto kuten unicast-paketeille:
VRFNHWUHFHLYHGS
T lopuksi lähdetään ryhmästä:
VRFNHWOHDYH*URXSJURXS
VRFNHWFORVH
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
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