010990001 - Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction.

Slides:



Advertisements
Samankaltaiset esitykset
Tuloksellinen Java-ohjelmointi Luku 3 Luokkien käyttäminen
Advertisements

Tietokannat: MySQL ja PostgreSQL. Yleistä • Relaatiotietokantaohjelmisto, jolla voidaan luoda, ylläpitää ja muuttaa ja hallinnoida tietokantoja • Avoin.
Tietokoneen käyttöjärjestelmä
Johdatus Linuxiin Mauri Heinonen
JavaScript (c) Irja & Reino Aarinen, 2007
OULU ADVANCED RESEARCH ON SOFTWARE AND INFORMATION SYSTEMS Teppo Räisänen | Oulun yliopisto Facebook API Teppo Räisänen Tietojenkäsittelytieteiden.
VBA –ohjelmoinnin perusteet
Linuxin rakenne ja ominaisuudet
PHP ja sessionhallinta Verkkotekniikan jatkokurssi Kevät 2003 V. Seppänen
Julkaisukielet ja - tekniikat tMyn1 Julkaisukielet ja -tekniikat •Verkko-ohjelmointi voidaan jakaa kahteen osaan: asiakaspuolen ja palvelinpuolen ohjelmointiin.
Nämä kalvot on lisensoitu Creative Commons Attribution-ShareAlike 1
Samba seminaari. Historiaa  Ensimmäinen versio 1992  Kehittäjä Andrew TridgellAndrew Tridgell.
Tekstiasiakirjan kirjoittaminen
Olio-ohjelmoinnin perusteet luento 3
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
13. Hyvä ohjelmointitapa (osa 1)
© Jukka Harju, Jukka Juslin
GNU-ohjelmointityökalut Jussi Raunio TI09OHJ
Gentoo Linux Niina Salmi Oh5. Yleistä Línux levitysversio Gentoo alunperin kehitetty olemaan –nopea –luotettava –vakaa Kaikki sen ohjelmat asennetaan.
20. Javan omat luokat.
JohdantotMyn1 Johdanto Verkkopalvelun koostamiseen käytetään koosteohjelmia ja ohjelmointikieliä. Verkkopalvelun toteutus voi vaatia myös palvelinohjelmointia.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
Virtuaaliset lähiverkot
GNU- ohjelmointityökalut Samppa Rönkä OH2. GNU ? GNU (GNU's Not Unix) on ohjelmoija Richard Stallmanin vuonna 1983 käynnistämä projekti, jonka tavoitteena.
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Ohjelman keskeytys virhetilanteessa tMyn1 Ohjelman keskeytys virhetilanteessa Poikkeustilanteet voidaan ryhmitellä logiikkavirheisiin ja muihin ajonaikaisiin.
Jaakko Markkanen & Ari Laine. Yhteisö, joka kehittää työpöytäympäristöä KDE SC (Software Compilation) Avoimen lähdekoodin ja voittoa tavoittelematon yhteisö.
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Tiedostojen käsittely
Tiedon vieminen funktiolle tMyn1 Tiedon vieminen funktiolle, parametrit Argumentin vieminen funktiolle voidaan toteuttaa kahdella menetelmällä: –Pass-by-Value.
DNS ja DHCP palvelut Linuxissa
Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia.
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas).NET-palvelutoteutus: CoreServiceDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat.
SUSE Jyrki Heinonen OH4 Linux A Historiaa ja nykypäivää – S.u.S.E – Software- und System-Enwicklung Unix-konsultointi, SLS + Slackware saksaksi.
Jean Danielsbacka EL3 Linux. Samba? ● Tiedosto- ja tulostuspalvelin, joka toimii lähes missä tahansa TCP/IP:tä tukevassa ympäristössä ● Samba on ilmainen.
Linux-järjestelmät (A271227) Gentoo Linux -käyttöjärjestelmä Petri Keltanen TI07.
VTun VPN VPN – Virtual Private Network Tunnelointi Autentikointi
Miika Kuusinen LTY/Tietoliikenteen laitos 2003
DHCP Antti Pöyhönen.
Ti Lähiverkot - Erikoistyökurssi Sillat ja kytkimet Toni Helenius & Ville Parviainen
Virtual Private Network(VPN) + Virtual Tunnel(VTUN)
Linux – Palomuuri (iptables) Antti Almgren Tite
Network Information System (NIS) Lähiverkot erikoistyökurssi Linux J. Heinikoski.
1 ASIAKAS/PALVELIN -JÄRJESTELMÄ Järjestelmän tarkoituksena on mahdollistaa käyttäjän kyselyt tietokantaan asiakasohjelman avulla. Asiakasohjelma ottaa.
Chapter 11 Name and Address Conversions Juha Jääskeläinen.
Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming Sockets Networking API Chapter 6 - I/O Multiplexing: the select and poll.
Lähiverkot -erikoistyökurssi Linux -työ Network File System 22.4 Jarkko Pulli.
.NET ohjelmointi C#-kielellä RäsSe, lokakuu 2004.
Elementary SCTP Sockets Tietoliikennetekniikan jatko- opintojakso 2.
WWW-palvelin Apache HTTP Server. Yleistä Siirtää HTTP-protokollaa käyttäen pyydetyt tiedostot Internetin välityksellä Portti 80 varattu HTTP-protokollalle.
Tietokantapalvelimet -Mikko Pehkonen, Tite4. Tietokantapalvelimista  DBMS (Database Management Systems)  Tarkoitettu tiedon keskitettyyn hallintaan.
SUSE Linux. Alunperin saksalainen lokalisointi Slackwaresta Julkaistiin vuonna 1994 S.u.S.E Linux 1.0:na Myöhemmin sisällytettiin Jurix- käyttöjärjestelmä.
Edellisen kerran yhteenveto: Fyysisen kerroksen alikerrokset Fyysisen kerroksen tehtävät –Carrier Sense –Receive –Transmit Mitä tietoja PHY-kerroksen kehyksistä.
Yksikkötestaus ● Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin.
Foreign Function Interface Antti Marttila Funktio-ohjelmointi 2.
String-vertailusta ja Scannerin käytöstä (1/2)
DNS ja DHCP-palvelut linuxissa
GNU-ohjelmointityökalut Sami Husso
TIES341 Funktio-ohjelmointi 2 Kevät 2006
Linux palomuurina ( IPTABLES )
Hyvä ohjelmointityyli
5. HelloWorld-ohjelma.
14. Hyvä ohjelmointitapa.
ioctl #include <sys/ioctl.h> int ioctl(int d, int request, ...);
Riku Heino ja Milo Hakalahti
Samba Tuukka Toropainen.
Kokeile uutta Celianetiä testiympäristössä
5. HelloWorld-ohjelma.
SFX-dokumentaatio ja ohjeet
Esityksen transkriptio:

Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction

