Course status

52
• Course status – Talked to department head again and cannot increase the cap, sorry if you cannot register

description

Course status Talked to department head again and cannot increase the cap, sorry if you cannot register. Review. In the last lecture, we discussed URL – the three parts of an URL How a webpage is fetched What is TCP, IP, UDP, DNS The idea of dividing functionalities into layers - PowerPoint PPT Presentation

Transcript of Course status

Page 1: Course status

• Course status– Talked to department head again and cannot

increase the cap, sorry if you cannot register

Page 2: Course status

Review

• In the last lecture, we discussed– URL – the three parts of an URL– How a webpage is fetched– What is TCP, IP, UDP, DNS– The idea of dividing functionalities into layers– Packet switching vs. circuit switching

Page 3: Course status

Topics in this lecture

• A broad view of the Internet architecture (the hardware we can play with)

• High-level introduction of the protocols of the Internet

• A little bit more on TCP/IP• Basic socket programming

Page 4: Course status

Computer Science, FSU 4

The Internet

• The Internet is collection of networks and routers that span the world and use the TCP/IP protocols to form a single, cooperative virtual network– Within a network, such as Ethernet, computers can talk to each

other using the Ethernet language– There are (were) other kinds of networks, such as IBM token

ring, who speaks other language– The goal is to allow computers on any kind of networks to speak

to each other– To do this, we need hardware – routers that connect multiple

networks physically and software – a set of protocols (languages) that all computers understand

Page 5: Course status

How the hardware is set up

• Users subscribe to ISPs (Internet Service Provider, such as Comcast)

• Local ISPs rely on national ISPs to send/receive data. The national ISPs provide service to local ISPs, just like the local ISPs provide service to your apartment – hierarchy

• The ISPs in the highest level, meaning that they are not the customer of any other ISPs, are called tier-1 ISPS, such as Verizon, AT&T. They have a fast backbone.

Page 6: Course status

A Simplified Illustration of Internet Architecture

LANs

ISP ISPcompany university

national network

nationalnetwork

NAP

company

nationalnetwork

Page 7: Course status

How do tier-1 ISPs talk to each other

• We buy service from local ISPs and local ISPs buy service from higher level ISPs. The service provider has obligation to carry all data for its customers.

• Tier-1 ISP are not the customer of any other ISP. They exchange data at NAP (national access point, a room with super fast routers) or through private peering – they compete with each other for customers but collaborate in private.

Page 8: Course status

Sprint network

Computer Science, FSU 8

Page 9: Course status

Another Interesting figure about Internet found from the Internet

Computer Science, FSU 9

http://www.cs.fsu.edu/~zzhang/Internet_map.pdf

Page 10: Course status

Computer Science, FSU 10

Fundamental issues that need to be resolved

• Naming/Addressing– How to find name/address of the party (or parties) you would like

to communicate with– Address: byte-string that identifies a node

• Routing/Forwarding: process of determining how to send packets towards the destination based on its address– Finding out neighbors, building routing tables

• Resource sharing– Fundamentally, all nodes use a shared infrastructure to

send/receive information. If all nodes becomes aggressive, everybody will be hurt.

Page 11: Course status

Computer Science, FSU 11

Layered Architecture• Layering simplifies the architecture of

complex system• Layer N relies on services from layer

N-1 to provide a service to layer N+1• Interfaces define the services offered• Service required from a lower layer is

independent of it’s implementation– Layer N change doesn’t affect other layers– Information/complexity hiding– Similar to object oriented methodology

Page 12: Course status

Computer Science, FSU 12

Protocols

• Protocol: rules by which network elements communicate• Protocols define the agreement between peering entities

– The format and the meaning of messages exchanged

• Protocols in everyday life– Examples: traffic control, open round-table discussion etc

Page 13: Course status

Computer Science, FSU 13

ISO/OSI and Internet Reference Models

TCP

IP

HTTP, FTP

Page 14: Course status

Computer Science, FSU 14

Protocols and Services• Protocols are used to implement services

