38
Java S Andrei Vancea - Sockets April 17th, 2008

Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

Embed Size (px)

Citation preview

Page 1: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

Java SAndrei Vancea -

SocketsApril 17th, 2008

Page 2: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

ConneConneDisconnecDisconnec• Connected mode: p

packets arrive all, iPhone)

• Disconnected modDisconnected modall, some packets mnot guaranteed (e gnot guaranteed (e.g

2

ected /ected / ted Modested Modespath chosen and n correct order (e.g.

e: path not chosen fore: path not chosen for may be missing, order g IP)g. IP)

2

Page 3: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

S kSock

• Sockets are used tpotentially distributpotentially distribut

• Sockets can be TC

• The combination ofport number (RFCport number (RFC

3

k t ?kets?

to have two processes, ted, interactted, interact

CP/IP or UDP/IP

f an IP address and a 793)793)

3

Page 4: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

Java SJa a S• In java.net package

• java.net.Socket – c

• java.net.ServerSoc

• Implements serveImplements serve

• Waits for request

• javax.net.ssl.SSLSjavax net ssl SSLSjavax.net.ssl.SSLS

• Secured sockets

4

SocketsSoc etse

client socket

cket

er socketser sockets

ts from clients

ocket, erverSocketerverSocket

4

Page 5: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

J SJava S• java.net.DatagramS

• socket for sendindatagram packetsdatagram packets

• java.net.MulticastS

• useful for sendingmulticast packetsmulticast packets

5

S k tSocketsSocket

g and receiving s (UDP)s (UDP)

ocket

g and receiving IP ss

5

Page 6: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCTC

• R li bl t d• Reliable stream de

• Guarantees to delivGuarantees to delivsent from one host duplication or losingduplication or losing

• Uses positive acknguarantee reliability

6

CPCP

li ilivery service

ver a stream of dataver a stream of data to another without g datag data

owledgment o f fy of packet transfers

6

Page 7: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCServer

socket()

bind()

li t ()listen()

acceptaccept

read()

write()()

close()

7

CPClientClient

k t()socket()

connect()connect()

write()

read()()

close()

7

Page 8: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCTC• how to create a show to create a s

int sockfd, portno, n;struct sockaddr_in serv_addr;t t h t t *struct hostent *server;

char buffer[256];if (argc < 3) {

fprintf(stderr "usage %s hostname port\n" argv[0]);fprintf(stderr, usage %s hostname port\n , argv[0]);exit(0);

}portno = atoi(argv[2]);sockfd = socket(AF INET SOCK STREAM 0);sockfd socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0)

error("ERROR opening socket");server = gethostbyname(argv[1]);if (server == NULL) {( ) {

fprintf(stderr,"ERROR, no such host\n");exit(0);

}

8

CPCPsocket???socket???

8

Page 9: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCTC• how to create a show to create a s

bzero((char *) &serv_addr, sizeof(serv_addr));serv addr.sin family = AF INET;serv_addr.sin_family AF_INET;bcopy((char *)server->h_addr,

(char *)&serv_addr.sin_addr.s_addr,server->h_length);

serv addr sin port = htons(portno);serv_addr.sin_port = htons(portno);if (connect(sockfd,&serv_addr,sizeof(serv_addr))

error("ERROR connecting");

9

CPCPsocket??? (WTH?)socket??? (WTH?)

< 0)

9

Page 10: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCP Server

socket()

bind()

li t ()

new ServerSocket(…)

listen()

acceptacceptServerSocket.accept()

read()

write()

Socket.getInputStream(),Socket.getOutputStream()

()

close()Socket.close()

11

- JavaClientClient

k t()socket()

connect()

new Socket(…)

connect()

write()

read()

Socket.getInputStream()Socket.getOutputStream()

()

close() Socket.close()

00

Page 11: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

TCTC• in Java:

1

CPCP

1

Page 12: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

SSoc

12

k tcket

2

Page 13: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M th dMethods

• l ()• close()

• getInputStream()getInputStream()

• getOutputStream()

• setSoTimeout()

• S Ti ()• getSoTimeout()

1

t ks to know

3

Page 14: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

S SServerS

• Let’s forget the C eLet s forget the C e

• client/server.

• Binds to a port.

14

S k tSocket

example... ;)example... ;)

