Network Applications

Creating a network app

write programs that:

  • run on (different) end systems
  • communicate over network
  • e.g., web server software communicates with browser software

no need to write software for network-core devices

  • network-core devices do not run user applications
  • applications on end systems allows for rapid app development, propagation

Client-Server Paradigm

server:

  • always-on host
  • permanent IP address
  • often in data centers, for scaling

clients:

  • contact, communicate with server
  • may be intermittently connected
  • may have dynamic IP addresses
  • do not communicate directly with each other
  • examples: HTTP, IMAP, FTP

Peer-peer Architecture

  • no always-on server
  • arbitrary end systems directly communicate
  • peers request service from other peers, provide service in return to other peers
    • self scalability – new peers bring new service capacity, as well as new service demands
  • peers are intermittently connected and change IP addresses
    • complex management
  • example: P2P file sharing

Processes Communicating

Process: program running within a host

  • within same host, two processes communicate using inter-process communication (defined by OS)
  • processes in different hosts communicate by exchanging messages

Note

Applications with P2P architectures have client processes & server processes

Sockets

  • process sends/receives messages to/from its socket
  • socket analogous to door
    • sending process shoves message out door
    • sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process
    • two sockets involved: one on each side

Addressing processes

  • to receive messages, process must have identifier
  • host device has unique 32-bit IP address

Does IP address of host on which process runs suffice for identifying the process?

No, many processes can be running on same host.

  • identifier includes both IP address and port numbers associated with process on host
  • Example port numbers:
    • HTTP server: 80
    • mail server: 25
  • to send HTTP message to gaia.cs.umass.edu web server:
    • IP address: 128.119.245.12
    • port number: 80
  • more shortly…

An application-layer protocol defines:

  • types of messages exchanged,
    • e.g., request, response
  • message syntax: - what fields in messages & how fields are delineated
  • message semantics - meaning of information in fields
  • rules for when and how processes send & respond to messages
  • open protocols:
    • defined in RFCs, everyone has access to protocol definition
    • allos for interoperability
    • e.g., HTTP, SMTP
  • proprietary protocols:
    • e.g., Skype, Zoom

What transport service does an app need?

data integrity

  • some apps require 100% reliable data transfer
  • other apps (e.g., audio) can tolerate some loss

timing

  • some apps (e.g., Internet telephony, interactive games) require low delay to be “effective”

throughput

  • some apps (e.g., multimedia) require minimum amount of throughput to be “effective”
  • other apps (“elastic apps”) make use of whatever throughput they get

security

  • encryption, data integrity

Internet transport protocols services

TCP service:

  • reliable transport between sending and receiving process
  • flow control: sender won’t overwhelm receiver
  • congestion control: throttle sender when network overloaded
  • connection-oriented: setup required between client and server processes
  • does not provide: timing, minimum throughput guarantee, security

UDP service:

  • unreliable data transfer between sending and receiving process
  • does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, or connection setup.

Why bother? Why is there a UDP?