– Peering entities in layer N provide service by communicating with each other using the service provided by layer N-1

• Logical vs physical communication

Page 15: Course status

Computer Science, FSU 15

TCP/IP Reference Model

• Application layer• Examples: smtp, http, ftp etc

– Process-to-process communication– All layers exist to support this layer

• Transport layer• Examples: TCP, UDP

– End-to-end delivery• End-host to end-host communication

– Flow/Error control

Page 16: Course status

TCP/IP Reference Model

• Network layer• Examples: IP

– Naming and addressing– Routing of packets within a network– Avoidance of congested/failed links

Page 17: Course status

Computer Science, FSU 17

TCP/IP Reference Model

• Data link layer• Examples: Ethernet, PPP

– Data transfer between neighboring elements• Framing and error/flow control• Media access control (MAC)

• Physical layer– Transmitting raw bits (0/1) over wire

Page 18: Course status

Computer Science, FSU 18

Protocol Packets• Protocol data units (PDUs): packets exchanged between peer entities• Service data units (SDUs): packets handed to a layer by an upper layer• Data at one layer is encapsulated in packet at a lower layer

– Envelope within envelope: PDU = SDU + (optional) header or trailer

Page 19: Course status

Computer Science, FSU 19

Comments on Layering

• Advantages– Modularization eases maintenance and updating

• Drawbacks?– Which layer should implement what functionality?

• Hop-by-hop basis or end-to-end basis

– Duplication of functionality between layers• Error recovery at link layer and transport layer

• In wireless network research, “cross-layer-design” is becoming more and more popular

Page 20: Course status

Computer Science, FSU 20

Internet Protocol “Zoo”ap

plicati

on

SMTP

TelnetNFS/Sun RPC

FTP DNSHTTP

RealAudio RealVideo

Page 21: Course status

Computer Science, FSU 21

The Internet Network layer

routingtable

Routing protocols•path selection•RIP, OSPF, BGP

IP protocol•addressing conventions•packet handling conventions

ICMP protocol•error reporting•router “signaling”

Transport layer: TCP, UDP

Link layer

physical layer

Networklayer

Page 22: Course status

Computer Science, FSU 22

Internet Protocol (IP)

• Universal service in a heterogeneous world– IP over everything

• Virtual overlay network• Globally unique logical address for a host• Address resolution

– logical to physical address mapping

Page 23: Course status

Computer Science, FSU 23

Internet Protocol

• Connectionless unreliable datagram service• Packets carry a source and a destination address• Each packet routed independently• No guarantee that network will not lose packets

– Error recovery is up to end-to-end protocols

Page 24: Course status

Computer Science, FSU 24

Transport between Neighbors

• Using underlying link layer transmission mechanism– Example: Ethernet, Token Ring, PPP

• Mapping from logical IP address to physical MAC address– Address Resolution Protocol (ARP)

Page 25: Course status

Computer Science, FSU 25

End to End Transport Protocols

TCP service:• connection-oriented: setup

required between client, server

• reliable transport between sender and receiver

• flow control: sender won’t overwhelm receiver

• congestion control: throttle sender when network overloaded

UDP service:• unreliable data

transfer between sender and receiver

• does not provide: connection setup, reliability, flow control, congestion control

Q:Why UDP?

Page 26: Course status

Computer Science, FSU 26

Internet Philosophy

• Network provides barebones service– Connectionless unreliable datagram by IP

• Value-added functions performed “end to end”– Error recovery and flow control by TCP

• End user/application knows better– Packet loss may be tolerable for voice

• Also known as “end-to-end argument”

Page 27: Course status

Computer Science, FSU 27

Client-Server Paradigm

Typical network app has two pieces: client and server

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

Client:initiates contact with server (“speaks first”)typically requests service from serverServer:provides requested service to client

request

reply

Page 28: Course status

Computer Science, FSU 28

The Web: The HTTP Protocol

hypertext transfer protocol

• Web’s application layer protocol

• client/server model– client: browser that

requests, receives, “displays” Web objects

– server: Web server sends objects in response to requests

