Computer netværk og TCP/IP protokoller dcomnet 1
Maskinarkitektur.. fokus på intern organisation af en enkelt computer: dcomnet 2
Computer netværk.. kommunikation mellem maskiner forbindet i et netværk: netværk Transmission af bits (data) over netværket kan være baseret på kobber, fiberoptik, radiobølger, dcomnet 3
Netværksinterface.. netværket tilgås via et netværkskort (interface): Network interface card netværk.. netværkskortet tilgås via specielle input/output maskininstruktioner eller specielle lageraddresser. dcomnet 4
Strukturering af netværkskommunikation.. stort spænd fra fysisk transmission af bits til applikationer: 0100100100011100010101011 0110100100011100010111011 0100100100011100010101011 0110100100011100010111011 HTTP Request www.cs.au.dk/index.html HTTP Response <web page> dcomnet 5
Protokolstak.. netværkskommunikation struktureres i en protokolstak: 7-lags OSI modellen repræsentation af data (heltal, objekter, ) etablering af forbindelser mellem processer/applikationer pålidelig end-to-end transmission af segmenter rutning, upålidelig end-to-end transmission af pakker medie adgangskontol, upålidelig transmission af frames fysiske og upålidelige transmission af bits dcomnet 6
Protokoller og services.. protokolstakken implementeres på hver computer i netværket: protokol service dcomnet 7
TCP/IP protokolstakken.. danner grundlag for Internet kommunikation: software operativ systemet hardware dcomnet 8
Link laget dcomnet 9
Link laget.. kommunikation mellem maskiner over et fysisk netværk: Kommunikation foregår via transmission af frames. Kommunikation typisk upålidelig: frames kan gå tabt. Håndterer deling af mediet (Medium Access Control). Hver tilkoblet maskine har en unik link-lags addresse. dcomnet 10
Ethernet.. klassisk og mest udbredte lokal netværks (LAN) teknologi: Carrier Sense Multiple Access with Collision Detection. Anvender 48-bits link-lags addresser (eks: 74-29-9C-E8-FF-55). Ethernet frames: 8 bytes 6 bytes 6 bytes 2 46-1500 bytes 4 bytes dcomnet 11
Ethernet Hub Modtager frames på en port som så videresendes på alle porte. Regenererer signal for hver frame, men inspicerer ikke indholdet. Kollisioner vil forekomme hvis maskiner transmitterer samtidig. dcomnet 12
Ethernet Switch.. lærer link-lags addresser udfra modtage frames... undgår at videresende frames på alle porte. dcomnet 13
Sidekvindeopgave Hvorfor buffer? Inputs 1 Gbit/s -> Output 100Mbit/s Hvad sker der? Hvorfor aging (ældelse)? dcomnet 14
Netværkslaget dcomnet 15
En zoologisk have.. der findes mange forskellige netværksteknologier: Bluetooth GPRS Ethernet Grundideen bag internet: Et universelt virtuelt netværk baseret på at forbinde heterogene fysiske netværk. dcomnet 16
Intern arkitektur: Antal forbundne fysiske netværk. Hver host forbundet til et fysisk netværk. Fysiske netværk forbundet via routere. IP netværkslaget Ekstern arkitektur: Et virtuelt netværk. Hosts forbinder sig direkte. Intern struktur usynlig for applikationer. netværkslaget.. end-to-end, forbindelsesløs, upålidelig transmission af pakker (datagrammer). dcomnet 17
Adressering.. baseret på 32-bits internet addresser (IP addresser, IPv4): Skrives i dotted-decimal notation: 126.230.140.67 10100101 11100110 10001100 01000011.. IP addresser knyttes til (fysiske) netværksinterfaces. dcomnet 18
Adressering.. baseret på 32-bits internet addresser (IP addresser): Skrives i dotted-decimal notation: 126.230.140.67 10100101 11100110 10001100 01000011.. IP addresser knyttes til (fysiske) netværksinterfaces. dcomnet 19
Sidekvindeopgave Hvilken classes? 35.230.100.67 135.230.100.67 191.230.100.67 dcomnet 20
IP datagrammer / pakker dcomnet 21
Rutning.. netværkslaget er ansvarlig for multi-hop rutning: Routere forbinder et eller flere fysiske netværk og er ansvarlige for videresendelse af datagrammer. Routere har et eller flere netværksinterfaces. source Videresendelse baseret på rutningstabeller med indgange på formen: (netværksprefix, next-hop interface) destination dcomnet 22
Router.. en computer med multiple netværkskort der videresender pakker: CISCO 3500 dcomnet 23
Address Resolution.. behov for at afbilde mellem IP addresser og link-lags addresser: 222.222.222.220 222.222.222.222? 1A-23-F9-CD-06-9B dcomnet 24
Address Resolution Protocol (ARP).. gør det muligt at lave addresse afbildning: broadcast ARP request: who has 222.222.222.222 (target)? unicast ARP reply: me (222.222.222.222,49-BD-D2-C7-56-2A).. maskiner har en ARP tabel for at reducere antal ARP requests. dcomnet 25
ARP og rutning source destination.. hvordan sendes IP pakken, ARP request, frames? dcomnet 26
Transport laget dcomnet 27
Transportlaget End-to-end kommunikation mellem applikationsprocesser via TCP/UDP segmenter TCP: Transmission Control Protocol Forbindelsesorienteret Pålidelig bytestream UDP: User Datagram Protocol Forbindelsesløs Upålidelig (tab, ombytning, duplering) UDP header Src & Dst Porte dcomnet 28
Transportlags porte.. behov for identifikation af sender/modtager applikationsprocess: 1 fysiks forbindelse Process Port Multiplexing og demultiplexing af transportsegmenter baseret på porte. Porte identificerer også typisk netværks services (HTTP, port 80). dcomnet 29
TCP/UDP segmenter dcomnet 30
Sidekvindeopgave Hvor mange porte (antal) er muligt? Hvad sker der hvis server port ikke eksisterer? (UDP) dcomnet 31
Transportlags API dcomnet 32
UDP Transportlags API: JAVA.. interaktion med transportlaget foregår via sockets som mappes på porte Oprettelse af en socket: DatagramSocket clientsocket = new DatagramSocket(19157); Afsendelse af UDP segment: DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 46428); clientsocket.send(sendpacket); Modtagelse af UDP segment: DatagramSocket serversocket = new DatagramSocket(46428); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); dcomnet 33
Eksempel klient applikation server applikation 1. Klient applikationen læser linie fra tastatur. 2. Klient applikation sender linien til server applikation. 3. Server modtager linien og konverterer den til upper case. 4. Server sender konverteret linie tilbage til klient applikationen. 5. Klient applikationen modtager den konverterede linie. 6. Klient applikationen skriver linie på skærm. dcomnet 34
UDP klient-server applikationer dcomnet 35
UDP klienten dcomnet 36
UDPClient.java import java.io.*; import java.net.*; Create input stream Create client socket Translate hostname to IP address using DNS class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); dcomnet 37
Create datagram with data-to-send, length, IP addr, port Send datagram to server Read datagram from server DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); clientsocket.receive(receivepacket); String modifiedsentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedsentence); clientsocket.close(); } } dcomnet 38
UDP server dcomnet 39
UDPServer.java import java.io.*; import java.net.*; Create datagram socket at port 9876 Create space for received datagram Receive datagram class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true) { DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); dcomnet 40
Get IP addr port #, of sender String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); Create datagram to send to client Write out datagram to socket } } String capitalizedsentence = sentence.touppercase(); senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); } End of while loop, loop back and wait for another datagram dcomnet 41
Applikationslaget dcomnet 42
Applikationslaget dcomnet 43
Opsummering: TCP/IP netværk Socket API End-to-end kommunikation mellem processer, UDP, TCP, porte. Address Resolution Protocol IP addresser, rutning, upålidelig multi-hop kommunikation, routere. Frames, adgangskontrol, et-hops upålidelig kommunikation, link-lags addresser, hubs, switches. dcomnet 44