Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between...

30
ì Computer Systems and Networks ECPE 170 – Jeff Shafer – University of the Pacific Networking Fundamentals

Transcript of Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between...

Page 1: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

ìComputer Systems and NetworksECPE 170 – Jeff Shafer – University of the Pacific

NetworkingFundamentals

Page 2: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Persons of the Day: Vint Cerf / Bob Kahn

ì Co-designers of TCP/IP protocol suiteì Enables reliable

communication across unreliable network

ì Foundation of Internet

ì 2004 ACM Turing Awardwinners (shared)

ì 2005 Presidential Medal of Freedom winners (shared)

Spring 2020Computer Systems and Networks

3

Page 3: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Person of the Day: Tim Berners-Lee

ì Inventor of “World Wide Web”ì First implementation of

HTTP (HyperText Transfer Protocol) to communicate between client and server

ì Knighted by Queen Elizabeth II in 2004

Spring 2020Computer Systems and Networks

4

Page 4: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

ìComputer Networks

Spring 2020Computer Systems and Networks

5

Page 5: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Disclaimer

ì These topics take an entire semester of COMP 177 (Computer Networking) to explore!

ì A few days (most of which is lab time) is only sufficient for the briefest of overviews…

Spring 2020Computer Systems and Networks

6

Page 6: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Network Model

7

Application Layer(Myriad examples: Web browser, web server, etc…)

Transport Layer(Reliability – e.g. TCP)

Network Layer(Global Network – e.g. IP)

Link Layer(Local Area Network – e.g. Ethernet)

Physical Layer (“Bit on a Wire”)

Spring 2020Computer Systems and Networks

Page 7: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Application Layer

8

Application Layer

Transport LayerNetwork Layer

Link LayerPhysical Layer

HTTP DNS IMAP

Sockets

… and many more!

Skype BitTorrent RDP

SSH NTP NFS

Spring 2020Computer Systems and Networks

Page 8: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Application Layer

ì The application layer programmer can make many (fantastic) assumptions about the networkì The network is reliable

ì Messages are not lostì Messages are received in the order they are sent

ì The network can transfer data of infinite length(you can send as much data as desired)

ì You can deliver messages directly to a specific application on a specific computer anywhere on the planet

ì The lower layers (transport, network, link, …) do all the heavy-lifting to make these assumptions true

Spring 2020Computer Systems and Networks

9

Page 9: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Client-Server Architecture

Serverì Always-on host

ì Always has a known IP address

ì Lots of bandwidth

ì Server process: process that waits to be contacted

Clientì Communicate with server

ì May be intermittently connected

ì May have dynamic IP addresses

ì Do not communicate directly with each other

ì Client process: process that initiates communication

Spring 2020Computer Systems and Networks

10

Page 10: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Why Do We Have Sockets?

ì Challenge – Inter-process communication

ì A process is an independent program running on a hostì Separate memory space

ì How do processes communicate with other processesì On the same host?ì On different hosts?

ì Send messages between each other

11

Spring 2020Computer Systems and Networks

Page 11: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

12

What is a Socket?

ì An interface between process (application) and networkì The application creates a socketì The socket type dictates the style of communication

ì Reliable vs. best effortì Connection-oriented vs. connectionless

ì Once configured the application canì Pass data to the socket for network transmissionì Receive data from the socket (transmitted through

the network by some other host)

Spring 2020Computer Systems and Networks

Page 12: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

What is a Socket?ì Process sends/receives messages

to/from its socket

ì Socket analogous to doorì Sending process shoves message

out doorì Transport infrastructure on other

side of door carries message to socket at receiving process

ì Imagine you are just writing to a file…

ì API allow customization of socketì Choose transport protocolì Choose parameters of protocol

13

process

TCP withbuffers,variables

socket

host orserver

process

TCP withbuffers,variables

socket

host orserver

Internet

controlledby OS

controlled byapp developer

Spring 2020Computer Systems and Networks

Page 13: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Addressing Processes

ì To receive messages, each process on a host must have an identifierì IP addresses are uniqueì Is this sufficient?

ì No, there can thousands of processes running on a single machine (with one IP address)

ì Identifier must includeì IP addressì and port number (example: 80 for web)

14

Spring 2020Computer Systems and Networks

Page 14: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

ì Each host has65,536 ports

ì Some ports are reserved for specific appsì FTP (20, 21), Telnet (23), HTTP (80), etc…

ì Outgoing ports (on clients) can be dynamically assigned by OS in upper region (above 49,152) – called ephemeral ports

ì See http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

15

Ports

Port 0

Port 1

Port 65535

Spring 2020Computer Systems and Networks

Page 15: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Socket Usage: Client Program

ì Basic socket functions for connection-oriented (TCP) clients

1. socket() create the socket descriptor

2. connect() connect to the remote server

3. send(),recv() communicate with the server

4. close() end communication by closingsocket descriptor

16

Spring 2020Computer Systems and Networks

Page 16: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Application-Layer Protocol

ì Sockets just allow us to send raw messages between processes on different hostsì Transport service takes care of moving the data

