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
@@ -3,7 +3,7 @@
"00000000-0000-0000-0000-000000000501": [],
"00000000-0000-0000-0000-000000000502": [
{
"time": 851,
"time": 840,
"source": "02:00:00:00:05:41",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -11,7 +11,7 @@
"targetIp": "42.0.0.10"
},
{
"time": 853,
"time": 842,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"arp": 2,
@@ -19,7 +19,7 @@
"targetIp": "42.0.0.20"
},
{
"time": 1083,
"time": 1071,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 8,
@@ -29,7 +29,7 @@
"sequence": 1
},
{
"time": 1083,
"time": 1071,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"icmp": 0,
@@ -39,7 +39,7 @@
"sequence": 1
},
{
"time": 1308,
"time": 1295,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 8,
@@ -52,7 +52,7 @@
"00000000-0000-0000-0000-000000000502#1": [],
"00000000-0000-0000-0000-000000000504": [
{
"time": 729,
"time": 718,
"source": "02:00:00:00:05:41",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -60,7 +60,7 @@
"targetIp": "42.0.0.10"
},
{
"time": 965,
"time": 954,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"arp": 2,
@@ -68,7 +68,7 @@
"targetIp": "42.0.0.20"
},
{
"time": 969,
"time": 958,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 8,
@@ -78,7 +78,7 @@
"sequence": 1
},
{
"time": 1194,
"time": 1182,
"source": "02:00:00:00:05:21",
"destination": "02:00:00:00:05:41",
"icmp": 0,
@@ -88,7 +88,7 @@
"sequence": 1
},
{
"time": 1196,
"time": 1184,
"source": "02:00:00:00:05:41",
"destination": "02:00:00:00:05:21",
"icmp": 8,
@@ -100,7 +100,7 @@
],
"00000000-0000-0000-0000-000000000505": [
{
"time": 851,
"time": 840,
"source": "02:00:00:00:05:41",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -109,21 +109,393 @@
}
]
},
"rows": {
"00000000-0000-0000-0000-000000000501": [],
"00000000-0000-0000-0000-000000000502": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
],
[
"2",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x806"
],
[
"2",
"42.0.0.10",
"42.0.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:05:21 [op=REPLY, sender=02:00:00:00:05:21|42.0.0.10, target=02:00:00:00:05:41|42.0.0.20]"
],
[
"3",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"3",
"42.0.0.20",
"42.0.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"4",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x800"
],
[
"4",
"42.0.0.10",
"42.0.0.20",
"ICMP",
"Vermittlung",
"ICMP Echo Reply (pong), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"5",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"5",
"42.0.0.20",
"192.168.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 2"
]
],
"00000000-0000-0000-0000-000000000502#1": [],
"00000000-0000-0000-0000-000000000504": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
],
[
"2",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x806"
],
[
"2",
"42.0.0.10",
"42.0.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:05:21 [op=REPLY, sender=02:00:00:00:05:21|42.0.0.10, target=02:00:00:00:05:41|42.0.0.20]"
],
[
"3",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"3",
"42.0.0.20",
"42.0.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"4",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x800"
],
[
"4",
"42.0.0.10",
"42.0.0.20",
"ICMP",
"Vermittlung",
"ICMP Echo Reply (pong), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"5",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"5",
"42.0.0.20",
"192.168.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 2"
]
],
"00000000-0000-0000-0000-000000000505": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
]
]
},
"layeredRows": {
"00000000-0000-0000-0000-000000000501": [],
"00000000-0000-0000-0000-000000000502": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
],
[
"2",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x806"
],
[
"2",
"42.0.0.10",
"42.0.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:05:21 [op=REPLY, sender=02:00:00:00:05:21|42.0.0.10, target=02:00:00:00:05:41|42.0.0.20]"
],
[
"3",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"3",
"42.0.0.20",
"42.0.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"4",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x800"
],
[
"4",
"42.0.0.10",
"42.0.0.20",
"ICMP",
"Vermittlung",
"ICMP Echo Reply (pong), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"5",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"5",
"42.0.0.20",
"192.168.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 2"
]
],
"00000000-0000-0000-0000-000000000502#1": [],
"00000000-0000-0000-0000-000000000504": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
],
[
"2",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x806"
],
[
"2",
"42.0.0.10",
"42.0.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:05:21 [op=REPLY, sender=02:00:00:00:05:21|42.0.0.10, target=02:00:00:00:05:41|42.0.0.20]"
],
[
"3",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"3",
"42.0.0.20",
"42.0.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"4",
"02:00:00:00:05:21",
"02:00:00:00:05:41",
"",
"Netzzugang",
"0x800"
],
[
"4",
"42.0.0.10",
"42.0.0.20",
"ICMP",
"Vermittlung",
"ICMP Echo Reply (pong), TTL: 64, Identifier: 1, Seq.-No.: 1"
],
[
"5",
"02:00:00:00:05:41",
"02:00:00:00:05:21",
"",
"Netzzugang",
"0x800"
],
[
"5",
"42.0.0.20",
"192.168.0.10",
"ICMP",
"Vermittlung",
"ICMP Echo Request (ping), TTL: 64, Identifier: 1, Seq.-No.: 2"
]
],
"00000000-0000-0000-0000-000000000505": [
[
"1",
"02:00:00:00:05:41",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"42.0.0.20",
"42.0.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 42.0.0.10 [op=REQUEST, sender=02:00:00:00:05:41|42.0.0.20, target=FF:FF:FF:FF:FF:FF|42.0.0.10]"
]
]
},
"events": [
[
725,
713,
"sendProbe 42.0.0.10 called"
],
[
1196,
1184,
"sendProbe 42.0.0.10 returned ICMP 0/0 from 42.0.0.10"
],
[
1196,
1184,
"sendProbe 192.168.0.10 called"
],
[
3946,
3934,
"sendProbe 192.168.0.10 returned null"
]
],