Sockets: Overview Matt Ruffalo Adapted from content by Stuart - - PowerPoint PPT Presentation

sockets overview
SMART_READER_LITE
LIVE PREVIEW

Sockets: Overview Matt Ruffalo Adapted from content by Stuart - - PowerPoint PPT Presentation

Sockets: Overview 1/13 Sockets: Overview Matt Ruffalo Adapted from content by Stuart Morgan, 2003 April 9, 2013 Sockets: Overview 2/13 Overview Sockets from 10,000 feet communicating across an arbitrary networks (LAN, Internet, etc.)


slide-1
SLIDE 1

Sockets: Overview 1/13

Sockets: Overview

Matt Ruffalo Adapted from content by Stuart Morgan, 2003 April 9, 2013

slide-2
SLIDE 2

Sockets: Overview 2/13 Overview

Sockets from 10,000 feet

▶ Overall idea: provide a reasonably high-level method of

communicating across an arbitrary networks (LAN, Internet, etc.) without worrying about hardware.

▶ Lets you use TCP or UDP (more on those later) with the

same API

▶ A few ugly API details, but in the abstract they are very

straightforward and uniform.

slide-3
SLIDE 3

Sockets: Overview 3/13 ISO/OSI Model

ISO/OSI Networking Model

7 layers

7 Application 6 Presentation 5 Session 4 Transport 3 Network 2 Data Link 1 Physical Useful in theory, but network communication doesn’t actually work this way

slide-4
SLIDE 4

Sockets: Overview 4/13 ISO/OSI Model

ISO/OSI Networking Model

7 layers

▶ In principle, a layer only has to deal with the one directly

below it

▶ Transport layer relies on network layer for host addressing ▶ Network layer uses data link layer to communicate over

physical media

▶ Data link layer doesn’t care about sending voltage signals over

a wire

slide-5
SLIDE 5

Sockets: Overview 5/13 ISO/OSI Model

ISO/OSI Networking Model

7 layers

▶ Real Internet isn’t implemented this way ▶ Top three layers are blended together ▶ Unix socket communication deals with the third and fourth

layers (transport and network)

slide-6
SLIDE 6

Sockets: Overview 6/13 From 100 feet

A few more details

Connections or not?

▶ There are two models of socket programming:

connection-oriented (TCP) and connectionless (UDP).

▶ Each has strengths in different applications ▶ Sockets are identified the same in both protocols: (IP, port) ▶ Different services use different ports by convention

▶ HTTP: 80, SMTP: 25, SSH: 22, . . .

▶ Sockets are “bound” to port numbers on creation

slide-7
SLIDE 7

Sockets: Overview 7/13 Connection-oriented

Connection-oriented paradigm

Server Client Create a socket with socket Create a socket with socket Bind the socket to a port with bind Set up a connection queue with listen Establish a connection with accept Request a connection with connect Read and write data with read and write Read and write data with read and write

slide-8
SLIDE 8

Sockets: Overview 8/13 Connectionless

Connectionless paradigm

Server Client Create a socket with socket Create a socket withsocket Bind the socket to a port with bind Bind the socket to a port with bind Send and receive data with recvfrom and sendto Send and receive data with recvfrom and sendto

slide-9
SLIDE 9

Sockets: Overview 9/13 Notes

A few things to note:

▶ The commands have intuitive names. It’s fairly clear what

each of these commands does, which makes the models fairly easy to use.

▶ Parameters are not so straightforward

▶ Not a C-specific model. Although the details of these

commands certainly differ from language to language, the

  • verview above is fairly constant from language to language.

▶ Python and Java work in almost exactly the same way.

slide-10
SLIDE 10

Sockets: Overview 10/13 TCP vs. UDP

Main difference: reliability of data stream

Say you are standing in the Strosacker balcony, and your friend is

  • n the stage, and you want to pass notes (don’t ask why you can’t

just shout, it’s an analogy)

▶ To simulate TCP, you get a long string, and throw one end

down to your friend. Each of you holds one end tight, and to pass a note down you punch a hole in it, and thread it onto the string, where gravity pulls it down to your friend, who will get every note, all in the order that you sent them.

slide-11
SLIDE 11

Sockets: Overview 11/13 TCP vs. UDP

Main difference: reliability of data stream

Say you are standing in the Strosacker balcony, and your friend is

  • n the stage, and you want to pass notes (don’t ask why you can’t

just shout, it’s an analogy)

▶ For UDP, you write all your messages on paper airplanes and

throw them to your friend. Now, most will get there (assuming you make good airplanes), but occasionally, some will go off in a random direction, or crash right away, so your friend never gets them. What’s more, some of them may do a lot of looping and hovering, and take a long time to arrive, while others will go directly, so there’s no guarantee they will get there in the order you sent them.

slide-12
SLIDE 12

Sockets: Overview 12/13 Client/Server Pseudocode

Server

main { srv = socket() bind(srv, 80) listen(srv) while (1) { clnt = accept(srv) if (fork() == 0) { serveRequest(clnt) exit() } } } void serveRequest(clnt) { request=read(clnt) if (request starts with "GET") write(clnt, "response") close(clnt) }

slide-13
SLIDE 13

Sockets: Overview 13/13 Client/Server Pseudocode

Client

main { client = socket() connect(client, hostname, 80) write(client, "GET /index.html HTTP/1.0") read(client, response) printf(response) close(client) }