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.