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": 849,
"time": 862,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -10,7 +10,7 @@
"targetIp": "192.168.0.10"
},
{
"time": 850,
"time": 863,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"arp": 2,
@@ -18,13 +18,13 @@
"targetIp": "192.168.0.20"
},
{
"time": 1078,
"time": 1091,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "S",
@@ -32,27 +32,27 @@
"acknowledgement": 0
},
{
"time": 1079,
"time": 1094,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.20",
"protocol": 6,
"sourcePort": 80,
"destinationPort": 59631,
"destinationPort": 58231,
"payload": null,
"tcpFlags": "SA",
"sequence": 1000000,
"acknowledgement": 2000001
},
{
"time": 1303,
"time": 1318,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "A",
@@ -60,13 +60,13 @@
"acknowledgement": 1000001
},
{
"time": 1827,
"time": 1839,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "F",
@@ -74,28 +74,28 @@
"acknowledgement": 0
},
{
"time": 1828,
"time": 1839,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.20",
"protocol": 6,
"sourcePort": 80,
"destinationPort": 59631,
"destinationPort": 58231,
"payload": null,
"tcpFlags": "A",
"sequence": 1000001,
"acknowledgement": 2000002
},
{
"time": 1883,
"time": 1895,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.20",
"protocol": 6,
"sourcePort": 80,
"destinationPort": 59631,
"destinationPort": 58231,
"payload": null,
"tcpFlags": "F",
"sequence": 1000001,
@@ -104,7 +104,7 @@
],
"00000000-0000-0000-0000-000000000102": [
{
"time": 729,
"time": 740,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -112,7 +112,7 @@
"targetIp": "192.168.0.10"
},
{
"time": 962,
"time": 975,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"arp": 2,
@@ -120,13 +120,13 @@
"targetIp": "192.168.0.20"
},
{
"time": 964,
"time": 978,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "S",
@@ -134,27 +134,27 @@
"acknowledgement": 0
},
{
"time": 1191,
"time": 1206,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.20",
"protocol": 6,
"sourcePort": 80,
"destinationPort": 59631,
"destinationPort": 58231,
"payload": null,
"tcpFlags": "SA",
"sequence": 1000000,
"acknowledgement": 2000001
},
{
"time": 1191,
"time": 1206,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "A",
@@ -162,13 +162,13 @@
"acknowledgement": 1000001
},
{
"time": 1716,
"time": 1728,
"source": "02:00:00:00:01:12",
"destination": "02:00:00:00:01:11",
"sourceIp": "192.168.0.20",
"destinationIp": "192.168.0.10",
"protocol": 6,
"sourcePort": 59631,
"sourcePort": 58231,
"destinationPort": 80,
"payload": null,
"tcpFlags": "F",
@@ -176,14 +176,14 @@
"acknowledgement": 0
},
{
"time": 1939,
"time": 1950,
"source": "02:00:00:00:01:11",
"destination": "02:00:00:00:01:12",
"sourceIp": "192.168.0.10",
"destinationIp": "192.168.0.20",
"protocol": 6,
"sourcePort": 80,
"destinationPort": 59631,
"destinationPort": 58231,
"payload": null,
"tcpFlags": "A",
"sequence": 1000001,
@@ -192,7 +192,7 @@
],
"00000000-0000-0000-0000-000000000103": [
{
"time": 849,
"time": 862,
"source": "02:00:00:00:01:12",
"destination": "FF:FF:FF:FF:FF:FF",
"arp": 1,
@@ -201,66 +201,770 @@
}
]
},
"rows": {
"00000000-0000-0000-0000-000000000101": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
],
[
"2",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.10",
"192.168.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:01:11 [op=REPLY, sender=02:00:00:00:01:11|192.168.0.10, target=02:00:00:00:01:12|192.168.0.20]"
],
[
"3",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"3",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"3",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"SYN, SEQ: 2.000.000"
],
[
"4",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"4",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"4",
"192.168.0.10:80",
"192.168.0.20:58231",
"TCP",
"Transport",
"SYN, SEQ: 1.000.000, ACK: 2.000.001"
],
[
"5",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"5",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"5",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"SEQ: 2.000.001, ACK: 1.000.001"
],
[
"6",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"6",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"6",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"FIN, SEQ: 2.000.001"
],
[
"7",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"7",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"7",
"192.168.0.10:80",
"192.168.0.20:58231",
"TCP",
"Transport",
"SEQ: 1.000.001, ACK: 2.000.002"
],
[
"8",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"8",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"8",
"192.168.0.10:80",
"192.168.0.20:58231",
"TCP",
"Transport",
"FIN, SEQ: 1.000.001"
]
],
"00000000-0000-0000-0000-000000000102": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
],
[
"2",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.10",
"192.168.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:01:11 [op=REPLY, sender=02:00:00:00:01:11|192.168.0.10, target=02:00:00:00:01:12|192.168.0.20]"
],
[
"3",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"3",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"3",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"SYN, SEQ: 2.000.000"
],
[
"4",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"4",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"4",
"192.168.0.10:80",
"192.168.0.20:58231",
"TCP",
"Transport",
"SYN, SEQ: 1.000.000, ACK: 2.000.001"
],
[
"5",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"5",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"5",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"SEQ: 2.000.001, ACK: 1.000.001"
],
[
"6",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"6",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"6",
"192.168.0.20:58231",
"192.168.0.10:80",
"TCP",
"Transport",
"FIN, SEQ: 2.000.001"
],
[
"7",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"7",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"7",
"192.168.0.10:80",
"192.168.0.20:58231",
"TCP",
"Transport",
"SEQ: 1.000.001, ACK: 2.000.002"
]
],
"00000000-0000-0000-0000-000000000103": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
]
]
},
"layeredRows": {
"00000000-0000-0000-0000-000000000101": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
],
[
"2",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.10",
"192.168.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:01:11 [op=REPLY, sender=02:00:00:00:01:11|192.168.0.10, target=02:00:00:00:01:12|192.168.0.20]"
],
[
"3",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"3",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"3",
"58231",
"80",
"TCP",
"Transport",
"SYN, SEQ: 2.000.000"
],
[
"4",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"4",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"4",
"80",
"58231",
"TCP",
"Transport",
"SYN, SEQ: 1.000.000, ACK: 2.000.001"
],
[
"5",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"5",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"5",
"58231",
"80",
"TCP",
"Transport",
"SEQ: 2.000.001, ACK: 1.000.001"
],
[
"6",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"6",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"6",
"58231",
"80",
"TCP",
"Transport",
"FIN, SEQ: 2.000.001"
],
[
"7",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"7",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"7",
"80",
"58231",
"TCP",
"Transport",
"SEQ: 1.000.001, ACK: 2.000.002"
],
[
"8",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"8",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"8",
"80",
"58231",
"TCP",
"Transport",
"FIN, SEQ: 1.000.001"
]
],
"00000000-0000-0000-0000-000000000102": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
],
[
"2",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x806"
],
[
"2",
"192.168.0.10",
"192.168.0.20",
"ARP",
"Vermittlung",
"MAC ist 02:00:00:00:01:11 [op=REPLY, sender=02:00:00:00:01:11|192.168.0.10, target=02:00:00:00:01:12|192.168.0.20]"
],
[
"3",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"3",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"3",
"58231",
"80",
"TCP",
"Transport",
"SYN, SEQ: 2.000.000"
],
[
"4",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"4",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"4",
"80",
"58231",
"TCP",
"Transport",
"SYN, SEQ: 1.000.000, ACK: 2.000.001"
],
[
"5",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"5",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"5",
"58231",
"80",
"TCP",
"Transport",
"SEQ: 2.000.001, ACK: 1.000.001"
],
[
"6",
"02:00:00:00:01:12",
"02:00:00:00:01:11",
"",
"Netzzugang",
"0x800"
],
[
"6",
"192.168.0.20",
"192.168.0.10",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"6",
"58231",
"80",
"TCP",
"Transport",
"FIN, SEQ: 2.000.001"
],
[
"7",
"02:00:00:00:01:11",
"02:00:00:00:01:12",
"",
"Netzzugang",
"0x800"
],
[
"7",
"192.168.0.10",
"192.168.0.20",
"IP",
"Vermittlung",
"Protokoll: 6, TTL: 64"
],
[
"7",
"80",
"58231",
"TCP",
"Transport",
"SEQ: 1.000.001, ACK: 2.000.002"
]
],
"00000000-0000-0000-0000-000000000103": [
[
"1",
"02:00:00:00:01:12",
"FF:FF:FF:FF:FF:FF",
"",
"Netzzugang",
"0x806"
],
[
"1",
"192.168.0.20",
"192.168.0.10",
"ARP",
"Vermittlung",
"Suche nach MAC für 192.168.0.10 [op=REQUEST, sender=02:00:00:00:01:12|192.168.0.20, target=FF:FF:FF:FF:FF:FF|192.168.0.10]"
]
]
},
"events": [
[
214,
226,
"server oeffnen called"
],
[
714,
727,
"client verbinden called"
],
[
1215,
1227,
"client verbinden returned"
],
[
1317,
1329,
"server oeffnen returned"
],
[
1715,
1728,
"client schliessen called"
],
[
1715,
1728,
"client schliessen returned"
],
[
1883,
1895,
"lost FIN"
]
],
"states": {
"client": [
[
714,
726,
"CLOSED"
],
[
724,
736,
"SYN_SENT"
],
[
1191,
1208,
"ESTABLISHED"
],
[
1716,
1728,
"FIN_WAIT_1"
],
[
1940,
1951,
"FIN_WAIT_2"
]
],
"server": [
[
1317,
1329,
"ESTABLISHED"
],
[
1829,
1840,
"LAST_ACK"
]
]