netv rk og datakommunikation n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Netværk og datakommunikation. PowerPoint Presentation
Download Presentation
Netværk og datakommunikation.

Loading in 2 Seconds...

play fullscreen
1 / 83

Netværk og datakommunikation. - PowerPoint PPT Presentation


  • 161 Views
  • Uploaded on

Netværk og datakommunikation. Internetworking Koncept arkitektur og protokoller. Internet IP adresser . ARP protokollen. Router. LAN netværk. Host. Host. Host. LAN net. LAN net. Host. Host. Forskellig: fysiske adresser. Topologi. Pakke format. MAC metode . LAN net. Host.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Netværk og datakommunikation.' - louise


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
netv rk og datakommunikation
Netværk og datakommunikation.
  • Internetworking Koncept arkitektur og protokoller.
    • Internet IP adresser.
    • ARP protokollen.

Per P. Madsen

lan netv rk

Router

LAN netværk.

Host

Host

Host

LAN net

LAN net

Host

Host

  • Forskellig:
  • fysiske adresser.
  • Topologi.
  • Pakke format.
  • MAC metode
  • .......

LAN net

Host

Host

Per P. Madsen

osi modellen

WAN håndtering

fx IP-protokollen

  • Adressering
  • Routing
  • Multicasting
  • Fragmentering

OSI modellen

Applikation

Presentation

Session

Transport

Network

Data link

Fysisk

Per P. Madsen

wan netv rk

WAN netværk.

Router

Host

Subnet

Host

  • Netværkslagets opgave:
    • At danne et virtuelt datanet mellem to host på et WAN.
    • Dvs. en netværksservice, uafhængig af hvilken LAN-net, WAN nettet er opbygget af.

Per P. Madsen

wan netv rk1

Host

Host

Subnet

WAN netværk.

Per P. Madsen

netv rkslaget
Netværkslaget

Host

Host

Host

Host

App.

App.

En virtuel forbindelse.

Present.

Present.

Session

Session

Router

Router

Trans.

Trans.

Netværk

Netværk

Netværk

Netværk

Netværk

Netværk

Datalink

Datalink

Datalink

Datalink

Datalink

Datalink

fysisk

fysisk

fysisk

fysisk

fysisk

fysisk

Per P. Madsen

service typer

Service typer.

Host

Host

  • Service typer:
    • Connectionless. Også kaldt Datagram net eller Packet switching. Man afleverer sin pakke på posthuset (Routeren) med en adresse og går hjem uden at få at vide, hvad der sker med pakken.
    • Connection-Oriented. Man ringer modtageren op og får derved oprettet en fuld duplex forbindelse. Når man har forbindelse kan man sende sin strøm af data samt løbende få svar tilbage fra modtageren.

Per P. Madsen

connectionless eller datagram service
Connectionless eller datagram service
  • Virkemåde:
  • Data sendes i pakker med en given max størrelse.
  • Pakkerne routes uafhængigt af hinanden.

Per P. Madsen

connection oriented atm s m de
Connection-Oriented: ATM’s måde
  • Virkemåde:
  • Der oprettes en forbindelse.
  • Pakker/data sendes gennem denne forbindelse.

Per P. Madsen

sammenligning
Sammenligning

Per P. Madsen

connectionless internettets m de
Connectionless: Internettets måde
  • Historie:
  • Midt i 60’erne: DoD (Det Amerikanske forsvarsministerium) ønskede et robust net, der kunne overleve en atomkrig.
  • DoD gik til ARPA (Advanced Research Projekt Agency)
  • ARPA fandt frem til, at DoD skulle bruge et Packet switching net med host computere forbundet af sub-net.

Host

Host

IMP (Interface message processer)

Per P. Madsen

internettet
Internettet
  • Samtidig med ARPA-nettet udvikles forskellige LAN-net.
  • Man indså, at ARPA-nettet ikke var velegnet til integrering af forskellige LAN-net.
  • Cerf og Kahn 1974 kom med løsningen TCP/IP
  • Berkeley University integrerede TCP/IP i UNIX 4.2BSD og udviklede API’en Socket.
  • TCP/IP blev den officelle standard d. 1/1 1983.