Yleistä Kirjassa mainitut lähdekoodit löytyvät osoitteesta: Haetaan ja puretaan komennoilla: wget tar zxf unpv13e.tar.gz Koodi löytyy nyt unpv13e -alihakemistosta cd unpv13e

Yleistä unpv13e/README kertoo kääntämisohjeet:./configure Käännetään peruskirjasto cd lib && make && cd - cd libfree && make && cd –

socket & TCP/IP socket-ohjelmointirajapinnat toimivat verkko-ohjelmoinnissa TCP/IP-mallin termein yhteyksinä sovelluskerrokselta kuljetuskerrokselle kirjassa käsitellään sekä TCP:n ja UDP:n osaavien socketien käyttöä ja jopa IP- kerroksen jättämistä välistä

Socket API - historiaa Lähtöisin 4.2BSD -järjestelmästä vuodelta 1983 (Berkeley System Distribution) –sen jälkeen yleistyneet muissakin kuin BSD- pohjaisissa Linuxin sockets API ei pohjaudu BSD apiin, vaan se on kehitetty tyhjästä (liekö ongelmia kirjan esimerkeissä?)

UNIX-standardit, POSIX Portable Operating System Interface on IEEE:n määrittelemä standardikokoelma Useita versioita (IEEE Std , -1990, -1992, -1993, -1996) Part 1: System API (C-kieli) (kirjassa POSIX.1), Part 2: Shell and utilities (kirjassa POSIX.2) Part 3: System administration Tietoa eri POSIX-standardeista

