https://github.com/spafic/go_back_n_protocol
https://github.com/spafic/go_back_n_protocol
python
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/spafic/go_back_n_protocol
- Owner: Spafic
- License: mit
- Created: 2024-11-18T14:49:58.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-24T17:37:02.000Z (over 1 year ago)
- Last Synced: 2025-07-18T12:42:50.415Z (about 1 year ago)
- Topics: python
- Language: Python
- Homepage:
- Size: 2.17 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌐 Network Transmission Protocol Simulation
## 🚀 Go-Back-N Protocol Transmission Simulator
---
### 📋 Overview
This Python script simulates a network transmission protocol using the Go-Back-N technique, demonstrating frame transmission, error handling, and wire efficiency calculation.
---
### 📊 Diagram

---
### ✨ Features
- Simulates network frame transmission with potential frame failures
- Implements Go-Back-N protocol
- Calculates wire efficiency
- Provides detailed transmission statistics
- Converts messages to binary representation
- Handles dynamic window sizes
---
### 🛠️ Installation
#### Prerequisites
- Python 3.8+
- `random` module (standard library)
#### Clone Repository
```sh
git clone https://github.com/Spafic/Go_Back_N_Protocol.git
cd Go_Back_N_Protocol
```
#### Install Dependencies
No additional dependencies are required as the script uses Python's standard library.
#### Run the Simulator
```sh
python main.py
```
#### User Inputs
1. Message to transmit
2. Window size for transmission
> [!NOTE]
> **Example Workflow**
>
> ```sh
> Enter message: Hello
> Enter window size: 3
> ```
---
### ⚙️ Protocol Mechanics
- Dynamically sends frames based on window size
- Randomly simulates frame transmission success/failure
- Supports automatic retransmission of failed frames using Go-Back-N strategy
- Tracks and reports transmission efficiency
---
### 📈 Output Details
- Received message
- Binary representation
- Total frames sent
- Failed frames
- Wire efficiency percentage
---
### 🧩 Simulation Characteristics
- Random frame transmission success
- Go-Back-N frame management
- Adaptive retransmission strategy
---
### 🤝 Contributing
We welcome contributions to enhance the Go-Back-N Protocol Transmission Simulator. To contribute, follow these steps:
1. **Fork the Repository**: Click the "Fork" button at the top right of the repository page to create a copy of the repository in your GitHub account.
2. **Clone Your Fork**: Clone your forked repository to your local machine.
```sh
git clone https://github.com/YourUsername/Go_Back_N_Protocol.git
cd Go_Back_N_Protocol
```
3. **Create a Feature Branch**: Create a new branch for your feature or bug fix.
```sh
git checkout -b feature/YourFeatureName
```
4. **Make Changes**: Implement your feature or bug fix.
5. **Commit Your Changes**: Commit your changes with a descriptive commit message.
```sh
git commit -m 'Add YourFeatureName'
```
6. **Push to Your Branch**: Push your changes to your forked repository.
```sh
git push origin feature/YourFeatureName
```
7. **Open a Pull Request**: Go to the original repository and open a pull request to merge your changes.
Thank you for your contributions!
---
### 💡 Inspiration
This project demonstrates fundamental concepts in network transmission protocols, specifically the Go-Back-N technique used in data communication.
---
### 📜 License
This project is licensed under the MIT License. See the [MIT LICENSE](./LICENSE) file for more details.