4

Page 15: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

EExam

1

lmple

5

Page 16: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

S SServerS

1

S k tSocket

6

Page 17: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M th dMethods

• close()

• accept()

• setSoTimeout()setSoTimeout()

• getSoTimeout()g ()

1

t ks to know

7

Page 18: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

EExam

• Telnet?

1

lmple

8

Page 19: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

S k tI tSocketInter

1

t (1/3)ractor (1/3)

9

Page 20: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

S k tI tSocketInter

2

t (2/3)ractor (2/3)

0

Page 21: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

3)(3

/3to

r (er

actIn

teck

etS

oc

21

Page 22: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

ver)

Ser

ve

(Sm

ple

Exa

mE

222

Page 23: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

Secure SocSecure Soc• Add a layer of secuy

the underlying netw

• I t it P t ti• Integrity Protectio

• Protects againsotects aga smessages by a

• A th ti ti• Authentication

• ConfidentialityConfidentiality

• SSL encrypts dbetween client

2

ckets (SSL)ckets (SSL)urity protections over y pwork transport protocol

on

st modification of st od cat o oan active wiretapper

data being sent and server 3

Page 24: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

SSLSSSLS

All constructor are protectpSSLSocketFactory is useSSLSocket instances

24

SSLSocket instances

S k tSocket

eded for constructing

4

Page 25: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M th dMethods

• startHandshake()

2

t ks to know

5

Page 26: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

lem

plE

xaE

26

Page 27: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

UDUD• User Datagram Pro

• Does not guarantee

• D t• Datagrams may arrappear duplicated,

• Faster and more efthat do not need guthat do not need gu

2

DPDPotocol

e reliability or ordering

i t f drive out of order, or go missing

fficient, for applications uaranteed deliveryuaranteed delivery

7

Page 28: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

D tDatagram

2

S k tmSockets

8

Page 29: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M th dMethods

• close()

• connect(...)

• send(DatagramPacsend(DatagramPac

• receive(DatagramP( g

2

t ks to know

cket)cket)

Packet))

9

Page 30: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

EExam

• Echo server/client

3

lmple

0

Page 31: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

ver)

Ser

ve

(Sm

ple

Exa

mE

31

Page 32: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

nt)

Clie

nle

(Cam

plE

xaE

322

Page 33: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M lti tMulticast

• Used for sending amulticast packet

• A MulticastSocket iwith additional capawith additional capa"groups" of other minternetinternet.

3

t S k tt Sockets

nd receiving IP

is a DatagramSocket, abilities for joiningabilities for joining

multicast hosts on the

3

Page 34: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M lti tMulticast• A multicast group is

D IP (224.0.0.0 to 2address and by a snumber

• When one sends aWhen one sends a multicast group, allto that host and porto that host and pormessage

34

t S k tt Socketss specified by a class 239.255.255.255) standard UDP port

message to amessage to a l subscribing recipients rt receive thert receive the

4

Page 35: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M ltiMulticas

3

tS k tstSocket

5

Page 36: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

M th dMethods

• joinGroup

• leaveGroupleaveGroup

3

t ks to know

6

Page 37: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

ple

amp

Exa

37

Page 38: Java Socketsse.inf.ethz.ch/old/teaching/2008-S/0284/Slides/Lecture_8.pdfgIP). IP) SkSock • Sockets are used ... lient socket ket er socketser sockets s from clients ocket, erverSocket

W tWant m

• How would you maserver?

• How would you maHow would you maserver?

3

?more?

ake a small Web

ake a small FTPake a small FTP

8