Per P. Madsen

internettets lag model

Internettets lag model

Aplikation

WWW, FTP, MAIL, ...... Fx HTTP-protokollen

Transport laget

TCP/UDP-protokollen: TCP laget

Internet laget

IP-protokollen: IP laget

Data link

Forskelligt LAN-net

Fysisk

Per P. Madsen

internettets lag model1

Internettets lag model

  • Internettet: Virtuelt net oven på LAN-net.
  • Virtuel net:
  • Uniform adrssering: IP-adresser.
  • Uniform pakkeformat: IP-datagram.

Per P. Madsen

internet protokollen ipv4
Internet protokollen IPv4
  • Adresser: IP-adresser 32 bit.
  • Pakkeformat: IP-datagram.

IP-header

TP-Data Unit

20-60 byte

Max 64 Kbyte

  • Sevice type:
    • Connectionless.
    • Unreliable Best-Effort delivery.
      • Datagram loss
      • Fejl i data.
      • Forsinket/ude af orden.
      • Duplikering af datagrammer

Per P. Madsen

ipv4 header
IPv4 header

Version: 4, IHL (Internet Header Length) 5-15,

Type of service: Delay, Throughput, Reliability

Total length: Total længde, dvs header + data.

Identification: Id-nummer for samlet datastrøm.

DF: Don’t fragment, MF: More fragment, Fragment offset: Fragmentadr. * 8

Per P. Madsen

ipv4 header1
IPv4 header

Time to live: Antal hop eller routere, pakken må gennemløbe.

Protokol: Hvilken protokol, der er indkapslet i IP-pakken. TCP: 6, UDP: 17

Header checksum: Checksum af headeren.

Source add: Senderens IP adresse.

Destination add: Modtagerens IP adresse.

Per P. Madsen

ip adresser ipv4 32 bit
IP-adresser: IPv4-32 bit

Uniform adressering uafhængigt af underliggende LAN-net

Dotted decimal notation: 130.225.50.124

Hver Host/computer til net forbindelse får en unik IP-adresse.

http://www.iana.org/

under ICANN

Styrer tildelingen af

netværksadresser.

IANA

Per P. Madsen

ip adresser ipv4 32 bit1
IP-adresser: IPv4-32 bit

8 bit

8 bit

8 bit

8 bit

Klasse A

prefix

suffix

0

Klasse B

0

1

prefix

suffix

prefix

suffix

Klasse C

1

1

0

1

1

1

0

Multicastadresser

Klasse D

Prefix: Netsværk id.

Suffix: Host id.

A: 128 net og 16 mil. host

B: 16384 net og 64 K host

C: 2 mil. net og 256 host

Per P. Madsen

ip adresser ipv4 32 bit2
IP-adresser: IPv4-32 bit
  • Problem: Klassesystemet passer til alm virksomheder.
    • Klasse C for få hosts.
    • Klasse B for mange hosts.
  • Løsning: Classless Inter Domain Routing CIDR
        • 194.211.0.16/21

prefix

suffix

21 bit

11 bit

Routertabel

Prefix1.

Maske1

Next hop.

Prefix2.

Maske2

Next hop.

Prefix3.

Maske3

Next hop.

Prefix4.

Maske4

Next hop.

Per P. Madsen

ip adresser
IP-adresser.
  • Specielle adresser:
    • 127.x.x.x fx: 127.0.0.1: Loopback
    • 0.0.0.0: Denne computer.
    • 255.255.255.255: Broadcast på lokalnet.
    • Net.255.255: Broadcast på netværk: ”Net”.
    • Net.0.0: Adressen på netværk: ”Net”.

Per P. Madsen

ip adresser ipv4 32 bit3
IP-adresser: IPv4-32 bit

Problem: Det globale adresserum er stadig for lille.

Løsning: Private netværk med en forbindelse til det globale net.

IP-adresser til private net:

10.0.0.0.0 – 10.255.255.255

172.16.0.0 – 172.31.255.255

