ELEC-C7241 Tietokoneverkot Ohjelmointiprojekti

Samankaltaiset tiedostot
T Harjoitustyöluento

T Harjoitustyöluento

ELEC-C7241 Tietokoneverkot Kuljetuskerros

OSI ja Protokollapino

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit

Harjoitustyö. Jukka Larja T Tietokoneverkot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

ELEC-C7241 Tietokoneverkot Sovelluskerros

Viestintäviraston EPP-rajapinta

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Security server v6 installation requirements

SSH Secure Shell & SSH File Transfer

kynnysarvo (threshold)

kynnysarvo (threshold)

Security server v6 installation requirements

T harjoitustyö, kevät 2012

S Tietoliikennetekniikan perusteet. Pakettikytkentäiset verkot. Helsinki University of Technology Networking Laboratory

kynnysarvo (threshold) varoitusarvo = tästä lähtien syytä varoa ruuhkaa aluksi 64 K RTT

Kuljetuskerros. Kirja sivut: ,

Miten Internet toimii?

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Laitteessa tulee olla ohjelmisto tai uudempi, tarvittaessa päivitä laite

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

ELEC-C7241 Tietokoneverkot Sovelluskerros

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n suojaama sähköposti

Tietoliikenne II. Syksy 2005 Markku Kojo. Tietoliikenne II (2 ov,, 4 op) Page1. Markku Kojo Helsingin yliopisto Tietojenkäsittelytieteen laitos

Tietoliikenne II (2 ov)

Mainosankkuri.fi-palvelun käyttöohjeita

Apple Mail. Käynnistäkää Apple Mail-ohjelma. Valitkaa Aloitusvalikosta sähköpostitilin tarjoajaksi Lisää muu sähköpostitili (Other Mail Account..

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

MODBUS -väyläohjaus DITRONIC TOUCH -KOSKETUSNÄYTTÖ. s-posti:

Internet Protocol version 6. IPv6

Internet ja tietoverkot 2015 Harjoitus 5: (ISO/OSI-malli: Verkkokerros, TCP/IP-malli: internet-kerros)

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Ohjelmoinnin peruskurssien laaja oppimäärä

Verkkoliikennettä Java[ssa lla] Jouni Smed

Loppukurssin järjestelyt

AXXION OY. Hosting-palvelut Asiakasohjeistus Versio 1.0

Kuljetuskerroksen tehtävä. Kuljetuskerros UDP. UDP-kaappaus (DNS) DNS-haku, Ethernet-kehys <#>

Miten Internet toimii. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2013

Harjoitus 3: Vaatimukset

Lataa SETI Revisited - Risto Isomäki. Lataa

SENAATTILA uudistuu keväällä 2015

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

WWW-sivu. Miten Internet toimii? World Wide Web. HTML-koodi. HTTP-istunto URL <#>

Choose Finland-Helsinki Valitse Finland-Helsinki

Kysymyksiä ja vastauksia Outlook 2007:stä

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

C++11 seminaari, kevät Johannes Koskinen

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet

Haka-palveluiden valvonta ja tilastointi AAIEye -työkalun avulla. Mika Suvanto, CSC

Oulun yliopisto Sähkö- ja tietotekniikan osasto

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

ETÄTERMINAALIYHTEYS SELAIMELLA

Tietoliikenne II (2 ov)

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Kuljetuskerroksen protokollat. Luotettava vai epäluotettava? Kuljetuskerroksen tarkoitus. Tietosähkeen kapselointi. Portit ja (de)multipleksaus

The CCR Model and Production Correspondence

Capacity Utilization

L models. Käyttöohje. Ryhmä Rajoitteiset

ELEC-C7241 Tietokoneverkot Multimedia, tietoturva, jne.

Visma Nova Webservice Versio 1.1 /

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

SuomiCom-sähköpostiasetukset Microsoft Outlook 2016

Efficiency change over time

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n turvaama HTTP. TLS:n suojaama sähköposti

Loppukurssin järjestelyt C:n edistyneet piirteet

Järjestelmän kriittisimmille toiminnallisuuksille (listattu alla), toteutetaan 1

Verkko-ohjemointia. TCP vs. UDP Socket, ServerSocket Datagrammit RMI

Ohjelmoinnin peruskurssien laaja oppimäärä

API:Hack Tournee 2014

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Finnfoam tuotekirjaston asennusohje. Asennus ja rekisteröintiohje

Verkkoliikenteen rajoittaminen tietoturvasta huolehtimiseksi ja häiriön korjaamiseksi

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Hyvin määritelty on puoliksi tehty kuinka vältetään turha tekeminen jo alussa

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Action Request System

T harjoitustehtävät, syksy 2011

11/20/ Siirron optimointi

Integrointi. Ohjelmistotekniikka kevät 2003

VERKKOKÄYTTÄJÄN OPAS. Tulostuslokin tallennus verkkoon. Versio 0 FIN

BaseMidlet. KÄYTTÖOHJE v. 1.00

Tietoliikenne I (muuntokoulutettaville) 2 ov Syksy 2002 Luennot Liisa Marttinen 11/6/2002 1

PAINEILMALETKUKELA-AUTOMAATTI AUTOMATIC AIR HOSE REEL

Apuja ohjelmointiin» Yleisiä virheitä

TW-LTE 4G/3G. USB-modeemi (USB 2.0)

Javan asennus ja ohjeita ongelmatilanteisiin

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

Transkriptio:

ELEC-C7241 Tietokoneverkot Ohjelmointiprojekti Pasi Sarolahti, 7.2.2017

Tentti ti 14.2. klo 13 Paikkana AS2 Kesto 2 tuntia Neljä kysymystä Laskinta saa käyttää Alue Kolme ensimmäistä osiota (sovellukset, ohjelmointi, kuljetuskerros), niihin liittyvät tehtävät ja kirjan sisältö 6.2.2017 2

Järjestelyt Tehdään pareissa Parit saa itse muodostaa Ilmoita ryhmä ja aihe web-lomakkeella ti 14.2. mennessä Mikäli sinulla ei ole paria: Ruksaa Etsin paria nappi (etsimme sinulle kaverin) Työn saa tehdä yksin, ei vaikutusta arviointiin ( Teen yksin nappi) Deadline: pe 7.4. Sallitut ohjelmointikielet: C, C++, Python, Java 1.2.2017 3

Tuotettavat materiaalit Toteutus Koostuu asiakasohjelmasta ja palvelinohjelmasta Mukana oltava selkeät ohjeet ohjelman kääntämiseen ja käyttöön Mieluiten Makefile tai vastaava Toimittava Aallon Linux-järjestelmissä (esim. kosh) Dokumentaatio (n. 10 sivua) Ohjelman suunnittelun ja toteutuksen dokumentaatio Käytetyn protokollan dokumentaatio Analyysi tietoliikenteen ja ohjelman toiminnasta 3.2.2017 4

Aiheet 1) Tiedostonjako 2) Keskusteluohjelma 3) Monen pelaajan peli 1.2.2017 5

