{"id":50137681,"url":"https://github.com/checkpoint20/net-simulator","last_synced_at":"2026-05-23T23:07:15.092Z","repository":{"id":355233626,"uuid":"166611264","full_name":"checkpoint20/net-simulator","owner":"checkpoint20","description":"NET-Simulator is an educational application. It was created to help lecturers and students in the learning of computer networks. Students can build virtual networks in the virtual environment provided by NET-Simulator.","archived":false,"fork":false,"pushed_at":"2026-05-02T14:02:42.000Z","size":2507,"stargazers_count":5,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-02T16:08:55.301Z","etag":null,"topics":["educational-software","netwroking"],"latest_commit_sha":null,"homepage":"http://www.net-simulator.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/checkpoint20.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-01-20T01:24:58.000Z","updated_at":"2026-05-02T14:02:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/checkpoint20/net-simulator","commit_stats":null,"previous_names":["checkpoint20/net-simulator"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/checkpoint20/net-simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/checkpoint20%2Fnet-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/checkpoint20%2Fnet-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/checkpoint20%2Fnet-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/checkpoint20%2Fnet-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/checkpoint20","download_url":"https://codeload.github.com/checkpoint20/net-simulator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/checkpoint20%2Fnet-simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33415032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["educational-software","netwroking"],"created_at":"2026-05-23T23:07:14.158Z","updated_at":"2026-05-23T23:07:15.087Z","avatar_url":"https://github.com/checkpoint20.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NET-Simulator\n\nAn educational virtual computer network simulator for lecturers and students learning the basics of computer networks.\n\n![NET-Simulator screenshot](public_html/screenshots/Screenshot1.png)\n\n## Overview\n\nNET-Simulator lets students build virtual networks in a virtual environment. It supports four kinds of virtual devices — **router**, **desktop computer**, **switch**, and **hub** — wired together with universal cables and controlled through a command-line interface that mimics real network gear. The simulator implements layers 1–3 of the ISO/OSI model.\n\n## Features\n\n**Network protocols**\n\n- Restricted IPv4 implementation (RFC 791)\n- ARP service with broadcast requests to resolve IP-to-MAC bindings\n- Restricted ICMP (RFC 792) supporting `ping` and traceroute\n- Ethernet-like layer-2 protocol with 6-byte MAC addressing, auto-assigned by the simulator kernel\n\n**Virtual devices**\n\n- **Router** — layer-3 commutator with 8 IPv4 interfaces; forwards packets per a static routing table\n- **Desktop** — a router with a single interface\n- **Switch** — layer-2 commutator with 8 ports; uses MAC-learning like a real Ethernet switch\n- **Hub** — 8-port broadcast device with no forwarding logic\n- **Cables** — universal links with no physical characteristics and infinite bandwidth; they blink when transmitting\n\n**GUI**\n\n- Drag-and-drop devices on the virtual desktop\n- Per-device context menus; double-click a device to open its virtual console\n- Command history (Up/Down), `Ctrl+L` to refresh, `Ctrl+C` to abort\n- Export the current network to an HTML report with a PNG diagram via a user-customizable XSLT template (`cfg/tohtml.xsl`)\n\n**Project files** are XML, validated against `src/main/resources/dtd/netsimulator.dtd`.\n\n## Requirements\n\n- **Java 21** (JRE to run; JDK to build from source)\n- **Apache Maven 3.x** to build from source\n\n\u003e Avoid installing into a path that contains non-ASCII characters — the JVM may fail to read configuration files. See `public_html/en/install.shtml` for details.\n\n## Build from source\n\n```sh\nmvn package\n```\n\nThis produces a shaded fat JAR at `target/netsimulator.jar` plus a distribution archive under `target/` (built via the Maven Assembly plugin).\n\n## Run\n\nOn Linux/macOS:\n\n```sh\n./run.sh\n```\n\nOn Windows:\n\n```bat\nrun.bat\n```\n\nBoth scripts launch `netsimulator.jar` with `cfg/logging.properties` as the logging config. On first launch the app opens `xml/test.xml` — a sample network with 4 desktops, 1 router, and 1 switch.\n\n## Quick start\n\n1. Run `./run.sh` (or `run.bat`). The bundled `xml/test.xml` opens.\n2. Double-click any computer to open its virtual terminal.\n3. Try `ifconfig` to see the configured interfaces, then `ping 12.0.0.11` from Desktop\u0026nbsp;1 to send ICMP across the router to Desktop\u0026nbsp;5.\n4. Type `help` for the full command list.\n\n## CLI reference\n\n| Command    | Synopsis                                                                                                                  | Description                                                              |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |\n| `help`     | `help [-h]`                                                                                                               | Display the reference guide.                                             |\n| `ifconfig` | `ifconfig [-h] [-a] [\u003cinterface\u003e] [\u003caddress\u003e] [-broadcast \u003caddress\u003e] [-netmask \u003caddress\u003e] [-up\\|-down]`                   | Configure a network interface, or show interface info.                   |\n| `route`    | `route [-h] [{-add\\|-del} \u003ctarget\u003e [-netmask \u003caddress\u003e] [-gw \u003caddress\u003e] [-metric \u003cM\u003e] [-dev \u003cIf\u003e]]`                       | Manipulate the IPv4 routing table; without options, prints it.           |\n| `ping`     | `ping [-h] [-i \u003cinterval\u003e] [-t \u003cttl\u003e] \u003cdestination\u003e`                                                                      | Send ICMP echo to check accessibility of an interface. `Ctrl+C` aborts.  |\n| `arp`      | `arp [-h] [-r \u003cIP-address\u003e \u003cinterface\u003e]`                                                                                  | Show the ARP table; `-r` resolves a MAC for a given IP via a request.    |\n| `mactable` | `mactable [-h]`                                                                                                           | Show the MAC-address table (switch-specific).                            |\n\nPass `-h` to any command for its full help. Shell shortcuts: **Up/Down** navigate history, **Ctrl+L** refreshes the screen, **Ctrl+C** aborts the running command.\n\n## Project layout\n\n```\nsrc/main/java/org/netsimulator/\n├── Netsimulator.java   entry point (main)\n├── gui/                Swing UI: MainFrame, NetworkPanel, device shapes, dialogs\n├── net/                simulation core: devices, packets, routing, ARP, ICMP, addresses\n├── term/               virtual terminal and CLI command implementations\n└── util/               misc utilities (ID generator, etc.)\n```\n\nRuntime resources live under `cfg/` (logging, XSLT export template, default config) and `xml/` (sample projects).\n\n## License\n\nNET-Simulator is licensed under the **GNU General Public License v2** — see [`COPYING`](COPYING) for the full text.\n\n## Links\n\n- Upstream repository: \u003chttps://github.com/checkpoint20/net-simulator\u003e\n- Issue tracker: \u003chttps://github.com/checkpoint20/net-simulator/issues\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheckpoint20%2Fnet-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheckpoint20%2Fnet-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheckpoint20%2Fnet-simulator/lists"}