192.168.0.0 – 192.168.255.255

Per P. Madsen

ip adresser ipv4 32 bit4
IP-adresser: IPv4-32 bit

Nat eller proxy kommunikation.

Per P. Madsen

fysiske net

EthernetFrame

Preamble

Src. add.

Dest. add.

Length

CRC

8

6

6

2

46-1500

4

Header

Payload

Fysiske adr. eller MAC adr.

Fysiske net.

Per P. Madsen

fysiske net1
Fysiske net.

IP-laget

IP-header: IP adr.

Data

Net interface

MAC-adr

Data

fysisk-laget

Next hop

Per P. Madsen

ip til mac adresse
IP til MAC adresse

1: Tabel lookup.

IP-adr.

MAC-adr.

xxx

xxx

xxx

xxx

xxx

xxx

  • 2: Closed- Form computation:
    • MAC-adr. = f(IP-adr.)
    • Fx: ARC-net MAC-adr. = IP-adr & 0xFF;

Per P. Madsen

arp address resolution protokol
ARP- Address resolution Protokol

Problem: Skal være nem at vedligeholde.

Hardware uafhængig.

Løsning: ARP- Address Resolution Protokol.

...

...

Host

Host

Host

Host

Host

Ethernet

Router

Per P. Madsen

slide29
MM2

Per P. Madsen

netv rk og datakommunikation1
Netværk og datakommunikation.
  • Internetworking Koncept arkitektur og protokoller.
    • Routing.
    • IP headeren
    • Fragmentering
    • IPv6.
    • Name server (DNS)

Per P. Madsen

routing
Routing

Router

Routing tabel

Pakke ind

Ud-forbindelse

Dst:Out

Dst:Out

Dst:Out

Dst:Out

  • Forwarding af pakker:
    • Kik i routingtabellen for at finde Ud-forbindelsen og send videre.
  • Routing:
    • Bestem indholdet af routingtabellen.

Per P. Madsen

routing1
Routing
  • Statisk routing:
    • Routingtabellen bliver sat, en gang for alle.
    • Fx Shortest Path Routing.
  • Dynamisk routing:
    • Routingtabellen opdateres dynamisk.
    • Fx Distance Vector Routing.
    • Link State Routing.

Per P. Madsen

the optimality principle
The Optimality Principle

(a) A subnet. (b) A sink tree for router B.

Per P. Madsen

shortest path routing
Shortest Path Routing
  • Hver forbindelse giver en vægt:
  • Denne vægt kan være en funktion af:
    • Båndbredde.
    • Typisk delay.
    • Typisk belastning.
    • Pris.
    • Afstand.
    • ...
    • ...

Per P. Madsen

shortest path routing1
Shortest Path Routing

De første 5 step for af beregne ‘’The shortest path’’ fra A til D.

Pilen angiver den aktive enhed.

Per P. Madsen

distance vector routing
Distance Vector Routing
  • A subnet.

(b) Input fra A, I, H, K, og den nye routing tabel for J.

Per P. Madsen

link state routing
Link State Routing

Hver router gør følgende:

  • Find naboer og deres adresse..
  • Mål ‘’Cost-funktionen’’ for nadoerne.
  • Lav en datapakke med disse informationer.
  • Send datapakken til alle andre routere.
  • Beregn den korteste path til alle andre routere.

Per P. Madsen

byg datapakke
Byg datapakke
  • Et subnet.

(b) Datapakken for hvert subnet.

Per P. Madsen

ipv4 header2
IPv4 header

Version: 4, IHL (Internet Header Length) 5-15,

Type of service: Delay, Throughput, Reliability

Total length: Total længde, dvs header + data.

Identification: Id-nummer for samlet datastrøm.

DF: Don’t fragment, MF: More fragment, Fragment offset: Fragmentadr. * 8

Per P. Madsen

ipv4 header3
IPv4 header

Time to live: Antal hop eller routere, pakken må gennemløbe.

Protokol: Hvilken protokol, der er indkapslet i IP-pakken. TCP: 6, UDP: 17

Header checksum: Checksum af headeren.