PC runningExplorer

Server running

NCSA Webserver

Mac runningSafari

http request

http re

quest

http response

http re

sponse

Page 29: Course status

Computer Science, FSU 29

Interprocess Communication

• Within a single system– Pipes, FIFOs– Message Queues– Semaphores, Shared Memory

• Across different systems– BSD Sockets– Transport Layer Interface (TLI)

• Reference– Unix Network Programming by Richard Stevens

Page 30: Course status

Computer Science, FSU 30

BSD Socket API

• Introduced in 1981 BSD 4.1 UNIX• Function call interface to network services

• system and library calls

– Network application programming primitives

• Connects two sockets on separate hosts– Sockets are owned by processes– Processes communicate through sockets

Page 31: Course status

Computer Science, FSU 31

BSD Sockets and Internet Protocols

• API: BSD Sockets– Socket: source/destination IP addresses + port numbers

• Transport: TCP/UDP– TCP: in-order, reliable data transfer

• Connection-oriented– UDP: unreliable data transfer

• No connection set-up

• Network: IP– Connectionless, no guarantees

Page 32: Course status

Computer Science, FSU 32

Sockets: Conceptual View

Page 33: Course status

Computer Science, FSU 33

Connection-Oriented Application

1. Server gets ready to service clients– Creates a socket– Binds an address (IP interface, port number) to the

socket• Server’s address should be made known to clients• Why need this binding?

2. Client contacts the server– Creates a socket– Connects to the server

• Client has to supply the address of the server

3. Accepts connection requests from clients4. Further communication is specific to application

Page 34: Course status

Computer Science, FSU 34

Page 35: Course status

Computer Science, FSU 35

Creating a socket

int socket(int family, int service, int protocol)• family: symbolic name for protocol family

– AF_INET, AF_UNIX

• type: symbolic name for type of service– SOCK_STREAM, SOCK_DGRAM, SOCK_RAW

• protocol: further info in case of raw sockets– typically set to 0

Returns socket descriptor

Page 36: Course status

Computer Science, FSU 36

Binding Socket with an Address

int bind(int sd, struct sockaddr *addr, int len)• sd: socket descriptor returned by socket()• addr: pointer to sockaddr structure containing

address to be bound to socket• len: length of address structure

Returns 0 if success, -1 otherwise

Page 37: Course status

Computer Science, FSU 37

Specifying Socket Address

struct sockaddr_in {short sin_family; /* set to AF_INET */u_short sin_port; /* 16 bit port number */struct in_addr sin_addr; /* 32 bit host address */char sin_zero[8]; /* not used */

};

struct in_addr {u_long s_addr; /* 32 bit host address */

};

Page 38: Course status

Computer Science, FSU 38

Bind Example

int sd;struct sockaddr_in ma;sd = socket(AF_INET, SOCK_STREAM, 0);

ma.sin_family = AF_INET;ma.sin_port = htons(5100);ma.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(sd, (struct sockaddr *) &ma, sizeof(ma)) != -1)

Page 39: Course status

Computer Science, FSU 39

Connecting to Server

int connect(int sd, struct sockaddr *addr, int len)• sd: socket descriptor returned by socket()• addr: pointer to sockaddr structure containing

server’s address (IP address and port)• len: length of address structure

Returns 0 if success, -1 otherwise

Page 40: Course status

Computer Science, FSU 40

Connect Example

int sd;struct sockaddr_in sa;sd = socket(AF_INET, SOCK_STREAM, 0);

sa.sin_family = AF_INET;sa.sin_port = htons(5100);sa.sin_addr.s_addr = inet_addr(“128.101.34.78”);if (connect(sd, (struct sockaddr *) &sa, sizeof(sa)) != -1)

Page 41: Course status

Computer Science, FSU 41

Connection Acceptance by Server

int accept(int sd, struct sockaddr *from, int *len)• sd: socket descriptor returned by socket()• from: pointer to sockaddr structure which gets

filled with client’s address• len: length of address structure

Blocks until connection requested or error• returns a new socket descriptor on success

