590 likes | 728 Views
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)
E N D
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ærksopbygning • Vi kan skelne mellem flere typer netværk: • LAN • Local Area Network • WAN • Wide Area Network • PAN • Personal Area networks
LAN • Eksempler • 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: • 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: • 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 ControlProtocol / 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 “besteffort”. 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
URL’er • 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 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, .uketc) • ICANN - The Internet Corporation for AssignedNames and Numberswww.icann.org • bamse.lir.dk -> min computer -> 83.73.229.84 • Ping wikipedia.com
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 jeresPythonprogrammer: 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 = serverC = client • S: 220 www.example.com ESMTP Postfix(220 = service ready) • C: HELO mydomain.com(goddag fra mydomain.com) • S: 250 Hellomydomain.com(250 = OK) • C: MAIL FROM:<sender@mydomain.com> • S: 250 Ok • C: RCPT TO:<friend@example.com> • S: 250 Ok • 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: . • C: • S: 250 Ok: queued as 12345 • C: QUIT • S: 221 Bye(221 = service closing) carriage return = ASCII 13 line feet = ASCII 10
Hvad er html? • HyperTextMark-upLanguage. • 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> • <tdvalign="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? • defprintOverskrift(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