Source add: Senderens IP adresse.

Destination add: Modtagerens IP adresse.

Per P. Madsen

fragmentering

Id=x, MF=0

Offset= 0

Total L.= 1500

Data: 1480 byte

Id=x, MF=1

Offset= 0

Total L.= 508

Data: 488 byte

Id=x, MF=1

Offset= 61

Total L.= 508

Data: 488 byte

Id=x, MF=1

Offset= 122

Total L.= 508

Data: 488 byte

Id=x, MF=0

Offset= 183

Total L.= 56

Data: 36 byte

Fragmentering

host

Ethernet

MTU= 1500 byte

ARCnet

MTU= 512 byte

Ethernet

MTU= 1500 byte

host

Per P. Madsen

ip adresser1
IP-adresser.

Problem: Det globale adresserum er for lille.

Endelig øsning: IPv6 128 bit adresser. Så er der plads nok!!!

Per P. Madsen

slide43
IPv6
  • Begrundelse:
  • Større adresserum.
  • Simplere routing.
  • Bedre sikkerhed.
  • Bedre QoS, specielt RealTime
  • Mulighed for Multicast og Anycast.
  • Give mulighed for fremtidig udvikling.
  • Sikre Coeksistens af IPv4 og IPv6.

Per P. Madsen

slide44
IPv6

Per P. Madsen

ipv6 adresser
IPv6 adresser

Hexadecimalnotation:

8000:0000:0000:0000:1234:5678:9ABC:DEF0

8000::1234:5678:9ABC:DEF0

Eller IPv4: ::124.225.51.17

Per P. Madsen

ipv6 extension header
IPv6 Extension header
  • Extension header typer:
  • Fragmentering
  • Cryptering.
  • Authentication.
  • Routing.
  • Modtager information.
  • m.fl.

Per P. Madsen

dns the domain name system
DNS – The Domain Name System

.int: International org.

.org: Non-profit org.

.edu: Undervisning.

.com: Kommercielle org.

.mil: U.S. Militær.

.net: Netværksudbydere

.gov: U.S. regering.

Per P. Madsen

dns the domain name system1
DNS – The Domain Name System

.dk ansvarlig: www.dk-hostmaster.dk

root

dk

aau

dtu

ku

...

Navne zone med egen

Name server.

control

kom

rip

rap

rup

www

Per P. Madsen

slide49
MM8

Per P. Madsen

netv rk og datakommunikation2
Netværk og datakommunikation.
  • Transportprotokollen og API.
    • UDP.
    • TCP.
    • RTP.
    • Client/server paradigme.
    • Sockets.  

Per P. Madsen

osi modellen1

Skabe forbindelse mellem to programmer/processer.

Håndtering af integritet

fx TCP og UDP protokollerne

OSI modellen

Applikation

Presentation

Session

  • Connection
  • Reliabel
  • Sekvens
  • Flow Control
  • Buffering
  • Stream
  • Congestion control

Transport

Network

Data link

Fysisk

Per P. Madsen

transportlag

Problem:

    • Hvordan skabes der kontakt mellem to programmer, når der kan køre mange programmer på både sender maskinen og modtager maskinen.
  • Løsning: Portnumre.

Transportlag

http://www.iana.org/assignments/port-numbers

Programmer

Portmap

1

1

2

2

.

.

.

21

80

.

.

.

.

.

Per P. Madsen

transportlag1

Transportlag

  • Administration af portnumre:
    • http://www.iana.org/assignments/port-numbers
  • IANA standard porte: 0 – 1023 Fx:
    • 7 – echo
    • 11 – systat
    • 21 – ftp
    • 80 – WWW
  • IANA registrering: 1024 – 49151 Fx
    • 26000 – Quake
  • For dynamisk og privat brug: 49152til 65535

Per P. Madsen

transportlag portnumre

Transportlag: Portnumre.

ftp 21/tcp File Transfer [Control]

ftp 21/udp File Transfer [Control]

ssh 22/tcp SSH Remote Login Protocol

ssh 22/udp SSH Remote Login Protocol

telnet 23/tcp Telnet

