COMPSCI 3N03Lecture3

Page 1: Introduction

  • COMPSCI 3N03: Computer Networks and Security Course

  • Overview of course content and focus areas.

Page 2: Foundation of Network Applications

  • Key concept: Development of network applications involving programs on different end systems communicating over a network.

    • Example: Web application comprising:

      • Browser program on user's device (e.g., laptops, PCs).

      • Web server program on web host.

    • Example: Peer-to-Peer (P2P) file sharing with programs on each participating host.

Page 3: Contributions to Internet Adoption

  • Numerous applications facilitate significant contributions to the wide adoption of the internet:

    • Social Networks: Instagram, TikTok.

    • Voice over IP: Skype, etc.

    • Various other applications continue to innovate the landscape of digital communication.

Page 4: Developing New Network Applications

  • Requirements for developing new network applications:

    • Software must run on multiple end systems and communicate via a network.

    • Familiarity with programming languages such as C, Java, or Python.

    • Limitations: Cannot write software for network core devices (e.g., routers, switches) that operate below the application layer.

Page 5: Fundamental Concepts in Networking

  • Service: Defines layer functionality.

    • Examples:

      • Ethernet: Unreliable subnet unicast/multicast/broadcast datagram service.

      • IP: Unreliable end-to-end unicast datagram service.

      • TCP: Reliable end-to-end bidirectional byte stream service.

  • Service Interface: How services are accessed (e.g., Socket Interface).

Page 6: Protocol Definition

  • Protocol: Rules and message formats governing communication between host devices.

    • Specifies message order, transmission, and reception actions.

    • David Wheeler’s principle: "All problems in computer science can be solved by another level of indirection."

Page 7: Network Architecture Overview

  • Architecture: The organization of implementations rather than the implementation itself.

    • Questions to consider:

      • Supported interfaces.

      • Functionality locations.

  • Modular design concept in network architecture.

Page 8: Network vs Application Architecture

  • Distinction between network architecture and application architecture:

    • Network Architecture: Fixed framework providing services to applications.

    • Application Architecture: Describes how applications are structured across multiple end systems, designed by application developers.

Page 9: Application Layer Architectures

  • Client-server architecture.

  • Peer-to-peer (P2P) architecture.

Page 10: Client-Server Architecture

  • Server:

    • Always-on host with a permanent IP address.

    • Data centers may consist of multiple servers for scaling.

  • Client:

    • Communicates solely with the server and may have dynamic IP addresses.

    • No direct communication between clients.

  • Examples: Web, FTP, email, Telnet.

Page 11: Peer-to-Peer (P2P) Architecture

  • Minimal reliance on dedicated servers.

  • Peers communicate directly with one another:

    • Request services from other peers and reciprocate.

    • Self-scaling: new peers add service capacity and create service demands.

Page 12: P2P Architecture Details

  • Direct peer-to-peer communication.

  • Peers exchange services among themselves, facilitating a self-scaling network.

Page 13: Challenges in P2P Architecture

  • Management complexities.

  • Potential security issues.

  • Performance challenges.

  • Reliability concerns.

Page 14: Communicating Processes

  • Process: Program executing on an end host.

    • Inter-process communication within the same host is handled by the OS.

    • Processes on separate hosts exchange messages over a network.

  • Client Process: Initiates communication.

  • Server Process: Waits for incoming contacts.

Page 15: Process Communication via Sockets

  • Communication between processes and networks occurs through sockets (Application Programming Interface - API).

  • Sockets facilitate sending and receiving messages.