Level 2 Tasks Report by Darshan
14 / 9 / 2024
Task 1 - OSI
1. Layered Structure
The OSI model divides network communication into seven distinct layers, each with specific functions:
- Physical Layer: Manages the physical transmission of data over a medium.
 - Data Link Layer: Handles node-to-node data transfer and error correction.
 - Network Layer: Manages logical addressing and routing between different networks.
 - Transport Layer: Ensures reliable end-to-end communication with error checking and flow control.
 - Session Layer: Manages sessions between applications, including synchronization and recovery.
 - Presentation Layer: Translates, encrypts, and compresses data for readability between systems.
 - Application Layer: Interfaces directly with user applications and provides network services.
 
2. Network Protocols
Network protocols define rules for data communication, ensuring effective device interaction:
- Ethernet: Facilitates LAN data transmission.
 - TCP/IP: Backbone of internet communication, ensuring reliable data delivery.
 - HTTP/HTTPS: For web page and secure data transmission.
 - SMTP: Used for email transfer.
 - DNS: Translates domain names into IP addresses.
 - FTP: Enables file transfers.
 
3. Routing and Switching
- Routing: Routers at the Network Layer determine the best path for data packets across multiple networks, utilizing routing tables to optimize data delivery.
 - Switching: Switches at the Data Link Layer forward data frames within a LAN based on MAC addresses. Unlike routing, switching handles local network data forwarding.
 
4. Handshakes
- Two-Way Handshake: Establishes a basic connection with synchronization and acknowledgment messages. Potential issues include delayed acknowledgments.
 - Three-Way Handshake: Uses SYN, SYN-ACK, and ACK steps to ensure a reliable connection, addressing issues like SYN duplication errors.
 
5. IP Addressing
- IPv4: Format of four decimal numbers (e.g., 192.155.12.1).
 - IPv6: Format of eight hexadecimal numbers (e.g., 2001:0db8:85a3:0000:0000:8a2e:0370:7334).
 
6. Advantages of the OSI Model
- Simplification: Breaks down network communication into manageable layers.
 - Standardization: Ensures consistency and compatibility across systems.
 - Troubleshooting: Simplifies problem diagnosis by isolating issues to specific layers.
 - Flexibility: Allows independent updates and improvements to various layers.
 
Task 2 - Serverless
1. Understanding Serverless Architecture
- Functions as a Service (FaaS): Abstracts server management from developers, focusing on code execution. Billing is based on function invocations and compute time, with automatic scaling based on demand.
 
2. AWS Lambda
- Overview: AWS Lambda executes code in response to events, eliminating server management and scaling automatically based on requests.
 - Key Features: Event-based execution, automatic scaling, and cost efficiency based on actual compute time.
 
3. AWS API Gateway
- Role: Provides REST endpoints to trigger Lambda functions, simplifying API creation, management, and integration with Lambda.
 
4. Serverless Framework
Purpose: A toolkit that simplifies the deployment and management of serverless applications, focusing on code rather than infrastructure.
Installation and Setup:
- Install globally with 
npm install -g serverless. - Configure with AWS credentials and create a service using a Serverless template.
 - Deployment: Use 
serverless deployto package and deploy the service. 
5. Testing Locally with Serverless Offline
- Setup: Initialize npm with 
npm init, install Serverless Offline usingnpm install serverless-offline --save-dev, and configureserverless.ymlto includeserverless-offline. - Running Locally: Use 
serverless offline startto start local emulation and test the Lambda function. 
Conclusion
The coursework highlights serverless computing with Node.js, focusing on:
- FaaS: Server management abstraction and automatic scaling.
 - AWS Lambda: Event-driven execution with cost-efficient billing.
 - AWS API Gateway: Simplified API management.
 - Serverless Framework: Deployment and management ease.
 - Serverless Offline: Local testing and development streamlining.
 
Task 3 - Sockets!
1. Understanding WebSockets
- Definition: WebSockets enable full-duplex communication channels over a single TCP connection, providing real-time data exchange.
 - Benefits: Real-time communication, persistent connection, and efficient data transmission with lower latency and reduced overhead.
 
How It Works:
- Handshake Process: Client initiates a connection with an 
Upgradeheader, server responds with HTTP 101, and the connection is upgraded for bidirectional communication. 
2. Socket.IO Overview
- Definition: Socket.IO is a library for real-time web applications, supporting bidirectional and event-based communication. It provides additional features beyond WebSockets, such as automatic reconnections and event handling.
 
3. Building a Real-Time Chat Application
Client-Side Implementation:
var socket = io();
$("form").submit(function (e) {
  e.preventDefault();
  socket.emit("chat message", name + ": " + $("#m").val());
  $("#messages").append($('').text("You: " + $("#m").val()));
  $("#m").val("");
  return false;
});
socket.on("chat message", function (msg) {
  $("#messages").append($("").text(msg));
});
Server-Side Implementation:
io.on("connection", (socket) => {
  console.log("new user connected");
  socket.on("joining msg", (username) => {
    name = username;
    io.emit("chat message", `___${name} joined the chat___`);
  });
  socket.on("disconnect", () => {
    console.log("user disconnected");
    io.emit("chat message", `___${name} left the chat___`);
  });
  socket.on("chat message", (msg) => {
    socket.broadcast.emit("chat message", msg);
  });
});
Conclusion
The course on Socket.io and real-time communication provided:
- WebSocket Protocol: Full-duplex communication with lower latency and overhead.
 - Socket.IO: Enhanced features for real-time applications.
 - Practical Implementation: Building and handling real-time chat applications with Socket.IO.
 
Task 4 - Make a Web app
1. Overview
The Resource Library Website project aims to manage and access library resources through an online platform. Key features include:
- Library Dashboard: Displays library statistics and resource details.
 - Cataloging and Classification: Organizes materials with unique identifiers and categories.
 - User Account Management: Manages user accounts and notifications for overdue items.
 - Search and Browse: Enables searching by title, author, genre, ISBN, and publisher.
 
2. Technologies Used
- Node.js / Express.js: Scalable network applications and server management.
 - Pug / Jade Templating Engine: Dynamic HTML content rendering.
 - MongoDB Atlas: Cloud-based NoSQL database service.
 - Mongoose ODM: Schema validation and data management with MongoDB.
 - Git & GitHub: Version control and collaboration.
 - Glitch: Online IDE and hosting for JavaScript and Node.js.
 
3. Practical Implementation
- Development Environment: Install Node.js, clone the repository, and install dependencies.
 - Running Locally: Use specific commands based on your OS to start the server.
 - Accessing the Application: Navigate to 
http://localhost:3000/to interact with the site. 
4. Development Workflow
- Code Management: Track changes and collaborate with Git and GitHub.
 - Dynamic Content: Use Pug for server-side HTML rendering.
 - Database Management: Manage data with MongoDB and Mongoose.
 - Deployment: Use Glitch for instant hosting and deployment.
 
Conclusion
The Resource Library Website project emphasized:
- Technology Integration: Effective use of Node.js, Express.js, Pug, MongoDB, and Mongoose.
 - Development Workflow: Setting up environments, managing code, and deploying applications.
 - Practical Features: Implementing cataloging, user management, and search functionalities.
 