telnet 23/udp Telnet

http 80/tcp World Wide Web HTTP

http 80/udp World Wide Web HTTP

Per P. Madsen

transportlag udp

Transportlag: UDP

  • User Datagram Protokol:
  • Kun håndtering af porte.
  • Dvs:
    • Connectionless.
    • Unreliabel.
    • Ingen sekvens håndtering.
    • Ingen Flow Control.
    • Ingen Congestion Control.
  • Men effektiv.

Per P. Madsen

transportlag udp1

Transportlag: UDP

Samlet dataframe med UDP transportprotokol.

Datalink

Netværk

UDP-header

Data

  • Anvendelse:
  • Voice over IP, Proceskontrol, semi-RealTime,
      • Eksperimental protokol.

Per P. Madsen

transportlag tcp

Transportlag: TCP

  • Transport Control Protokol:
  • Etablering af en sikker kanal mellem to programmer.
  • Dvs:
    • Connection-oriented.
    • Reliabel.
    • Sekvens håndtering.
    • Flow Control.
    • Congestion control.
    • Fuld duplex.
    • Streaming.
    • Buffering.
  • Kræver to-vejs kommunikation med acknowledged
  • og handshake.

Per P. Madsen

transportlag tcp1

Host 1

Host 2

Hej! Jeg vil snakke med dig

Hej! Jeg har forstået og er klar.

Jeg er også klar.

Transportlag: TCP

  • Connection-oriented. Dvs: Punkt til punkt forbindelse med:
    • Reliable connection startup.
    • Graceful connection shutdown.

Metode: The 3-way handshake

Per P. Madsen

transportlag tcp2

Sender positiv Ack.

Timer

Sender data og

starter timer

Sender positiv Ack.

Timer

Transportlag: TCP

  • Reliabel?
  • Metode:
    • Positive Acknowledgement with Retransmission (PAR)

Sender

Modtager

Sender data og

starter timer

Per P. Madsen

transportlag tcp3

Sender positiv Ack.

Timer

Transportlag: TCP

Fejl: Datagram loss, fejl i data, forsinkelser.

Sender

Modtager

Sender data og

starter timer

Timer

Per P. Madsen

transportlag tcp4

Transportlag: TCP

Timer: Kort tid => bedre efektivitet.

For kort tid => for mange retransmissioner,

dermed dårligere effektivitet.

Timer estimering:

RTT: Middel Round-trip time.

M: Målt Round-trip time.

RTT= a*RTT+(1-a)*M.

Timer fx:

Time = 1,5 * RTT

Per P. Madsen

transportlag tcp5

Transportlag: TCP

D= D*b+(1-b)*|RTT-M|

Dvs D er et estimat af spredningen.

Time = RTT + 4 * D

Per P. Madsen

transportlag tcp6

Transportlag: TCP

    • Sekvens håndtering.
    • Flow Control.
    • Streaming.
    • Buffering.
  • Løsning: Brug af Window management.

Per P. Madsen

transportlag tcp8

Transportlag: TCP

Congestion control.

Problem: Der kan være flaskehalse i et WAN net.

Timeout skyldes oftest for megen trafik

og ikke fejl. Retransmission forøger trafikken.

Løsning: Der retransmiteres ved timeout, dog

med mindre datamængder.

Per P. Madsen

transportlag tcp9

Congestion control.

Transportlag: TCP

  • Init:
  • Threshold= 32 Kbyte
  • CW= 1500 byte (Ethernet)
  • If Not timeout
    • If CW < Threshold.
      • CW= 2 * CW
    • Else CW= CW + 1K
  • If timeout
    • Threshold = ½* CW
    • CW= 1500 byte

Per P. Madsen

transportlag tcp10

Header.

Transportlag: TCP

Source port og Dest. Port: Portnumre på hhv. sender og modtager siden.

Sequence number: Adressen på den første byte i data.

Ack. number: Piggybacket Ack. adressen på korrekt modtaget datamængde.

TCP header length: Headerlængde.

Per P. Madsen

transportlag tcp11

Header.

Transportlag: TCP

