Layers, Naming, and Sockets CS 118 Computer Network Fundamentals - - PowerPoint PPT Presentation

layers naming and sockets cs 118 computer network
SMART_READER_LITE
LIVE PREVIEW

Layers, Naming, and Sockets CS 118 Computer Network Fundamentals - - PowerPoint PPT Presentation

Layers, Naming, and Sockets CS 118 Computer Network Fundamentals Peter Reiher Lecture 10 CS 118 Page 1 Winter 2016 Outline Whats a party? Inside names Outside names Linking the two Sockets as an example Lecture 10 CS


slide-1
SLIDE 1

Lecture 10 Page 1 CS 118 Winter 2016

Layers, Naming, and Sockets CS 118 Computer Network Fundamentals Peter Reiher

slide-2
SLIDE 2

Lecture 10 Page 2 CS 118 Winter 2016

Outline

  • What’s a party?
  • Inside names
  • Outside names
  • Linking the two
  • Sockets as an example
slide-3
SLIDE 3

Lecture 10 Page 3 CS 118 Winter 2016

Recall: definitions

  • Communication

– Methods for exchanging information between a fixed set of directly-connected parties using a single protocol

  • Networking

– Methods to enable communication between varying sets of indirectly connected parties that don’t share a single protocol

  • Protocol

– A set of rules, agreed in advance [between the parties], that enable communication

slide-4
SLIDE 4

Lecture 10 Page 4 CS 118 Winter 2016

Names, layers, and translations

Bill wants to send a message to Jim

B1 B2 B3 J3 J2 J1

slide-5
SLIDE 5

Lecture 10 Page 5 CS 118 Winter 2016

Today’s theme: #WTPA?

  • What is a “party”?
  • Where is that party?

– Physically (in some physical place) – Logically (in some layer)

slide-6
SLIDE 6

Lecture 10 Page 6 CS 118 Winter 2016

A network layer

  • Nodes

– Sources and sinks of information

  • Links

– Channels that connect two or more nodes

slide-7
SLIDE 7

Lecture 10 Page 7 CS 118 Winter 2016

A closer look:

  • What’s inside a node?

– What actually communicates to the outside?

?

slide-8
SLIDE 8

Lecture 10 Page 8 CS 118 Winter 2016

One View

One node has channels to multiple parties

slide-9
SLIDE 9

Lecture 10 Page 9 CS 118 Winter 2016

Another view

Proc A Proc B Proc C

Three processes have channels to one party each

slide-10
SLIDE 10

Lecture 10 Page 10 CS 118 Winter 2016

A closer look v2:

  • What’s inside a node when:

– It has multiple channels on a single network (several names used external to the node)?

?

slide-11
SLIDE 11

Lecture 10 Page 11 CS 118 Winter 2016

What Does That Mean?

All on the same network – the Internet, for example With a different name for each connection

slide-12
SLIDE 12

Lecture 10 Page 12 CS 118 Winter 2016

A closer look v3:

  • What’s inside a node when:

– It has channels on multiple networks (different kinds of external names)?

?

slide-13
SLIDE 13

Lecture 10 Page 13 CS 118 Winter 2016

What does that mean?

One is on the Internet, the other is

  • n an 802.11

wireless network One with an Internet name, the other with a wireless MAC address

Remember, one of these channels can be layered below the other

slide-14
SLIDE 14

Lecture 10 Page 14 CS 118 Winter 2016

Inside vs. outside names

  • Another way of distinguishing names

– That all “belong” to the same node

  • Names depend on your viewpoint…
slide-15
SLIDE 15

Lecture 10 Page 15 CS 118 Winter 2016

“Outside” names

  • Giving a name to the source or destination on a

network layer

– Source address to enable N:1 – Destination address to enable 1:N – Same address to enable bidirectional communications

slide-16
SLIDE 16

Lecture 10 Page 16 CS 118 Winter 2016

“Outside” names

  • Names of a party

– Node names – Interface names

slide-17
SLIDE 17

Lecture 10 Page 17 CS 118 Winter 2016

Node vs. interface

  • Node

– Where processes run

  • Interface

– Network attachment point

slide-18
SLIDE 18

Lecture 10 Page 18 CS 118 Winter 2016

Node vs. interface

  • Node

– Source/sink of all network channels at a single place

  • Interface

– End of one network channel

slide-19
SLIDE 19

Lecture 10 Page 19 CS 118 Winter 2016

Node names

  • Unique across

– All nodes within a layer

  • A node many have multiple

– Node names – On the same or different layers

  • Node names are equivalent

– Within a node

slide-20
SLIDE 20

Lecture 10 Page 20 CS 118 Winter 2016

Interface names

  • Unique across

– All endpoints within a layer

  • A node may have multiple

– Interfaces

  • An interface may have multiple

– Interface names

  • Endpoint names are equivalent

