CPEN241 – INFORMATION NETWORKING I Study Notes

CPEN241 – INFORMATION NETWORKING I

Course Overview

  • CPEN241 is a foundational course on Information Networking, specifically focusing on network application architectures and protocols. The course will cover various topics essential for understanding how applications interact with underlying network technologies.

    • Introduction to networking concepts and applications.

    • Key architectures and protocols, including both client-server and peer-to-peer paradigms.

Chapter 1: Introduction

  • Basic principles of networking and applications.

Chapter 2: Application Layer

  • Topics Covered:

    1. Principles of network applications.

    2. Web and HTTP protocols.

    3. E-mail protocols (SMTP, IMAP).

    4. The Domain Name System (DNS).

    5. Video streaming and content distribution networks (CDNs).

    6. Socket programming with UDP and TCP.

Application Layer Principles
  • Applications are categorized based on their architecture:

    • Client-Server Paradigm:

    • Characteristics:

      • Server: Always available, often with a static IP, located in data centers.

      • Client: May be intermittently connected with dynamic IP addresses, cannot directly communicate with each other. Examples include HTTP, IMAP, and FTP.

    • Peer-to-Peer Architecture:

    • Characteristics:

      • No always-on server; arbitrary end systems communicate directly.

      • Peers can request and provide services to each other.

      • Each new peer adds service capacity and demands.

      • Example: BitTorrent for file sharing.

Communication Between Processes
  • Processes:

    • Definition: A process is a program running within a host.

    • Interaction:

    • Within the same host: Use inter-process communication (specified by the operating system).

    • Between different hosts: Use message exchange.

  • Client Process: Initiates communication.

  • Server Process: Waits to be contacted.

Sockets and Addressing
  • Sockets: Analogous to doors for processes.

    • A socket allows for sending and receiving messages.

    • The sending process relies on transport infrastructure to deliver messages to the receiving process's socket.

  • Addressing Processes:

    • A process must have a unique identifier to receive messages:

    • IP address of the host (32-bit).

    • Port number associated with the process.

    • Example:

    • To send an HTTP message to a web server:

      • IP Address: 128.119.245.12

      • Port Number: 80

Application-Layer Protocols
  • Definition and Components: What an application-layer protocol defines

    • Types of messages exchanged (e.g., requests and responses).

    • Message syntax and semantics.

    • Rules for message exchange.

    • Open Protocols: Defined in public RFCs for interoperability (e.g., HTTP, SMTP).

    • Proprietary Protocols: Restricted access to protocol definitions (e.g., certain proprietary systems like Zoom).

Application Service Requirements
  • Data Integrity: Some applications (e.g., file transfer, web transactions) require 100% reliability.

  • Timing: Certain applications (e.g., real-time audio/video) require low delay to function effectively.

  • Throughput: Different applications require varying levels of throughput, categorized as:

    • Elastic apps: Utilize available bandwidth.

    • Specific service requirements based on application type.

Internet Transport Protocols
  • TCP:

    • Provides reliable transport with flow control and congestion control.

    • Connection-oriented, requiring setup.

  • UDP:

    • Offers unreliable datagrams without flow control, congestion control, or connection setup.

    • Useful for applications that tolerate some loss (e.g., streaming).

HTTP Overview
  • HTTP: Hypertext Transfer Protocol

    • Client/server model.

    • Stateless protocol with requests and responses initiated by clients (e.g., browsers) and fulfilled by servers (e.g., web servers).

    • Connection Types:

    • Non-persistent and persistent connections impacts efficiency.

    • Non-persistent HTTP:

      • Multiple TCP connections needed for multiple objects.

    • Persistent HTTP:

      • A single connection can handle multiple requests thus reducing the overhead.

Managing User/Server State: Cookies
  • Cookies used to maintain state between transactions:

    • Four components are involved in functioning:

    1. Cookie header in HTTP response messages.

    2. Cookie header in request messages.

    3. Cookie files on user’s host managed by the browser.

    4. Backend databases at web servers for user identification.

  • Types of cookies:

    • First-party cookies (from visited website) and third-party cookies (from trackers).

Web Caching
  • Caching helps to reduce the server load and latency.

  • User-configured browsers can benefit by directing HTTP requests to local web caches.

  • A cache returns stored objects or requests the original server if not cached.

Video Streaming & Content Distribution Networks (CDNs)
  • Multimedia streaming challenges:

    • High bandwidth requirements for streaming media.

    • Solutions include utilizing distributed application-level infrastructures such as CDNs.

  • DASH (Dynamic Adaptive Streaming over HTTP):

    • A methodology that divides video files into chunks and adapts to available bandwidth.

Socket Programming
  • Socket Fundamentals: A socket is the interface between an application process and the transport protocol.

  • Programming with UDP:

    • Unreliable transfer of datagrams.

    • No connection setup.

  • Programming with TCP:

    • Reliable, ordered byte stream.

    • Necessary to establish connections before data transfer.

QUIC Protocol
  • The QUIC (Quick UDP Internet Connections) protocol enhances HTTP performances by allowing faster connection setups.

    • Combines TCP and TLS handshakes into a single operation for reduced latency.

Summary of Chapter 2
  • Understanding networking principles from applications to protocols is crucial for efficiently designing and implementing networking applications, including:

    • Client-server vs. peer-to-peer models.

    • Characteristics of common application protocols: HTTP, SMTP, IMAP.

    • DNS functions and its importance in networking.

    • Concepts of scalability, reliability, and efficiency in the context of web applications and networking.