Introduktion til programmering Uge 41 Computer Science Netværk og operativsystemer Kap 3-4 .
Plan Sidste gang Netværk og netværksopbygning Protokoller Opgave 5 Netværksprogrammering i Python Operativsystemer Opgave 6
Sidste gang Sætninger og udtryk (nye værdier) Kontrolstrukturer Selektion (if, elif, else) Gentagelse (while- og for-loops) Funktioner (def) (indkapsling)
Netværk
Netværksopbygning Vi kan skelne mellem flere typer netværk: LAN WAN Local Area Network WAN Wide Area Network PAN Personal Area networks
LAN Eksempler Består af en række arbejdsstationer og servere IMV, En virksomhed Består af en række arbejdsstationer og servere Filservere, postservere, printservere Databaseservere, webservere Typisk opdelt i to eller flere undernetværk Intranet (lukket WWW)
LAN 2 Klienter: Servere: Gigabit, 1000 Mbit 1 Mbit = 125 Kb/s Kabel: Ethernet, 10 / 100 / 1000 Mbit Trådløst: 11 / 54 Mbit Servere: Gigabit, 1000 Mbit 1 Mbit = 125 Kb/s 100 Mbit = 12.5 Mb/s
IMV 5 undernet: 100 Mbit generelt 10 Mbit i terminalrum Studerende, Ansatte, Trådløst, Printere, Web 100 Mbit generelt 10 Mbit i terminalrum 1000 Mbit til datakontoret (p-drev)
Netværks opbygning Stjerne Ring Ethernet/Bus
PAN Trådløse, kort rækkevidde Bluetooth, ca 10 m 768 Kbit ~96 kb/s Forbinder f.eks. mobiltelefoner og lommecomputere
WAN Kan forbinde to LAN for en virksomhed Internettet er et WAN der forbinder mange net Mange medier Telefonlinjer, lysledere, kabel, radio, mikrobølger, satellit
Hvad er et net? Et net er defineret ved sin protokol (retningslinjer) En protokol er en fortolkning af de repræsentationer der transmitteres gennem et fysisk medium Internettet er defineret ved TCP/IP (Transmission Control Protocol / Internet Protocol) Net der bruger denne protokol tilhører Internettet. Net der ikke gør det, tilhører det ikke. Et net kan realiseres i mange fysisk forskellige medier (radiobølger, ethernet, etc.)
Internettet En “netværk mellem netværk” Opstod fra ARPAnet i 60’erne 2.4 - 50 kbit net Baseret på en fælles Kommunikationsstandard TCP/IP
Internet Design Alle undernet skal være selvstændige. Der skal ikke være behov for interne ændringer i nettene for at forbinde dem til internettet Kommunikation er “best effort”. Hvis en pakke ikke når målet, sendes den igen (ikke UDP) Nettet bindes sammen af gateways, der ikke ved noget om de pakker der sendes (routers) Der skal ikke være nogen central kontrol Hvis en del af nettet bryder sammen skal resten alligevel kunne fungere (den kolde krig)
TCP/IP Transmission Control Protocol / Internet Protocol Pakke-baseret protokol
TCP/IP – lagdelt protokol Applikation (f.eks. browser) Laver IP-adresse som transportlaget kan forstå (IP) Transportlaget Hakke beskeden i små pakker, forsyne hver pakke med adresse og nummer (TCP) Netværk Bestemmer midlertidig adresse for forsendelsen (IP) Indenfor: send direkte til maskine Udenfor: send til router Max hop-antal (64) Link Skal sende til maskinen med den midlertidige adresse Ethernet: Vent til bussen er stille, og send så Hvis en anden maskine også er begyndt at sende, vent et tilfældigt tidsrum, og prøv igen. Port-nummer Hver applikation har et unikt port-nummer. Webserver:80, ftp:20, 21
IP adresser og Protokoller Alle maskiner på nettet tildeles en IP adresse (eller en router har ekstern) XXX.YYY.ZZZ.WWW 0-255 (32 bit), IPv4 Faste og dynamiske adresser I alt 4 milliarder adresser ... men vi er ved at løbe tør for dem Ny standard IPv6 (128 bit) I alt 5×1028 adresser 50000000000000000000000000000
Internet anno 1971
Internet, USA 1999
WWW udvikling
URL’er http://vahlstrup.com/lTOE07/plan.html En URL er en sammensat repræsentation Dens interpretant er fastlagt i HTTP-standarden De objekter den repræsenterer er: En fortolkningsregel En server En sti på serveren Et dokument http://vahlstrup.com/lTOE07/plan.html server sti dokument interpretant
DNS Domain Name Server Regler for DNS I: DNS R: www.dr.dk O: 195.137.194.128 Domain Name Server Databaser der forbinder navne med IP adresser www.dr.dk -> 195.137.194.128 www.whitehouse.gov -> 213.236.199.95 Regler for DNS com, .net, .gov, .mil, .org, .edu, .int areo, .coop, .museum, .biz, .info, .name Landekoder (.dk, .uk etc) ICANN - The Internet Corporation for Assigned Names and Numbers www.icann.org bamse.lir.dk -> min computer -> 83.73.229.84 Ping wikipedia.com
DNS igen
Applikationslag - protokoller Udveksling af data mellem programmer Standardiseret, forskellige programmer kan dele data, da de kan forstå det samme sprog HTTP, FTP, POP3, SMTP
HTTP Hyper Text Transfer Protokol Udviklet i Schweiz i starten af 90’erne Tim Berners Lee Nu en standard under W3C, www.w3c.org World Wide Web Consortium Overførsel af tekst To-vejs (CGI)
Klient-server Klienten sender anmodning om info til server Server finder info og sender den tilbage GET /pub/WWW/TheProject.html HTTP/1.0 Klient Fx en browser Server Fx en WWW server HTTP/1.0 200 + Content-type: text/html + <xxx> …</xxx>
FTP File Transfer Protocol Overførsel af filer mellem maskiner Abstraktion over den fysiske maskine Kan overføre binære (data) filer og ascii (tekst) filer (ingen oversættelse/ oversættelse) Husk senere når I FTP’er jeres Pythonprogrammer: de skal overføres som ascii filer, ellers virker det ikke Kan sættes i FileZilla
POP3, IMAP og SMTP Post Office Protocol v3 Tillader en klient (mailprogram) at hente post fra serveren Henter en kopi af mailen ned på den lokale maskine, og sletter den på serveren IMAPv4 Læser mailen på serveren SMTP Simple Mail Transfer Protocol Lader en klient (mailprogram) sende en mail til serveren, og mellem servere.
SMTP eksempel (mail protokol) S = server C = client S: 220 www.example.com ESMTP Postfix (220 = service ready) C: HELO mydomain.com (goddag fra mydomain.com) S: 250 Hello mydomain.com (250 = OK) C: MAIL FROM:<sender@mydomain.com> S: 250 Ok C: RCPT TO:<friend@example.com> C: DATA S: 354 End data with <CR><LF>.<CR><LF> (354 = start mail input, how to end) C: Subject: test message C: From: sender@mydomain.com C: To: friend@example.com C: C: Hello, C: This is a test. C: Goodbye. C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye (221 = service closing) carriage return = ASCII 13 line feet = ASCII 10
Trafikmønstre på nettet Informationen produceres af værten (server) Informationen produceres af klienten Valg af informationen kontrolleres af værten (server) Transmission. Radio, aviser, tekstTV. Push-teknologi, spam Registrering. tilmeldelse til nyhedsgrupper, Selvangivelser, etc. Valg af informationen kontrolleres af klienten Konsultation. WWW. Konversation. Almindelige samtaler. email. Chat etc.
Hvad er html? Hyper Text Mark-up Language. Standard for de dokumenter WWW består af Består essentielt af en række tekstuelle ’tags’, <xxx> …</xxx> der beskriver hvordan ’…’ skal renderes grafisk og hvordan browseren i øvrigt skal reagerer på tekststumpen. Fra Kursussiden: <h1>Information</h1> <p> Her kan findes mine kontaktinformationer og desuden generelle informationer om kurset. </p> <h2>Kontakt</h2> <table cellpadding="0px" cellspacing="0px" class="linktabelmargin"> <tr> <td valign="top" width="150px"> <p class="nomargin"> <b>TLF:</b> </p> </td> …. Kildekode for hele siden http://vahlstrup.com/ITOE07/info.php CSS: http://vahlstrup.com/ITOE07/css/styles.css
Øvelse 5 Lav et program der kan udskrive en tabel fra en ”database” som en html-tabel
Egenskaber ved WWW? Det bygger på en grundlæggende rekursiv proces hvor output anvendes som nyt input Klienter og servere kan ikke direkte påvirke hinanden. De bestemmer selv hvordan de vil reagerer på kommunikationen Det er ikke styret af nogen overgribende intentionalitet, Det kan selv medvirke til sin egen reproduktion, udvikling og reparation, Det er dynamisk, og udvikler sig hele tiden. Selv-reference og selv-observation er uundværlige for at denne dynamik ikke opløser sig selv.
Grundlæggende rekursiv proces. HTML URL HTML … Klient og server får ikke lov direkte at påvirke hinanden. De bestemmer selv hvordan den modtagne kommunikation skal fortolkes
Det er ikke styret af nogen overgribende intentionalitet W3C Process (The World Wide Web Consortium) ”The Consortium attempts to find common specifications for the Web so that through dramatic and rapid evolution, many organizations can work in their own fields to exploit and build on top of the global information space which is the web. The technologies involved in the web are changing very rapidly, and so the Consortium must have both efficiency and flexibility in its process, to be able to respond to the needs of the community in a timely manner. At the same time, it must be clear that the Consortium is neutral forum, and no member has a priori a greater say than another. ”
Det kan selv medvirke til sin egen reproduktion, udvikling og reparation Downloads Udvikling: Man kan ved hjælp af nettet downloade de nye programmer der ændrer nettet Reparation: Man kan abonnere på patches og rettelser, så de kommer automatisk Reparation: Når en klient mangler en ressource for at kunne fortolke en side, kan den automatisk downloades fra nettet. Ofte henviser html-dokumentet til den relevante down-load side
Specifikationen af HTTP er åben for forandringer Specifikationen af HTTP giver mulighed for fluktuationer for at sikre at protokollen hele tiden vil udvikle sig. Method = "OPTIONS"|"GET"|"HEAD"|"POST"|"PUT"|"DELETE" | "TRACE" |extension-method Extension-method, angiver at nye metoder kan komme til. Responsens statuskode Status-Code = "100" ; Continue| "101" ; Switching Protocols | "200" ; OK [...]| "503"; Service Unavailable | "504" ; Gateway Time-out | "505" ; HTTP Version not supported | extension-code http://www.w3.org/Protocols/HTTP/1.1/rfc2616bis/draft-lafon-rfc2616bis-03.txt
Selv-reference og selv-observation Selv-reference og selv-observation er uundværlige for at denne dynamik ikke opløser sig selv Søgemaskiner producerer hele tiden opdaterede beskrivelser af nettet selv ved hjælp af nettet Alle HTML sider og HTTP protokoller skal angive hvilken version de selv er (dokument og browser) Søgemaskiner fører statistik over de mest populære sider og viser dem først
Eksempel Når I skal sætte Python til at lave dynamiske hjemmesider skal I sørge for to selv-referencer: Hvad er det for en slags dokument? print ’’’Content-type: text/html’’’ Hvilken version af HTML og hvilket sprog? def printOverskrift(titel): print ''' <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
Netværk Python moduler understøtter netværkskommunikation Moduler httplib, ftplib, poplib, smtplib
httplib import httplib python = httplib.HTTPConnection('www.python.org') python.request("GET", '/index.html') res = python.getresponse() print res.status, res.reason 200 OK page = res.read() python.close() print page … <a href="http://www.python.org/moin/LocalUserGroups">User Groups</a> Kør httplib-eksempel
MySQLdb connection = MySQLdb.connect(host = HOST, db=DATABASE, user=USER, passwd=PASSWD) Etablerer en forbindelse cursor = connection.cursor() Cursor er en pegepind til databasen cursor.execute(SQLordre) #SELECT * FROM … Udfører SQLordren result = cursor.fetchall() Fisker resultatet af ordren frem connection.close() Lukker forbindelsen http://sourceforge.net/projects/mysql-python
Modulet database Sørger for overgangen mellem python-verdnen og sql-verdnen I: SQL I: Python O: SQL-kommando Select…from…where… R: findRecords('Child',['cpr','firstname','lastname'],{'cpr':'1111111111'}) O: Python datastrukturer (lister og dictionaries)
Modulet database 2 print 'find all records in table Child' aRow = db.findRecords('Child',[]) print aRow >>>output<<< find all records in table Child [['1111111111', 'Jeppe Boegh', 'Andersen', 'Thorsgade 20', '8410', 'dreng', '', '86379790', 'Baltica', '1111111112', '1111111113', '1111111114'], ['1111111114', 'Lotte Boegh', 'Andersen', 'Thorsgade 20', '8410', 'pige', '', '86379790', 'Baltica', '1111111112', '1111111113', '1111111114'], ['1111111115', 'Stine', 'Jacobsen ', 'Thorsgade 20', '8410', 'pige', '', '86379790', 'baltica', '', '1111111116', '1111111114']]
Modulet database 3 print 'fetch a row from table Child with cpr = 1111111111' aRow = findRecords('Child',['cpr','firstname','lastname'],{'cpr':'1111111111'}) print aRow fetch a row from table Child with cpr = 1111111111 [['1111111111', 'Jeppe Boegh', 'Andersen']]
Modulet database 4 print 'change the first name to Jeppe in record where cpr = 1111111111' updateRecords('Child', {'firstname':'Jeppe'}, {'cpr':'1111111111'}) aRow = findRecords('Child',['cpr','firstname','lastname'],{'cpr':'1111111111'}) print aRow change the first name to Jeppe in record where cpr = 1111111111 [['1111111111', 'Jeppe', 'Andersen']]
Modulet database 5 Som beskrevet er det et modul så i skal altså huske at importere det, som vi snakkede om i sidste uge, inden i kan bruge det. import database as db Læg det i den samme mappe som jeres egen kode
Operativsystemer Historie og opbygning
Operativsystemets rolle Operativsystemer (OS) foretager ressourcehåndtering Diskplads, hukommelse, CPU-tid Eksterne ressourcer Netværk, printere, diskdrev osv. Brugerhåndtering Rettigheder, filadgang, prioritering,programafvikling Rettigheder på web-serveren: husk kryds i execute når I ftp’er jeres Python filer!
OS historie Første maskiner havde intet OS ENIAC, EDSAC Jobbene (programmerne) kørte “direkte på metallet” Programmering ved omkonfigurering af kabler
Jobkontrol (JCL) Reservationer af timeslots Computeroperatører ... maskinerne stod stille eller jobs måtte afbrydes Computeroperatører ... aflevere hulkort eller papirstrimmel til operatør, modtage udprint med resultat tilbage Batch jobs Automatisk igangsætning af jobs Skrive program Gentag: aflevere program Vente et par dage Rette fejl
Time sharing Compatible Time Sharing System, 1961 Multics, 1968 Mainframe med tilsluttede “dumme terminaler” (Client/Server) Det var den måde man arbejdede i 70’erne Første terminaler kom til Århus i 71-72.
Microsoft Udviklede OS til personlig IBM’s nye personlige computer DOS (1981) Disk Operating System Enkeltbrugersystem Forsvandt først i Windows XP
Windows udvikling Grafisk som forskel til DOS To forskellige kerner indtil xp.
Operativsystemers struktur Software Application:specifikke opgaver Spreadsheets,tekstbehandling Databaser, spil System: generelle opgaver Operating system Utility: supplering til OS: Diskformattering, defragmentering, audio, cd-brænding Kernel:funktionalitet File, Memory mamager Device drivers (lydkort, grafikkort) Shell: brugerinteraktion CMD, Windows
Ressourcer Hukommelse Diskplads CPU tid Fysisk, virtuel “swapping/paging” Diskplads CPU tid prioritering
Processer, tråde Et program repræsenterer mulige processer Procestilstand = datatilstand plus program pointer En proces har adskilt datatilstand og programpointer fra andre processer En proces får et tidsrum på CPU’en Eks. 5 ms - “timeslicing” Tråde deler data og hukommelse (pseudo-)Parallel afvikling af kode Python understøtter både processer og tråde
Øvelse 6 Brug de funktioner i lavede i opgave 5 og udvid jeres program så det nu rent faktisk henter dataene fra den database i lavede i opgave 2 Husk af downloade: http://sourceforge.net/projects/mysql-python