– Within an interface

slide-21
SLIDE 21

Lecture 10 Page 21 CS 118 Winter 2016

Node name uniqueness

  • Node vs. interface uniqueness

A, B C, D, E

2,8 4 4

A, C

A == B A == C C == D == E 2 == 8 2 != 4 4 != 4

slide-22
SLIDE 22

Lecture 10 Page 22 CS 118 Winter 2016

Strong vs. weak endpoint models

  • We name interfaces AND nodes

– What happens when we use those names?

slide-23
SLIDE 23

Lecture 10 Page 23 CS 118 Winter 2016

Strong

  • Names refer to the interface

(channel end)

– If a message arrives at a node from network A, it must be addressed to the endpoint address where that node attaches – All names belong (in effect) to the interface – Like the name of the doors of a house

C D E C C x

slide-24
SLIDE 24

Lecture 10 Page 24 CS 118 Winter 2016

Like at Downton Abbey

Guests to the front door

Tradesmen around the back

But they both end up in the house

slide-25
SLIDE 25

Lecture 10 Page 25 CS 118 Winter 2016

Weak

  • Names refer to the node

– Even if assigned to the interface – If a message arrives at a node, it can be addressed to any endpoint address where that node attaches – All names belong (in effect) to the node – Like the names of a house

C, D, E C C

slide-26
SLIDE 26

Lecture 10 Page 26 CS 118 Winter 2016

As in, All Roads Lead To Rome

Goths! Lombards! Visigoths! Vandals! Huns!

Not always a good thing . . .

slide-27
SLIDE 27

Lecture 10 Page 27 CS 118 Winter 2016

Kinds of outside names

  • Ethernet

– A name for a channel endpoint for Ethernet messages (Ethernet layer)

  • IP

– A name for a channel endpoint for IP messages (IP layer)

  • TCP, UDP

– A name within an IP endpoint called a port (we’ll get back to that shortly…)

slide-28
SLIDE 28

Lecture 10 Page 28 CS 118 Winter 2016

A look inside the endpoint…

slide-29
SLIDE 29

Lecture 10 Page 29 CS 118 Winter 2016

“Inside” names

  • Names within a party

– A communication source

  • r sink from the view

within the endpoint

slide-30
SLIDE 30

Lecture 10 Page 30 CS 118 Winter 2016

Inside names…

  • What do we need to refer to?

– The data itself (objects) – The process that uses or creates it

slide-31
SLIDE 31

Lecture 10 Page 31 CS 118 Winter 2016

Object related names

  • File names (static data)

– C:\Users\guest\Desktop\file.doc – /usr/include/stdio.h

  • I/O names (infinite source/sink of data)

– LPT1:, COM0: – /dev/pty0, /dev/ttya, /dev/eth3 – Socket descriptor (complex data structure)

slide-32
SLIDE 32

Lecture 10 Page 32 CS 118 Winter 2016

Process related names

  • Process

– 8842

  • Thread

– 223

  • Other related names

– User – 521, “reiher” – Group – 9111, “lasr”

slide-33
SLIDE 33

Lecture 10 Page 33 CS 118 Winter 2016

OS Review

  • Process

– Smallest independent running program with its

  • wn memory space

– Resources include program code, memory, and thread(s)

  • Thread

– Smallest independently-schedulable running program

slide-34
SLIDE 34

Lecture 10 Page 34 CS 118 Winter 2016

Why we prefer process names to…

  • Thread names

– Single address space of a process ensures each process name is unique – Thread names might be unique only within their parent process space

  • File, I/O, etc. names

– In this class, comm. endpoints are TMs – A TM more closely maps to a process

slide-35
SLIDE 35

Lecture 10 Page 35 CS 118 Winter 2016

Properties of inside names

  • Syntax

– Defined only for that node

  • Value

– Unique within the node

Meaningless as network identifiers

slide-36
SLIDE 36

Lecture 10 Page 36 CS 118 Winter 2016

Job of an OS

  • Coordinate resource sharing

– Share memory, CPU capacity, devices, channels, etc.

  • Provide abstractions

– Of machines

  • To allow multiprocessing

– Of other resources

  • Like the network layers
slide-37
SLIDE 37

Lecture 10 Page 37 CS 118 Winter 2016

How do OSes abstract layer endpoints?

  • Socket

– Created by ARPAnet research (RFC33, 1970) – A communication endpoint from the view of the “user” (program) – Usually two-way – Basically: a socket is an inside name for outside communication…

slide-38
SLIDE 38

Lecture 10 Page 38 CS 118 Winter 2016

What’s that mean?

Proc A Channel X

We need to tell the computer’s operating system to connect Process A To channel X A socket is A’s inside name for the outside name (channel X)

slide-39
SLIDE 39

Lecture 10 Page 39 CS 118 Winter 2016