URG bit samt Urgent pointer: Special besked, der sendes direkte igennem.

ACK bit: Ack. nummeret er validt.

PSH bit: Spring input buffer over.

RET bit: Resetter forbindelse ved fejl.

SYN og FIN: Bruges til oprettelse og nedlæggelse af en connection.

Per P. Madsen

transportlag tcp12

Header.

Transportlag: TCP

Window size: Buffer plads i senderens input buffer.

Checksum: 1. kompliment af header + pseudoheader + data.

Per P. Madsen

api application program interface

Application

Presentation

Session

Transport

Network

Data Link

Fysisk

API – Application Program Interface

RPC, RMI og CORBA

Socket

Per P. Madsen

socket
Socket

int sock;

sock=socket(<adress family>,<socket type>,<protocol>);

bind(sock,<server adress>,<adress length>);

listen(sock,<queue size>);

newsock=accept(sock,<peer adress>,<adress length>)

sock=socket(<adress family>,<socket type>,<protocol>);

bind(sock,<server adress>,<adress length>);

connect(sock,<server adress>,<adress length>)

Per P. Madsen

clinet server
Clinet-Server

Client

Server

1

1

Socket

Bind

Listen

Wait for Req.

Read req.

Serve req.

Send Reply.

Socket

Bind

Send Req.

Recive Reply.

2

2

.

.

.

.

.

.

.

.

.

.

  • En fuld forbindelse:
    • (Client adr, Client port, Server adr, Server port, Protokol)

Per P. Madsen

tcp server
TCP-server

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)

{printf("server: can't open strem socket"); exit(0);}

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

serv_addr.sin_port = htons(50000);

if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof(serv_addr)) < 0)

{printf("server: can't bind local add"); exit(0);}

listen(sockfd, 5);

while (1)

{newsockfd = accept(sockfd, (struct sockaddr *) & cli_addr, &cli_size);

if (!(childpid = fork()))

{close(sockfd);

n = read(newsockfd, request_string, MAX_LENGTH);

//do service

write(newsockfd, reply_string, n); exit(0);}

close(newsockfd);

}

Per P. Madsen

tcp client
TCP-client

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = inet_addr("130.225.50.10");

serv_addr.sin_port = htons(50000);

If ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)

{printf("client: can't open stream socket\n"); exit(0);}

if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))< 0)

{printf("client: can't connect to server\n"); exit(0);}

write(sockfd, request_string, strlen(request_string));

n = read(sockfd, reply_string, MAX_LENGTH); //Server reply.

close(sockfd);

Per P. Madsen

udp server
UDP-server

if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)

{printf("server: can't open datagram socket"); exit(0);}

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

serv_addr.sin_port = htons(50000);

if (bind(sockfd, (struct sockaddr *) & serv_addr, sizeof(serv_addr)) < 0)

{printf("server: can't bind local add"); exit(0);}

while (1)

{n = recvfrom(sockfd, request_string, MAX_LENGTH, 0,

(struct sockaddr *) & cli_addr, &str_s);

//serve request_string.

sendto(sockfd, reply_string, strlen(reply_string), 0,

(struct sockaddr *) & cli_addr, str_s);

}

Per P. Madsen

udp client
UDP-client

if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)

{printf("client: can't open datagram socket\n"); exit(0);}

if ((hostptr = gethostbyname("server")) == NULL)

{ Printf("gethostdyname error.\n"); exit();}

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = ((struct in_addr *)(hostptr->h_addr))->s_addr;

serv_addr.sin_port = htons(50000);

cli_addr.sin_family = AF_INET;

cli_addr.sin_addr.s_addr = htonl(INADDR_ANY);

cli_addr.sin_port = htons(0);

if (bind(sockfd, (struct sockaddr *) & cli_addr, sizeof(cli_addr)) < 0)

{printf("client: can't bind local add\n"); exit(0);}

sendto(sockfd, request_string, strlen(request_string), 0,

(struct sockaddr *) & serv_addr, str_s);

//Server reply.

n = recvfrom(sockfd, reply_string, MAX_LENGTH, 0,

(struct sockaddr *) & rec_addr, &str_s);