Page 42: Course status

Computer Science, FSU 42

Connection-oriented Serverint sd, cd, calen;struct sockaddr_in ma, ca;

sd = socket(AF_INET, SOCK_STREAM, 0);ma.sin_family = AF_INET;ma.sin_port = htons(5100);ma.sin_addr.s_addr = htonl(INADDR_ANY);bind(sd, (struct sockaddr *) &ma, sizeof(ma));

listen(sd, 5);calen = sizeof(ca);cd = accept(sd, (struct sockaddr *) &ca, &calen);…read and write to client treating cd as file descriptor…

Page 43: Course status

Computer Science, FSU 43

More on Socket Descriptor• A 5-tuple associated with a socket

– {protocol, local IP address, local port, remote IP address, remote port}

• socket() fills the protocol component• local IP address/port filled by bind()• remote IP address/port by accept() in case of server• in case of client both local and remote by connect()

• Complete socket is like a file descriptor– Both send() and recv() through same socket

• accept() returns a new complete socket – Original one can be used to accept more connections

Page 44: Course status

Computer Science, FSU 44

Typical Server Structure

Page 45: Course status

Computer Science, FSU 45

Streams and Datagrams

• Connection-oriented reliable byte stream– SOCK_STREAM based on TCP– No message boundaries– Multiple write() may be consumed by one read()

• Connectionless unreliable datagram– SOCK_DGRAM based on UDP– Message boundaries are preserved– Each sendto() corresponds to one recvfrom()

Page 46: Course status

Computer Science, FSU 46

Input/Output Multiplexing

• Polling– Nonblocking option using fcntl()/ioctl()– Waste of computer resources

• Asynchronous I/O– Generates a signal on an input/output event– Expensive to catch signals

• Wait for multiple events simultaneously– Using select() system call– Process sleeps till an event happens

Page 47: Course status

Computer Science, FSU 47

Select System Call

int select(int maxfdp1, fd_set *readfds,fd_set *writefds, fd_set *exceptfds,struct timeval *timeout)

• maxfdp1: largest numbered file descriptor + 1• readfds: check if ready for reading• writefds: check if ready for writing• exceptfds: check for exceptional conditions• timeout: specifies how long to wait for events

Page 48: Course status

Computer Science, FSU 48

Timeout in Select

• Wait indefinitely till there is an event– Pass NULL to the timeout argument

• Don’t wait beyond a fixed amount of time– Pass pointer to a timeval structure specifying the number

of seconds and microseconds.

• Just poll without blocking– Pass pointer to a timeval structure specifying the number

of seconds and microseconds as 0

Page 49: Course status

Computer Science, FSU 49

Working with File Descriptor Set• Set is represented by a bit mask

– Keep a descriptor in/out the set, turn on/off corresponding bit• Using FD_ZERO, FD_SET and FD_CLR• Use FD_ISSET to check for membership

• Example:– Make descriptors 1 and 4 members of the readset

fd_set readset;FD_ZERO(&readset);FD_SET(1, &readset);FD_SET(4, &readset);

– Check if 4 is a member of readset• FD_ISSET(4, &readset);

Page 50: Course status

Computer Science, FSU 50

Return Values from Select

• Arguments readfds etc are value-result• Pass set of descriptors you are interested in• Select modifies the descriptor set

– Keeps the bit on if an event on the descriptor– Turns the bit off if no event on the descriptor

• On return, test the descriptor set– Using FD_ISSET

Page 51: Course status

Computer Science, FSU 51

Select Examplefd_set readset;FD_ZERO(&readset);FD_SET(0, &readset);FD_SET(4, &readset);select(5, &readset, NULL, NULL, NULL);if (FD_ISSET(0, &readset) {

/* something to be read from 0 */}if (FD_ISSET(4, &readset) {

/* something to be read from 4 */}

Page 52: Course status

Computer Science, FSU 52

Servers and Services

• Mapping between names and addresses (DNS)– Host name to address: gethostbyname()– Host address to name: gethostbyaddr()