Aihe 1: Tiedostonjako Asiakasohjelma voi lähettää ja vastaanottaa tiedostoja palvelimelle (ja palvelimelta) Tuettava vähintään 1 MB tiedostoja, sekä teksti- että binääritiedostot (esim. kuvat) Protokollavaihtoehdot HTTP/1.1 (ei saa käyttää HTTP-kirjastoja) Itse määritelty protokolla Plussaa Tiedostopalvelun hajautus Peer-to-peer - toiminnallisuus 3.2.2017 6

Aihe 2: Keskusteluohjelma Asiakasohjelmat voivat keskustella keskenään palvelimen välityksellä Tuettava vähintään kolmea yhtäaikaista asiakasta Protokollavaihtoehdot IRC Itse määritelty protokolla Plussaa Useamman hajautetun palvelimen yhteistoiminta Tiedostojen välitys keskustelun lomassa 3.2.2017 7

Aihe 3: Monen pelaajan peli Yksinkertainen ASCII-pohjainen peli, jossa pelaajat pelaavat toisiaan vastaan palvelimen välityksellä Tuettava vähintään kolmea yhtäaikaista asiakasta Esim. Multiplayer Nethack, strategiapeli, korttipeli Plussaa Reaaliaikaisuus Hajautus usealle palvelimelle / pelilobby 3.2.2017 8

Vaatimuksia toteutukselle Tulee toimia tyydyttävästi useammalla kuin yhdellä yhtäaikaisella asiakkaalla Voit perehtyä hyödyllisiin mekanismeihin: select, säikeet, tms Rinnakkaisuuden järjestely UDP:llä saattaa olla helpompaa Mutta muista UDP:n rajoitteet luotettavuuden suhteen Robusti poikkeuskäsittely Mitä jos yhteys menetetään? Mitä jos asiakasohjelma tai serveri tekee jotain odottamatonta? 1.2.2017 9