close(sockfd);

slide77

import java.io.*;

import java.net.*;

public class Server extends Thread {

public final static int DEFAULT_PORT = 50000;

protected int port;

protected ServerSocket listen_socket;

public static void fail(Exception e, String msg) {

System.err.println(msg + ": " + e); System.exit(1); }

public Server(int port) {

if (port == 0) port = DEFAULT_PORT;

this.port = port;

try { listen_socket = new ServerSocket(port); }

catch (IOException e) { fail(e, "Exception creating server socket"); }

System.out.println("Server: listening on port " + port);

this.start();

}

public void run() {

try { while(true) {

Socket client_socket = listen_socket.accept();

Connection c = new Connection(client_socket); }

} catch (IOException e){fail(e,"Exception while listening for connections");}

}

public static void main(String[] args) {

int port = 0;

if (args.length == 1) {

try { port = Integer.parseInt(args[0]); }

catch (NumberFormatException e) { port = 0; } }

new Server(port);

}

}

slide78

class Connection extends Thread {

protected Socket client;

protected DataInputStream in;

protected PrintStream out;

public Connection(Socket client_socket) {

client = client_socket;

try { in = new DataInputStream(client.getInputStream());

out = new PrintStream(client.getOutputStream()); }

catch (IOException e) {

try { client.close(); } catch (IOException e2) { ; }

System.err.println("Exception while getting socket streams: " + e);

return; }

this.start();

}

public void run() {

String line;

StringBuffer revline;

int len;

try { for(;;) {

line = in.readLine();

if (line == null) break;

len = line.length();

revline = new StringBuffer(len);

for(int i= len-1; i>=0; i--) revline.insert(len-1-i, line.charAt(i));

out.println(revline); }

}

catch (IOException e) { ; }

finally { try {client.close();} catch (IOException e2) {;} }

}

}

slide79

import java.io.*;

import java.net.*;

public class Client {

public static final int DEFAULT_PORT = 50000;

public static void main(String[] args) {

int port = DEFAULT_PORT;

Socket s = null;

if (args.length == 1) port = DEFAULT_PORT;

else {

try { port = Integer.parseInt(args[1]); }

catch (NumberFormatException e) { usage(); }

}

try { s = new Socket(args[0], port);

DataInputStream sin=new DataInputStream(s.getInputStream());

PrintStream sout = new PrintStream(s.getOutputStream());

DataInputStream in = new DataInputStream(System.in);

System.out.println("Connected to "+s.getInetAddress()+":"+s.getPort());

String line;

while(true) {

System.out.print("> "); System.out.flush();

line = in.readLine();

if (line == null) break;

sout.println(line);

line = sin.readLine();

System.out.println(line);

}

}

catch (IOException e) { System.err.println(e); }

finally { try { if (s != null) s.close(); } catch (IOException e2) { ; } }

}

}

slide80

UDP-server

import java.io.*;

import java.net.*;

public class UDPReceive {

static final int port = 50001;

public static void main(String args[]) throws Exception

{

byte[] buffer = new byte[1024];

String s;

DatagramSocket socket = new DatagramSocket(port);

for(;;) {

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

socket.receive(packet);

s = new String(buffer, 0, packet.getLength());

System.out.println("UDPReceive: received from " +

packet.getAddress().getHostName() + ":" +

packet.getPort() + ": " + s);

}

}

}

slide81

UDP-client

import java.io.*;

import java.net.*;

public class UDPSend {

static final int port = 50001;

public static void main(String args[]) throws Exception {

if (args.length != 2) {

System.out.println("Usage: java UDPSend <hostname> <message>");

System.exit(0); }

InetAddress address = InetAddress.getByName(args[0]);

int msglen = args[1].length();

byte[] message = new byte[msglen];

message=args[1].getBytes();

// Initilize the packet with data and address

DatagramPacket packet =

new DatagramPacket(message, msglen, address, port);

// Create a socket, and send the packet through it.

DatagramSocket socket = new DatagramSocket();

socket.send(packet);

}

}