UNIX-standardit, Open Group X/Open julkaisi 1992 Single Unix Specification -määrityksen X/Open perusti Open software foundationin (OSF) kanssa 1996 Open Group:in Open Group määritteli vuonna 1997 Single Unix Specification version 2 -määrityksen

UNIX-standardit Austin Common Standards Revision Group määritellyt 4000 sivua ohjelmistorajapintoja –Yhdistää IEEE:n POSIX - ja Open Groupin Technical standard -määritykset Tuloksena ISO/IEC 9945:2002 aka IEEE Std aka Single Unix Specification Version 3 Kirjassa kutsutaan nimellä The POSIX Specification, kirjan pääpaino juuri tässä määrityksessä ja sen Sockets API:ssa

Asiakas/palvelin -malli

Simple daytime client Puolet asiakas/palvelin -mallin perusesimerkistä lähdekoodi: intro/daytimetcpcli.c kääntäminen: cd intro && make

Simple daytime client Muodostaa TCP-yhteyden palvelimelle ja kysyy siltä kellonajan kertaa perusfunktiot: socket() muodostaa TCP socketin inet_pton() tekee merkkijonosta osoiterakenteen connect() yhdistää palvelimeen read() lukee socketista

Virheentarkistus Funktoiden palautusarvot kannattaa tarkistaa virheiden varalta Kirjan koodin kirjastossa on luotu useille funktioille ns. päällysfunktiot, joissa on yhden funktion toiminnallisuus ja palautusarvon tutkinta –lähdekoodilistaukset ovat näin selvempiä ja näiden funktoiden käyttö omassa koodissa nopeampaa Tällaisen funktion huomaa isosta alkukirjaimesta, esim. Socket(), Bind(), Listen()

Päällysfunktiot esim. lib/wrapsock.c - Socket() /* include Socket */ int Socket(int family, int type, int protocol) { int n; if ( (n = socket(family, type, protocol)) < 0) err_sys("socket error"); return(n); } /* end Socket */

Simple daytime server Vastapuoli mainitulle daytime client - ohjelmalle Kuuntelee asiakasohjelmien yhteyspyyntöjä, hyväksyy yhteyden ja lähettää ajan lähdekoodi: intro/daytimetcpsrv.c Mainitut päällysfunktiot käytössä

Simple daytime server socket() korvattu Socket() :lla Bind() sitoo paikallisen osoitteen socketiin –IP-osoitteena INADDR_ANY –porttina 13 (daytime) Listen() asettaa kuuntelemaan yhteyksiä Accept() hyväksyy yhteyden ja luo yhteyssocketin, Write() lähettää merkkijonon (ajan) asiakkaalle

daytime-esimerkki Esimerkki on IPv4-riippuvainen –IPv6-toimivuus muutamalla muutoksella intro/daytimetcpcliv6.c –molempien kanssa yhteensopiva käsitellään myöhemmin kappaleessa 11 daytime esimerkkinä läpi kirjan, ominaisuudet vaan muuttuvat ja täydentyvät –toisena esimerkkinä kaiuttava (echo)

Harjoitus 1.1 & 1.2 Kappaleen 1.9 lopusta löytyy ohjeet verkkotopologiatiedon saamiseen –komentoja netstat -ni ; netstat -nr, ifconfig lähdekoodin haku ja kääntäminen esitelty jo aikaisemmissa kalvoissa - aja daytimetcpcli eri IP osoitteilla muutaman kerran

Harjoitus 1.3 & 1.4 Muokkaa daytimetcpcli.c:n socket-kutsun ensimmäinen argumentti (AF_INET) 9999:ksi. Etsi errno -arvo tulostetulle virheelle Lisää asiakasohjelmaan while-looppiin laskuri, joka lisääntyy yhdellä kun read palauttaa > 0

Harjoitus 1.5 Vaihda daytimetcpsrv.c:n portti 13:sta 9999:ksi, vaihda write-kutsu silmukaksi, joka kutsuu write():ä (ajan merkkijonon) tavu kerrallaan Vaihda myös asiakasohjelmasta (versiosta, joka tulostaa laskurin) portti 9999:ksi Mitä asiakasohjelman laskurina tulostetaan?