ì What exactly is sent is up to the applicationì An application-layer protocolì HTTP, NTP, IMAP, SFTP, Skype, etc…

17

Spring 2020Computer Systems and Networks

Page 17: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Application-Layer Protocol

ì Both the client and server speaking the protocol must agree onì Types of messages exchanged

ì e.g., request, response ì Message syntax

ì What fields are in messagesì How fields are delineated

ì Message semantics ì Meaning of information in fields

ì Rules for when and how processes send and respond to messages

18

Spring 2020Computer Systems and Networks

Page 18: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Hypertext Transfer Protocol Overview

ì HTTP is the application layer protocol for the web

ì It is how the client and server communicate

ì Client/server modelì Client: browser that

requests, receives, “displays” Web objects

ì Server: Web server sends objects in response to requests

19

PC runningChrome

Server running

Apache Webserver

Mac runningSafari

HTTP request

HTTP request

HTTP response

HTTP response

Spring 2020Computer Systems and Networks

Page 19: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Web and HTTP

ì Web page consists of base HTML file and (potentially) many referenced objectsì HTML file, PNG image, Flash video, …

ì Each object is addressable by a URL

ì Example URL:

Spring 2020Computer Systems and Networks

20

www.somecompany.com/someDept/image.png

host name path name

Page 20: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

HTTP Request Message (Client->Server)

Spring 2020Computer Systems and Networks

21

GET /about/ HTTP/1.1Host: www.google.comUser-agent: Mozilla/13.0Connection: close Accept-language:en<line with only \r\n>

request line(GET, POST,

HEAD commands)

headerlines

Carriage return, line feed

indicates end of message

HTTP is a text-based protocol. The client sendsASCII bytes in the request, and the server

responds with ASCII bytes in the reply.

Page 21: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

HTTP Response Message (Server -> Client)

Spring 2020Computer Systems and Networks

22

HTTP/1.1 200 OKVary: Accept-EncodingContent-Type: text/htmlLast-Modified: Tue, 10 Apr 2012 09:33:47Date: Tue, 10 Apr 2012 17:50:51 GMTExpires: Tue, 10 Apr 2012 17:50:51 GMTCache-Control: private, max-age=0X-Content-Type-Options: nosniffServer: sffeX-XSS-Protection: 1; mode=blockTransfer-Encoding: chunked<line with only \r\n><Data begins here...>

status line(protocol

status code, status phrase)

headerlines

data, e.g., requestedHTML file

Page 22: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

HTTP Response Status Codes

200 OKì Request succeeded, requested object later in this message

301 Moved Permanentlyì Requested object moved, new location specified later in this

message (Location:)

400 Bad Requestì Request message not understood by server

404 Not Foundì Requested document not found on this server

505 HTTP Version Not Supported

Spring 2020Computer Systems and Networks

23

A few examples out of many!

Page 23: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

ìOther Layers

Spring 2020Computer Systems and Networks

24

Page 24: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Link Layer

25

Application LayerTransport LayerNetwork Layer

Link Layer

Physical Layer

Framing

Ethernet!

MAC addressesHubs & Switches

Transfer between

neighbors

Spring 2020Computer Systems and Networks

Page 25: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Network Layer

26

Application LayerTransport Layer

Network Layer

Link LayerPhysical Layer

IP – Internet Protocol!

IP Addresses Routers Routing Protocols

End-to-End packet

transfer

Spring 2020Computer Systems and Networks

Page 26: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

IP Properties

ì Datagramì Each packet is individually

routedì Packets may be

fragmented or duplicatedby underlying networks

ì Connectionlessì No guarantee of delivery in

sequence

ì Unreliableì No guarantee of deliveryì No guarantee of integrity

of data

ì Best effortì Only drop packets when

necessaryì No time guarantee for

delivery

Spring 2020Computer Systems and Networks

27

Ethernet networks provide the same “guarantees”

Page 27: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Transport Layer

28

Application LayerTransport Layer

Network LayerLink Layer

Physical Layer

TCP UDP

End-to-End message transfer

Sockets

Flow Control Congestion Control

Spring 2020Computer Systems and Networks

Page 28: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Transport Layer

ì Link Layerì IP: Un-reliable, order not guaranteed, delivery of

individual messages

ì Transport Layer (Choose between these with your sockets)ì UDP: Un-reliable, order not guaranteed, delivery of

individual messagesì TCP: Reliable, in-order delivery of data stream

ì TCP is built on top of IP!

29

Spring 2020Computer Systems and Networks

Page 29: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

ìDemos

Spring 2020Computer Systems and Networks

30

Page 30: Networking Fundamentals - University of the Pacific · 12 What is a Socket? ìAn interface between process (application) and network ìThe application creates a socket ìThe socket

Demos for Lab 8

1. Walkthrough of client.py and server.pydemo programs

2. Impersonate web browser via Telnet(HTTP request to http://neverssl.com/ )

3. Run display.py with example image

4. Monitor display.py with Wireshark and examine packet trace

Spring 2020Computer Systems and Networks

31