Dokumentaatio Dokumentissa tulee olla seuraavat osat 1) Ohjelman toteutuksen ja rakenteen kuvaus 2) Käännös- ja käyttöohjeet 3) Käytetyn protokollan kuvaus Jos toteutettu jokin(jotkin) RFC, kerro rajaus: mitkä osat toteutettu, mitkä ei Jos oma protokolla: kuvaile protokollan toiminta: sanomanvaihto, käytetyt viestit ja viestiformaatit 4) Testaus: miten asiakasta ja palvelinta on testattu Erityisesti kommunikaatiotoimintojen osalta 5) Analyysi (seuraava kalvo) 6) Työloki: kuinka työmäärä jakautui (ajallisesti / työparin kesken) Evidenssi työnjaosta, esim. versionhallintaloki liitteenä on plussaa 1.2.2017 10

Analyysissä käsiteltävät aiheet Kustakin aiheesta vähintään kappaleen verran tekstiä 1) Perustele kuljetuskerroksen protokollan valintaa. Miksi et valinnut jotain muuta (eli sitä toista) protokollaa? 2) Kuinka toteutus toimii IPv6 osoitteiden kanssa? Onko asiaa testattu? Voisiko jotain tehdä paremmin? 3) Mitä tapahtuu kun asiakas sammuttaa äkisti koneensa kesken yhteyden? Toimiiko palvelin? Onko toimintaa testattu? 4) Mitä tapahtuu kun palvelimelle tulee suunnilleen samaan aikaan useita (esim. 5) samanaikaisia asiakkaita? Pystyykö palvelin palvelemaan kaikkia tyydyttävästi? 3.2.2017 11

Arviointi 60% toteutuksen toiminnallisuus 5: selviää poikkeustilanteista, hallitsee mielivaltaisen määrän käyttäjiä, joitain plussaominaisuuksia toteutettu 3: toimii perustapauksissa, ja kykenee toimimaan usean käyttäjän kesken 1: toimii joten kuten, ongelmia virheenhallinnan ja usean käyttäjän tapauksissa 0: ohjelma on testauskelvottomassa kunnossa 40% dokumentti ja analyysi 5: kaikki vaaditut osiot on kuvattu selkeästi ja yksityiskohtaisesti. Analyysi on kattavaa ja pohtii annettuja aiheita kattavasti 3: vaaditut osat on dokumentoitu, mutta kuvaus on paikoitellen epätarkkaa, eikä dokumentoi kommunikointitoiminnallisuutta tyydyttävästi 1: dokumentti on toimitettu, mutta siitä puuttuu vaadittuja osia ja se on epätarkka 3.2.2017 12

Vinkkejä Aloita yksinkertaisesti Ensin yksinkertainen asiakas-palvelin pari Aloita hyvissä ajoin Riittävästi aikaa ongelmien ratkomiseen Jätä myös dokumentoinnille aikaa Apua saatavilla normaaleina laskariaikoina 6.2.2017 13

Client-Server Model 1. Server creates socket and sets it listening at given port (and address) Server 14

Client-Server Model Client 3. Server accepts the incoming connect request, a new socket descriptor is created for reading and writing 2. Client creates socket and issues connect to port set by server. TCP SYN is sent. Server 15

Client-Server Model Client The listening socket can continue accepting new connection requests Client Server Client (listening socket cannot be used for reading or writing) 16

Different Uses of bind() function Server Choosing the local port the most common use Choosing the local address Client Choosing the local port (is this useful?) Choosing the local address Automatic bind If bind has not been called explicitly System picks port and address when first packet is sent out 17

Setting a Passive Socket int listen (int sockfd, int backlog) Returns 0 on success, -1 on failure Sets up a backlog queue for pending (not yet accepted) incoming connections Backlog: length of the queue Listening socket is called passive socket Only the local port (and possibly address) is specified SYN SYN SYN Backlog queue SYN/ACK TCP SYN TCP ACK listen accept 18

Bind, Listen, Accept 123.45.67.78 99.88.77.66 *,80 bind 99.88.77.66,61246 listen accept connect 123.45.67.78,80 Automatic bind: 99.88.77.66,61246 19

Select call Largest FD + 1 sockfd 0 1 2 3 4 0 1 2 3 4 5 NULL 3 sec. select(maxfd, readset, writeset, exceptset, timeout) 2 Number of bits in resulting mask 0 1 2 3 4 0 1 2 3 4 20