Computer Networks Lab: Implementation Procedures

EXP 2 — Multi-User Chat Server (TCP)

Server

  1. Start server.
  2. Create ServerSocket and bind to port.
  3. Display server started.
  4. Accept client connection.
  5. Assign unique client ID.
  6. Send ID to client.
  7. Store client in list.
  8. Create thread for client.
  9. Read client messages continuously.
  10. Display messages on server.
  11. Enter target client ID and message for private send.
  12. Send message to selected client.
  13. Remove disconnected client.
  14. Repeat for new clients.

Client

  1. Start client.
  2. Connect to server (localhost:5000).
  3. Display connecting message.
  4. Receive client ID.
  5. Start thread to listen for messages.
  6. Display received messages.
  7. Enter message via console.
  8. Send message to server.
  9. Enter /exit to terminate.
  10. Close socket and stop.

EXP 3 — Web Proxy Server

Server

  1. Import required packages.
  2. Read port and server name.
  3. Create ServerSocket.
  4. Display server started.
  5. Accept client connection.
  6. Create input/output streams.
  7. Send response message.
  8. Close connection.

Proxy Server

  1. Import required packages.
  2. Create ServerSocket with proxy port.
  3. Display proxy server started.
  4. Accept client connection.
  5. Create input/output streams.
  6. Receive URL from client.
  7. Determine backend server port.
  8. Connect to selected server.
  9. Send request to server.
  10. Receive response.
  11. Forward response to client.
  12. Close all connections.

Client

  1. Import required packages.
  2. Connect to proxy server.
  3. Prompt user for URL.
  4. Read URL input.
  5. Send URL to proxy.
  6. Receive response.
  7. Display response.
  8. Close connection.

EXP 4 — UDP Time Server

Server

  1. Start server.
  2. Create DatagramSocket and bind port.
  3. Display server running.
  4. Create buffer for data.
  5. Receive request packet.
  6. Get client IP and port.
  7. Display request received.
  8. Get current date and time.
  9. Convert time to bytes.
  10. Create response packet.
  11. Send packet to client.
  12. Repeat for next requests.

Client

  1. Start client.
  2. Create DatagramSocket.
  3. Get server IP and port.
  4. Create TIME_REQUEST message.
  5. Convert message to bytes.
  6. Create and send request packet.
  7. Receive response packet.
  8. Convert bytes to string.
  9. Display server time.
  10. Close socket.

EXP 5 — Stop and Wait ARQ

Main

  1. Define frame with sequence number and info.
  2. Initialize frame values.
  3. Loop until disconnect.
  4. Call sender function.
  5. Call receiver until ACK received.

Sender

  1. Check sender turn.
  2. If no error: send frame.
  3. If error: print error message.
  4. Set receiver turn.
  5. If ACK received and last frame: set disconnect.
  6. Else: select next frame.
  7. Set sender turn.

Receiver

  1. Check receiver turn.
  2. If no error: receive packet, set sender turn.
  3. If error: print ACK error.
  4. Else: duplicate packet, set sender turn.
  5. Print error if occurs.
  6. End.

EXP 6 — Go Back N ARQ

Receiver

  1. Import headers.
  2. Create socket using socket().
  3. Set IP and port.
  4. Bind socket.
  5. Listen for connections.
  6. Accept connection.
  7. Discard out-of-order frames.
  8. Send ACK for correct frames.
  9. If no ACK, timer expires.
  10. Close connection and stop.

Sender

  1. Import headers.
  2. Create socket.
  3. Connect to server.
  4. Send frames based on window size.
  5. If ACK not received, retransmit from that frame.
  6. Close connection and stop.

EXP 7 — Selective Repeat ARQ

Receiver

  1. Import headers.
  2. Create socket.
  3. Set IP and port.
  4. Bind socket.
  5. Listen for connections.
  6. Accept connection.
  7. Maintain buffer equal to window size.
  8. Detect error, request retransmission.
  9. Receive and acknowledge frames.
  10. Close connection and stop.

Sender

  1. Import headers.
  2. Create socket.
  3. Connect to server.
  4. Send multiple frames without waiting.
  5. Maintain timeout, retransmit only specific frame.
  6. Close connection and stop.

EXP 8 — Distance Vector Routing

Algorithm

  1. Start.
  2. Set distance to itself = 0, others = Infinity.
  3. Send distance vector to all neighbours.
  4. Receive and store neighbour vectors.
  5. Recalculate on update or link failure.
  6. Compute min cost to each destination (Bellman-Ford).
  7. Update routing table with new minimum.
  8. Repeat until no updates occur.
  9. Stop.

EXP 9 — File Transfer Protocol

Server

  1. Import required packages.
  2. Create GUI.
  3. Create ServerSocket and start.
  4. Accept client connection.
  5. Create input/output streams.
  6. Receive file name from client.
  7. Check file existence.
  8. If exists: send file, else send NOT_FOUND.
  9. Continue for further requests and stop.

Client

  1. Import required packages.
  2. Create GUI.
  3. Connect to server.
  4. Create input/output streams.
  5. Send file name to server.
  6. Wait for response.
  7. If FOUND: receive and save file.
  8. Else display NOT_FOUND message.
  9. Close connection and stop.

EXP 10 — Leaky Bucket

Algorithm

  1. Start.
  2. Set bucket size and output rate.
  3. Check if incoming + remaining data exceed capacity.
  4. If packet size > bucket size: reject packet.
  5. Else if bucket capacity exceeded: drop excess data.
  6. Else transmit data at fixed output rate.
  7. Repeat until all packets transmitted.
  8. Stop.