Nätverk och Java, grunder Föreläsning 0: Introduktion till Internet Innehåll Kort om grundläggande nätverkskoncept Grundläggande WEB-koncept Internetadresser Se också Intro en streamad videoinspelning som finns på nätet Referenser Harold, ”Java Network Programming”, Elliotte Harold Hall, ”CORE Web Programming”, Marty Hall Deitel et al, ”Internet and the World Wide Web How to Program” Intro, http://www-citu.nada.kth.se/streams/intprogrintro.ram
Programmering av nätverksapplikationer Varför nätverksapplikationer? Idag så ser vi ett allt större behov för applikationer som kan kommunicera mellan olika noder Ett exempel är WWW, email och news med mer asynkron kommunikation Andra exempel är distribuerade databaser, ljud, radio och video Vi har också behov av att bygga tillämpningar där vi mer direkt är medvetna om varandra delade anslagstavlor, whiteboards, delade ordbehandlare, styrssystem (robotar mm) och inte minst spel För att åstadkomma detta finns det stöd i dagens nätverk (tex i Internet som vi skall titta lite mer på)
Nätverk Ett nätverk är en samling av datorer eller annan utrustning Termer nod en maskin i nätverket (dator, skrivare, brygga, läskautomat, …) värd (eng. host) noder som är fullt fungerande datorer kallas för värdar adress varje nod i nätverket har en unik adress i form av en serie av bytes paket moderna nätverk är paket-baserade, dvs informationen bryts ner till och skickas som paket. Paketen hanteras därefter separat protokoll en uppsättning regler som specificerar hur kommunikationen i nätverket skall gå till
Internet Internet är det mest kända nätverket och idag det mest spridda Designat för att vara robust Första versionen konstruerat av ARPA en myndighet inom USAs försvar. Kallades då ARPANET som sedemera "växte" till Internet. (ARPANET) första versionen 1968. Då med ett fåtal anslutna datorer
(Ethernet, FDDI, Local Talk, drivers, …) Lager (eng. layer) Ett nätverk har olika kommunikationslager Logisk förbindelse Applikation (HTTP, FTP, Telnet, …) Transport (TCP, UDP, …) Nätverk (IP, …) Fysiskt (Ethernet, FDDI, Local Talk, drivers, …) Som applikationsprogrammerare arbetar vi oftast i det övre lagret För speciella distribuerade tillämpningar arbetar vi också i Transportlagret Övriga lager behöver vi normalt inte bry oss om
IP, TCP och UDP IP, Internet Protocol TCP, Transport Control Protocol protokollet som används på nätverksnivå av Internet TCP, Transport Control Protocol ett anslutningsbaserat protokoll som erbjuder tillförlitligt datautbyte mellan två noder UDP, User Datagram Protocol ett protokoll som tillåter skickande av oberoende paket av data från en nod till en annan utan att varken garantera att paketen kommer fram eller ordningen mellan dem är samma vid mottagandet som vid utskickandet
IP-adress och DNS Varje dator på Internet identifieras med ett fyra-bytes (dvs 32 bitars) tal Många datorer har fasta nummer andra tilldelas temporära vid anslutning (tex vid anslutning via modem hemifrån) 32 bitar räcker till 232 = 4294967296 adresser men det räcker ändå inte så det finns ett förslag, IPv6, med 128 bitars adresser, dvs 2128 = 340282366920938463463374607431768211456 adresser (som ju bör räcka ett tag...fast inte riktigt till att adressera varje molekyl i universum...) DNS, Domain Name Server IP-adresser är svåra att komma ihåg för människor Därför konstruerades DNS som kan översätta mer lättihågkomna namn till IP-adresser Tex www.nada.kth.se blir 130.237.222.66
Portar Varje dator med en IP-adress har ett antal logiska portar för att kommunicera med sin omgivning en port är ett 16-bitars tal, dvs ett tal mellan 0 och 65535 Vissa portar är reserverade portnummer mellan 0 och 1023 reserverade för speciella ändamål exempelvis är följande portnummer reserverade för viss service port 7 för eko port 20-21 för ftp port 23 för telnet port 25 för smtp (dvs skicka e-post) port 80 för HTTP (dvs den port som normalt används av en WEB-server) port 110 för pop3 (dvs ett protokoll för att läsa e-post) Senare i kursen skall vi se hur vi själva kan skriva program som kommunicerar med både fördefinierade och via portar med andra nummer
Internet och Intranet Internet är världens största IP-baserade nätverk Massor av olika typer av datorer från alla kontinenter är anslutna Varje dator har (eller får vid anslutning) en unik IP-adress med vilken den sedan identifieras Det finns också andra nätverk med ungefär samma uppbyggnad Man brukar tala om intranet för att benämna lokala nätverk inom en organisation
Klient-server-modellen Idag är en klient-server- (ibland klient-betjänt på svenska) modellen den förhärskande vid konstruktion av distribuerade, samarbetande tillämpningar en klient ber en server om en viss tjänst tex om att få reda på vad klockan är eller att skicka över en viss fil eller websida en server utför tjänster åt klienter tex svarar på vad klockan är, skickar över en fil eller websida från sitt lokala filsystem Alla typer av applikationer passar dock inte in i klient-server-modellen utan ”båda ändarna” är både servrar och klienter samtidigt. Man brukar då prata om kommunikation peer-to-peer exempel en delad riteditor spel eller (det klassiska exemplet) telefonförbindelse
RFC (Request For Comments) Internetstandards har utvecklats på ett öppet sätt där förslag ofta presenteras öppet redan i prototypstadiet Protokollen finns att läsa på Internet Protokollen är indelade i olika nivåer obligatoriska, dvs sådana som måste implementeras av varje “host”, som IP rekommenderade som normalt bör implementeras, tex TCP, SMTP, UDP och Telnet) valfria, som MIME begränsade, som oftast inte behövs icke rekommenderade, dvs bör inte implementeras historiska, dvs utgångna informativa, tex sådana som är konstruerade utanför RFC men ändå väldigt användbara eller sådana som är nyttiga men inte erbjuder ett protokoll
HTTP, HTML, MIME och URL HTTP, Hypertext Transfer Protocol standarden som beskriver hur en webklient och server kommunicerar och utbyter data HTML, Hypertext Markup Language standardspråket för konstruktion av WEB-sidor MIME, Multipurpose Internet Mail Extensions den öppna standarden som beskriver hur multimedia skall skickas via e-post URL, Uniform Resource Locator definierar hur en fil otvetydigt kan refereras på Internet
protokoll://värdnamn[:port]/väg/filnamn#avdelning URL, URI och URN URI, Uniform Resource Identifier definierar hur en resurs otvetydigt kan refereras på Internet har ”undergrupperna” URL och URN URL, Uniform Resource Locator refererar en adress på Internet ser ut så här: exempel URN, Uniform Resource Name en pekare till en viss resurs utan att ange dess aktuella placering protokoll://värdnamn[:port]/väg/filnamn#avdelning http://www.gt.kth.se/education/kurspm/4K1525/default.html#innehall
HTML och SGML HTML har sitt ursprung i SGML SGML skapades under tidigt 70-tal Man beskriver en texts semantik snarare än dess presentation HTML skapades under tidigt 90-tal Är lingua franca för att publicera hypertext på weben Har kommit i flera versioner och utvecklas forfranande Se gärna http://www.w3.org/ för mer information
HTTP HTTP, Hypertext Transport Protocol standarden som beskriver hur en webklient och server kommunicerar och utbyter data använder MIME för att avkoda data använder TCP/IP för dataöverföring klienten skickar ett meddelande i stil med GET /index.html HTTP/1.1 för att hämta WEBsidan index.html från aktuell server Se gärna http://www.w3.org/Protocols/ för mer information
MIME MIME, Multi Internet Mail Extension den öppna standarden som beskriver hur multimedia skall skickas via e-post anger typen för data som skickas, tex text plain html news postscript, pdf zip image jpeg, gif, tiff audio video mpeg quicktime
CGI CGI, Common Gateway Interface Används av klienter för att kunna anropa program på servern CGI-program kan skrivas i många olika språk, tex Perl, C, BASIC eller AppleScript CGI-program körs som fristående processer initierade av HTTP-servern Ett CGI-program kan antingen köras utan argument eller ges argument via WEB-sida HTML inkluderar sätt att kommunicera med CGI-program
Java skriva, kompilera och köra Skriv program i vanlig editor Filen skall heta som klassen med tillägget .java Klass: Klass ger fil: Klass.java Kompilera På NADA så bör man för enkel hantering göra module add java Som sätter upp ”pathar” mm javac Klass.java Kör java Klass