Hallo,
ich habe eine grundsätzliche Verständnisfrage zum Thema Fragmentierung
(Beispiel TCP/IP):
Aus Applikationssicht kommuniziere ich ja (im einfachsten Fall) per
BsdSockets. Wenn ich jetzt also von Applikation A zu Applikation B sagen
wir 50 MByte übertragen will, was passiert genau im Inneren? Kann ich
einfach
1 | //PSEUDO-Code
|
2 | BsdSocket.Write(&Mein50MByteKlotz, sizeof(Mein50MByteKlotz));
|
machen oder muß ich irgendwas beachten?
Hintergrund der Frage ist: Ein TCP-Datagramm darf ja nicht größer als
64KByte sein (13 Bit Fragment-Offset im IP-Header * 8 Bytes = 65536
Bytes), denn sonst passt's nicht mehr in den IP-Header rein.
Wer zerhackt jetzt den großen Klotz in lauter 64k-Blöcke und setzt die
am Ziel wieder zusammen? Erledigt das der BsdSocket? Oder muß sich da
die Anwendung selbst drum kümmern und darf nur 64k-Blöcke an den
BsdSocket weitergeben? Im Endeffekt wäre das ja dann eine 2-stufige
Fragmentierung oder? Helft mir doch mal auf die Sprünge ...
Stein des Anstosses ist, dass ich gerade einen kleinen Protokollstack
für ein Embedded-System entwerfe, möchte aber nicht näher darauf
eingehen, geht ja nur um's Verständnis, denn es ist mein erster
"größerer Protokollstack".
Vielen Dank vorab!