Laboration 1: Protokoll, Unix, XMLSyfte:Syftet med denna laboration är att ge grundläggande kunskap om hur protokoll, XML och Unix fungerar vilket behövs senare i kursen. Mål:Efter laborationen ska ni ha
Genomförande:Ha med föreläsningsanteckningarna om Unix, och XML som delades ut på föreläsningen samt "Lathund i Unixanvändning på Nada" (Unixanvändning) som kan köpas på Nadas studerandeexpedition. Laborationen genomföres i grupper om två studenter. Laborationerna utförs i första hand på NADAs Unix-datorer. Om ni vill arbeta utanför NADAs salar behöver ni en telnet som klarar ssh, t.ex. putty som är gratis för PC, eller MacSSHPPC som är gratis för mac, eller openssh som är gratis för Unix och linux. Observera att flera labmoment är beroende av att diverse datorer är igång, att nätverk fungerar osv. Om någon uppgift av någon anledning inte går att utföra så gå vidare och gå sedan tillbaka till den krånglande uppgiften ett par timmar senare. Krav:Svar på frågorna redovisas i ett mail till laborationsansvarige (inge@nada.kth.se) med svar på uppgifterna. Jag vill ha ETT mail som ska ha titeln LABORATION: KURSNAMN_lab1 Mailet ska innehålla namn och emailadresser till båda laboranterna (eller den enda laboranten) i gruppen, samt svaren på frågorna. Enklast är att ni samtidigt som ni går igenom labben skriver upp svaren på frågorna allt eftersom i en textfil som ni sedan skickar till mig tillsamman med de övriga filer som nämns senare i labben. OBS! skicka ej en Word-fil. 0. Etablera konto och kursOm du har ett nytt NADA-Unix-konto måste du byta lösenord.Om ni labbar tillsammans ska ni se till att byta lösenord på båda era konton. Det är mycket viktigt, inte bara för en själv, att man väljer ett bra lösenord. Detta gäller även om man inte är rädd om sina egna filer, alla inloggninsmöjligheter är extremt användbara vid datorintrång, till exempel för att dölja förövarens identitet och försvåra spårning. 0.0 Nytt lösenordVad som är ett bra lösenord är inte helt självklart. För att komma över andras lösenord används mer och mer avancerade program på snabbare och snabbare, och fler och fler datorer. Alla möjliga och omöjliga ordlistor används, det finns inte längre något ord som är tillräckligt obskyrt eller fackorienterat för att vara säkert. Gamla knep som att byta ut bokstaven O mot siffran noll är inte heller längre gångbart. Enkla felstavningar hör också till sådant som provas. Lösenord som redan tidigare var för dåliga, som bilnummer, telefonummer, med mera, är förstås fortfarande lika dåliga, liksom tricket att vända ett ord baklänges Hur konstruerar man då ett bra lösenord? En bra metod är att ta någon godtycklig, gärna obskyr, mening och ta initialbokstäverna från varje ord. Välj inte ett berömt citat, i alla fall inte utan att ändra om det lite grand. Gör en del bokstäver stora och en del små (för att minnas kan man tänka på orden med stor bokstav som betonade).
0.1 Checka in i resKommandot res används för att kontrollera labrapportering.
Med kommandot res show KURSNAMN kan du få reda på vilka av kursens laborationer som rapporterats in för dig. 0.1 Sätt upp kurs-miljön
1. ProtokollTelnet och SSHTelnet är ett program som huvudsakligen används till att få en textterminaluppkoppling mot en annan dator, vanligtvis en Unix-dator. Telnet är dock inte begränsat till just textterminaluppkopplingar utan kan användast till att koppla upp sig mot andra servertjänster, såsom en webserver eller en mailserver. Detta är mycket användbart om man vill "avlusa" program som använder nätverkskommunikation, eller som i detta fall få djupare förståelse för hur kommunikationsprotokoll fungerar ssh är en variant av telnet som dessutom klarar av krypterade förbindelser. Om allt gått rätt till är du nu inloggad på NADAs Unix-system
och har bytt lösenord. Härifrån kan du sedan skriva Unix-kommandon.
Ett exempel på kommando är host som översätter mellan
hostnamn (t.ex. www.gnu.org) och IP-adresser (t.ex. 199.232.41.10).
Testa att skriva Kommandot host fungerar även tvärt om, dvs man kan skriva in en IP-adress och få hostnamnet.
Med Telnet kan man alltså få en textterminaluppkoppling mot en Unix-dator. Detta kommer du att använda senare i laborationen. Ovan nämns att man kan kommunicera med exempelvis en mailserver med hjälp av Telnet. Mailservers körs dock ofta på en Unix-dator. Hur kan datorn känna skillnad på om en användare vill koppla upp sig mot mailservern eller vill ha en vanlig terminaluppkoppling? Lösningen är något som kallas portar. PortarSå kallade "portar" har till syfte att fungera som en sorts filter vilka möjliggör för en dator att skicka nätverkstraffik som kommer in till datorn, till rätt program. Portar uttrycks som heltal (noll och uppåt). Ett program på en serverdator kan allokera upp en eller ett antal portar till sin kommunikation. Exempelvis kommunicerar serverdelen av programmet telnet på port 23 och krypterade förbindelser med SSH använder port 22.Det lättaste sättet att testa beteendet på olika portar är att använda telnet-applikationen som finns inbyggd i alla Unix-datorer. Detta gör du genom att logga in på NADAs Unix-datorer enligt ovan, och sedan i terminalfönstret skriva telnet hostnamn portnummer t.ex.På en Unix-dator (något beroende på vilken exakt Unix-dialekt som används) kan man ta reda på vilka portar som används av standardprogram genom att skriva kommandot more /etc/services
HTTP - HyperText Transfer Protocolhttp är protokollet som används för att föra över filer via World Wide Web. Detta protokoll ligger på nivå 7 i OSI-modellen. Porten som används är oftast port 80. Det vanligaste kommandot är GET vilket används för att hämta websidor, bilder och liknande.
TCP och UDPOvanstående protokoll använder i sin tur protokollet TCP (Transmission Control Protocol). TCP ligger på nivå 4 i OSI-modellen, dvs transportnivån. TCP har som pricipiell uppgift att se till att informationen verkligen överförs till mottagardatorn. Följade garanteras av TCP:
För att klara av allt ovanstående krävs ganska mycket overhead I form av felkoll och liknande. Ibland är det viktigare att data levereras snabbt än att allt verkligen förs över. Exempel på detta är realtidsljud (det är bättre att få lite brus pga borttappade eller felaktiga paket, än att få stopp i överföringen pga felaktiga paket måste sändas om). För applikationer såsom ljud och video används därför ofta UDP (User Datagram Protocol). Både TCP och UDP använder sig i sin tur av protokollet IP på nätverksnivån (nivå 3 i OSI-modellen). Det är I IP-paketen som IP-adressen och portnumren lagras.
TCP och UDP är protokoll som sänder information från EN sändare till EN mottagare. Om man vill sända data till flera (N) mottagare som exempelvis vid internetkonserter eller videokonferenser kan man naturligtvis göra N sändningar. Detta innebär dock att exakt samma information sänds flera gånger genom samma fysiska kablar vilket är slöseri med nätverkskapacitet. Därför finns något som kallas IP Multicast. IP MulticastIP Multicast har till syfte att minska mängden data som onödigt sänds vid gruppkommunikantion. Ett antal datorer som vill kommunicera kommer överens om en gemensam IP-adress (som tilldelas automatiskt och dynamiskt) som de kommer att lyssna på förutom sina vanliga IP-adresser. Ett visst antal av de adresser som existerar på Internet är reserverade för just IP multicast. IP Multicast kommer dock inte att laboreras på i denna laboration. 2. UnixDelmål:Efter detta moment ska ni förstå Unix uppbyggnad, förstå vad ett shell är, förstå vad STDIN och STDOUT är samt hur de kan omdirigeras, förstå pipes samt kunna använda vanliga användarkommandon i Unix. I uppgiften kommer ni editera en textfil på datorn och behöver därför kunna använda en texteditor. De flesta editorer går att använda, men jag rekomenderar emacs som finns tillgänglig på de flesta datorer. Det tar ett tag att lära sig emacs, men i gengäld kan emacs användas för de flesta sorters editering. På sista sidan i Unixanvändning finns en en lathund till emacs. På windowsdatorerna måste ni använda emacs i telnetfönstret. Att få hjälpUnix-kommandon är skrivna av programmerare för programmerare. De är ofta mycket kraftfulla, vilket betyder att de bara kan göra en sak, men de kan göra den bra och på många olika sätt. Exakt hur ett kommando beter sig beror på vilka så kallade väljare (eller flaggor) som det får. Exempelvis används ls för att lista filerna i en katalog. ls kan ha följande flaggor: aAbcCdfFgilLmnopqrRstux1 Eftersom det är svårt att komma ihåg alla kryptiska kommandonamn och deras respektive parametrar, finns det inbyggda manualblad och ett hjälpsystem. Dessa är alldeles utmärkta och en rik källa till information. Följande kommandon är bra att känna till:
Lär dig använda dessa så får du säkert nytta av dem i resten av laborationen.
FilsystemetLäs igenom avsnitt 7.3, Filhantering i Unixanvändning.
Pipes och omdirigeringI Unix kan man lätt dirigera om utdata från ett kommando så att det blir indata till ett annat kommando. Dessutom kan man använda filer både som indata och som utdata. Läs mer om det i avsnitt 9, Kommandotolken i Unixanvändning.
grepKommandot grep letar efter mönster i en fil eller i sitt indata. För övningarna ska du lägga varje svar i en egen fil. Om t.ex. den tredje
uppgiften är att skriva ut alla ord som börjar på 'a', så ska svaret ligga i
en fil (en skript-fil) som heter grep.3 och består av följande rad: Du kan då provköra ditt miniskript med tex: För att nogrannare testa dina skript skall du använda kommandot tool-test. Om du står i den katalog som innehåller dina skriptfiler så testar tool-test grep alla grep-skripten och tool-test grep.4 testar svaret på den fjärde uppgiften. tool-test skapar en katalog som heter :pref. I denna katalog skapas 4 filer för varje uppgift som testas. För uppgift 4 skapas:
sedKommandot sed är en 'stream' editor som normalt används som ett editerande filter. Se exempel i slutet av föreläsningsanteckningarna om Unix. För uppgifterna skall du, på samma sätt som för grep-uppgifterna ovan, lägga varje svar i en egen fil och även här avsluta skriptfilen med $*
ProcesserLite förenklat kan man säga att ett program som körs på en Unix-dator lever sitt eget liv som en självständig process. En del processer startas när datorn sätts på, och sköter livsviktiga saker som virtuellt minne, eller nätverkskommunikation. Andra processer körs också hela tiden, men är inte fullt så viktiga. Dit hör t.ex. HTTP-servrar och dylikt. Slutligen startar användare egna processer. Kommandot ps används för att ta reda på vilka processer som körs. I sin grundform listar den alla processer du kör i just detta terminalfönster. Varje process identifieras av en unik processid (förkortat PID). ). ps har en väljare -A vilken gör att alla användares processer listas, även de som kör i ett annat terminalfönster, eller från en annan dator. Väljaren -u följt av användarnamn används när man vill leta efter de processer som körs av en viss användare. Utan några flaggor alls listas de processer som körs under det aktuella inloggnings-shellet. Kommandot kill används bl.a. för att avsluta processer. Detta är något man ibland vill göra när processer löpt amok, eller för att städa bland bakgrundsprocesser. Vanliga användare kan inte avsluta annat än sina egna processer. root kan naturligtvis avsluta alla andra användares processer.
AnvändareUnix är ett fleranvändarsystem. Ett antal användare kan vara inloggade samtidigt och exekverar sina program oberoende av varandra. Det finns kommandon för att ta reda på vilka användare som är inloggade, vad de heter i verkliga livet, när de senast läste mail och annat smått och gott. Dessutom kan man prata med andra användare, både på den dator man själv kör på, och på godtycklig dator som är ansluten till Internet. Detta är nyttigt när man t.ex. samarbetar inom ett projekt.
FilrättigheterFiler kan huvudsakligen ha tre typer av rättigheter: Läsrättigheter ("r"), skrivrättigheter ("w") och execute-rättigheter ("x"). Dessa kan ges på tre nivåer: Dig själv, din grupp samt "övriga användare". Ändringar görs med kommandot chmod som finns beskrivet i 7.2.9 Behörighet i Unixanvändning.
tar/gzipProgrammet tar används för att packa ihop katalogstrukturer till en enda fil. Namn på tarfiler ska sluta på ".tar". Programmet gzip används för att komprimera filer. gzippade filer ska ha namn som slutar på .gz. En gzippad, tarad fil ska således sluta på .tar.gz.
Shell skriptShell skript används för att göra egna program som kombinerar ihop andra program. grep.1, grep.2 etc. ovan är exempel på enkla skript.
Något mer användbara shellskriptOvanstående skript är egentligen bara en form av alias för funktionalitet man kan få genom att skriva exakt samma kommandon på en kommandorad. Något mer användbart blir det när man kan använda variabler och flödeskontroll, t.ex. loopar. Ett exempel på ett shellskript som går igenom ett antal filer i en katalog innehållande en mailadress på varje rad (t.ex. ett antal mailinglistor som brukar läggas upp i filer i en viss katalog) och lagrar samtliga mailadresser sorterat i en fil. Därefter gås filen igenom rad för rad. Om adressen på rad[i+1] är skiljd från adressen på rad[i] skrivs den ut, annars går man vidare. Detta kan vara bra exempelvis om man vill generera en mailainglista "everyone@någon-dator" men vill se till att personer som finns på flera mailinglistor endast kommer med en gång i everyone-listan. #!/bin/sh cat $1/* | sort > /tmp/alla this= for i in `cat /tmp/alla` do if [ "$i" != "$this" ] then echo $i this=$i fi done Vad händer i programmet ovan:$1 är första argumentet till programmet. this= definierar att vi ska använda en variabel med namn "this", som till att börja med ska vara tom `cat /tmp/alla` kommer, tack vare fnuttarna, expanderas till att vara de värden som nyligen lagrats i filen /tmp/alla. Observera att det ska vara en "grav accent", dvs en bakåtlutande fnutt. Du kan även leta på nätet efter ytterligare exempel och tutorials! 3. XMLNi ska nu göra ett CD-skivregister i XML. Du ska göra dels en dtd som beskriver reglerna för hur skivregistret får se ut, dels göra en xml-fil som innehåller själva registret. För att testa att du inte gjort några fel ska du verifiera och validera din kod med en XML-processor. I uppgiften kommer du att arbeta med filer som skall vara tillgängliga från WWW. Filerna ska därför läggas i katalogen "public_html" som finns i din hem-katalog. En fil med namn test.html som läggs i den katalogen blir åtkomlig på adressen http://www.nada.kth.se/~pub02aba/test.html om ditt inloggningsnamn är pub02aba.
Skivregister
Logga ut
|