Room for confusion . . .

  • Unix-style systems also use sockets for

machine-internal IPC

– Where one process communicates to another – With no actual (or even virtual) networking involved

  • Our concern is with network sockets
slide-40
SLIDE 40

Lecture 10 Page 40 CS 118 Winter 2016

Inside and outside

  • How do we link:

inside names and outside names?

slide-41
SLIDE 41

Lecture 10 Page 41 CS 118 Winter 2016

Linking the two

  • Bind

– Currently common OS convention – OS operation linking an internal I/O name to an external communication layer name

slide-42
SLIDE 42

Lecture 10 Page 42 CS 118 Winter 2016

Two sides to a socket

  • Server side
  • Client side

Proc A Channel X Proc J

slide-43
SLIDE 43

Lecture 10 Page 43 CS 118 Winter 2016

A socket (either side)

  • Ask the OS to create a placeholder

– Attached to the process that creates it – A data structure that will link to the outside

if ((sockfd = socket(AF_INET, SOCK_STREAM,0)) == -1) { perror("Server: socket"); }

  • Now I’ve got a socket

– But I need to attach it to an inside name

slide-44
SLIDE 44

Lecture 10 Page 44 CS 118 Winter 2016

Common kinds of sockets

  • Datagram (e.g., Ethernet, IP, UDP, ATM AAL0)

– Direct to the channel – Separate messages – Individually addressed

  • Stream (e.g., TCP, ATM AAL2-5)

– Two-party association (“connection”) – Two steps:

  • Establish shared context with an address
  • Exchange data using that shared context
  • Others are possible, but not common
slide-45
SLIDE 45

Lecture 10 Page 45 CS 118 Winter 2016

Bind

  • Link a socket to an address on the server end

– For TCP

  • Describes server end of the connection

– For UDP

  • To limit messages you receive
  • To avoid source-addressing each message sent

if (bind(sockfd, (struct sockaddr *)&server, sockaddr_len) == -1) { close(sockfd); perror("Server: bind"); }

slide-46
SLIDE 46

Lecture 10 Page 46 CS 118 Winter 2016

Server first steps

  • Socket

– Create a channel placeholder local to the process

  • Bind

– Link the channel placeholder to an external name

Channel X Proc J Proc A

slide-47
SLIDE 47

Lecture 10 Page 47 CS 118 Winter 2016

Stateless: receiving messages

  • Recvfrom

– Accept a message – Indicate who it is from (other end) recvlen = recvfrom(sockfd, inbuf, MAXDATASIZE, 0,

(struct sockaddr *)&client, &clientlen);

slide-48
SLIDE 48

Lecture 10 Page 48 CS 118 Winter 2016

Stateless: sending messages

  • Sendto

– Send a message – Indicate who it is to (other end)

if (sendto(sockfd, outbuf, outbuflen, 0, (struct sockaddr *)&client, clientlen) < 0) { perror("Server: sendto failed"); }

slide-49
SLIDE 49

Lecture 10 Page 49 CS 118 Winter 2016

Server side - connections

  • Listen
  • Accept
slide-50
SLIDE 50

Lecture 10 Page 50 CS 118 Winter 2016

Listen

  • Wait for incoming connection

– Mark socket available for incoming requests – Prepare for someone to connect to the other end – Limit max waiting to be handled

if (listen(sockfd, MAX_CLIENTS) == -1) { perror("Server: listen"); exit(1); }

slide-51
SLIDE 51

Lecture 10 Page 51 CS 118 Winter 2016

Accept

  • Turns a socket into a socket pair

– Socket pair defines a connection (both ends) – Now someone is connected to the other end – NB: in Unix, a socket and a socket pair are both described by the same data structure (a Unix socket) new_fd = accept(sockfd, 
 (struct sockaddr *)&client,
 (socklen_t *) &sockaddr_len);

slide-52
SLIDE 52

Lecture 10 Page 52 CS 118 Winter 2016

Client side – connections

  • Socket

– Need something to connect to

  • Connect

– Connect socket to the channel

Channel X Proc J Proc A

slide-53
SLIDE 53

Lecture 10 Page 53 CS 118 Winter 2016

Connect

  • Initiate a connection to a remote end

– Indicate the remote end – Wait for the connection to be accepted

if ((connect(sockfd, (struct sockaddr *)&server,sizeof(server))) == -1) { perror("Client: connection error"); exit(-1);
 }

slide-54
SLIDE 54

Lecture 10 Page 54 CS 118 Winter 2016

sockaddr and names

  • What is the sockaddr?
  • A data structure containing an external name

– A name the client can use to specify which server socket to connect to

  • In practice, an IP address and a port

– Which is, remember, the type of name used by TCP and UDP

slide-55
SLIDE 55

Lecture 10 Page 55 CS 118 Winter 2016

Client and server data exchange

  • Send
  • Recv
