feat(core): the packet capture's table after Java's Lauscher, measured against Java's own tables

captureRows.ts builds Java's rows per frame (Lauscher.datenVorbereiten):
Ethernet; ARP, ICMP or IP; TCP or UDP; the data with Java's protocol
recognition; with addresses and ports or ports only. The comment stays
structured; captureCommentText says it with given words and numbers.

ScenarioNetwork writes Java's finished tables per card (Lauscher.getDaten,
German locale); all runtime runs are recorded again, NatRun has ttlOut.
expectSameCaptures compares both views for every frame. Fixed where the
engine differed: an ARP request's target MAC is the broadcast address,
an ICMP error's identifier and sequence number are 0 (RFC 792), and host
unreachable from a router carries the packet as forwarded. Not taken:
Java's lower-case broadcast address in a reply to 0.0.0.0, and the typo
'Exeeded'. RIP keeps its recordings: Java's staggered router start now
gives a different startup on this machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 15:11:05 +00:00
co-authored by Claude Opus 5.5
parent 0a34f3a4c4
commit 21a404693c
55 changed files with 37423 additions and 1321 deletions
@@ -2,7 +2,7 @@
"frames": {
"00000000-0000-0000-0000-000000000101": [
{
"time": 844,
"time": 852,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -10,7 +10,7 @@
"targetIp": "192.168.0.99"
},
{
"time": 3585,
"time": 3592,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -20,7 +20,7 @@
],
"00000000-0000-0000-0000-000000000102": [
{
"time": 844,
"time": 852,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -28,7 +28,7 @@
"targetIp": "192.168.0.99"
},
{
"time": 3585,
"time": 3592,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -38,7 +38,7 @@
],
"00000000-0000-0000-0000-000000000103": [
{
"time": 844,
"time": 852,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -46,7 +46,7 @@
"targetIp": "192.168.0.99"
},
{
"time": 3585,
"time": 3592,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -56,7 +56,7 @@
],
"00000000-0000-0000-0000-000000000104": [
{
"time": 723,
"time": 730,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -64,7 +64,7 @@
"targetIp": "192.168.0.99"
},
{
"time": 3473,
"time": 3480,
"source": "02:00:00:00:01:14",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -73,13 +73,289 @@
}
]
},
"rows": {
"00000000-0000-0000-0000-000000000101": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000102": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000103": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000104": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
]
},
"layeredRows": {
"00000000-0000-0000-0000-000000000101": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000102": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000103": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
],
"00000000-0000-0000-0000-000000000104": [
[
"1",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
],
[
"2",
"02:00:00:00:01:14",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.21",
"192.168.0.99",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.99 [op=REQUEST, sender=02:00:00:00:01:14|192.168.0.21, target=FF:FF:FF:FF:FF:FF|192.168.0.99]"
]
]
},
"events": [
[
713,
718,
"holeIPAdresse web.filius.de called"
],
[
14470,
14477,
"holeIPAdresse web.filius.de failed TimeOutException"
]
]