slide-56
SLIDE 56

Lecture 10 Page 56 CS 118 Winter 2016

Send

  • Write data on the connected socket

– Same as sendto with NULL remote endpoint – Can be wrapped with a write call for simpler use

if (send(sendsock,sendbuf,strlen(sendbuf), 0) == -1){ perror("Client: send"); exit(1); }

slide-57
SLIDE 57

Lecture 10 Page 57 CS 118 Winter 2016

Recv

  • Read data from a connected socket

– Same as recvfrom with NULL remote endpoint – Can be wrapped with a read call for simpler use

if ((num = recv(recvsock, &buf, MAXLEN, 0)) == -1) {

perror("Server: recv failed"); exit(1); }

slide-58
SLIDE 58

Lecture 10 Page 58 CS 118 Winter 2016

Putting it all together

  • How do you arrange a client/server connection

with sockets?

  • Server creates a local socket and binds to it
  • Client creates a local socket and connects

it to the server’s external name

  • Server listens on the socket and accepts

incoming messages

  • Client writes, server reads
slide-59
SLIDE 59

Lecture 10 Page 59 CS 118 Winter 2016

For example,

Server creates socket Server binds to socket Server listens Server accepts Client creates socket Client connects Client writes to socket Server reads from socket

slide-60
SLIDE 60

Lecture 10 Page 60 CS 118 Winter 2016

Issues

  • Messages without bind
  • A horse with no name
  • Socket type and boundaries
slide-61
SLIDE 61

Lecture 10 Page 61 CS 118 Winter 2016

No bind, no problem

  • Stateless (connectionless) messages

– Bind indicates local end – What if you omit bind? – The OS figures out where the message should go and adds the source address itself

slide-62
SLIDE 62

Lecture 10 Page 62 CS 118 Winter 2016

Automatic source addressing

  • What do you already indicate?

– Destination address (required in sendto) – Includes “address family”

  • Unix-speak for layer name
  • Only one layer of each name!

– Includes destination address

  • Use that with an internal (route) table to pick an
  • utgoing interface
  • Set the source address to the outgoing interface
slide-63
SLIDE 63

Lecture 10 Page 63 CS 118 Winter 2016

What about ports?

  • Recall:

– Port distinguishes different TCP or UDP layer endpoints within a IP layer

  • How do you know the one to send to?

– Someone tells you! – From a published list – Because you’re replying to a message (or within a connection) already know

slide-64
SLIDE 64

Lecture 10 Page 64 CS 118 Winter 2016

What’s your port number?

  • Messages

– The one you know to send to – The one you got a message from (to reply)

  • Connections

– The one a server LISTENs on – The one a client CONNECTs to

slide-65
SLIDE 65

Lecture 10 Page 65 CS 118 Winter 2016

Port numbers

  • Ports are local to the pair communicating

– Identifies the socket (thus the process) on each end

  • Sometimes ports have common meaning

– At “first contact”, they help you pick who you’re talking with (i.e., client-side) – That’s why they’re registered by IANA

slide-66
SLIDE 66

Lecture 10 Page 66 CS 118 Winter 2016

Two meanings of ports

  • During first contact – expected process

– E.g., web server (80), secure server (443), email server (110), etc.

  • After that, just an endpoint identifier

– At the TCP/UDP layer

slide-67
SLIDE 67

Lecture 10 Page 67 CS 118 Winter 2016

Port meaning

  • By common convention (assumption)

– Groups:

  • System ports (80, 110, 53)
  • User ports (8080, etc.)
  • Dynamic ports (unassigned!)

– Assigned to “services” (TM expecting messages)

  • By other coordination

– Because you and the other endpoint agree – Port can mean anything you (and they) want

slide-68
SLIDE 68

Lecture 10 Page 68 CS 118 Winter 2016

Having no name

  • Bind with no name?

– Technically, you cannot – Bind to “0” = ANY (i.e., “don’t care”) – Works for IP address, TCP/UDP port

  • What happens when you need a name?

– If you picked ANY, the OS assigns you one – Address = based on path, from ones you “own” – Port = pick one not in use

slide-69
SLIDE 69

Lecture 10 Page 69 CS 118 Winter 2016

Socket types and boundaries

  • Sometimes send/recv boundaries match

– E.g., the channel preserves the boundaries – Sending messages – Sending data over a connection with markers

  • Sometimes, not so much

– E.g., TCP! – If you send 100 bytes, that might go in one TCP message, two, three, etc. – When the other side recvs, you don’t know what data is ready

slide-70
SLIDE 70

Lecture 10 Page 70 CS 118 Winter 2016

Summary

  • Naming is more than just for networking

– Names inside the machine – Binding between inside and outside names

  • Names are linked in a set of steps

– We used Unix as an example

  • Names also set expectations

– E.g., port number implies TM type (“service”)