PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was ist ein "Stack" ??



Nero
18.11.03, 16:16
Hi@all

Ich hab da mal eine Frage:
was ist eigentlich ein sogenannter "Stack" (z.b. "TCP-Stack"!)

Auf heise hab ich gerade eben gelesen =>
"Er ruft bei einem Stack Overflow die Fehlerbehandlungsroutine panic() auf"

Was sind nun diese "Stacks" ?

Gibts da ein Howto/Guide hierfür :ugly:


BTW: Ich habs wegem dem heise Zitat hier gepostet (Und auch, weil man des öfteren von gehackten TCP-Stacks liest; ich glaub zumindest davon gelesen zu haben ;) )

Sonny
18.11.03, 16:22
Ein Stapel. Wenn der Stapel zu voll wird läuft er über bzw.kippt um :ugly:

Nero
18.11.03, 16:34
:D

Immer dieser Sarkasmus hier ...
Also nichts anderes als die Layer der TCP/IP Protokolle!?

Hätt ich mir auch denken können (peinlich :rolleyes: )

mfg
Nero

cybercrow
18.11.03, 16:36
im zwiefelsfall lohnt sich bei Begriffsunklarheiten auch immer wieder ein Blick in die wikipedia ;)

Englisch: http://en.wikipedia.org/wiki/Stack_(computing)
Deutsch: http://de.wikipedia.org/wiki/Stack

Sonny
18.11.03, 16:38
Original geschrieben von Nero
:D

Immer dieser Sarkasmus hier ...
Also nichts anderes als die Layer der TCP/IP Protokolle!?

Hätt ich mir auch denken können (peinlich :rolleyes: )

mfg
Nero

Ein Stack kann auch ein Speicher sein. Wenn der voll ist ...

Nero
18.11.03, 16:42
Original geschrieben von cybercrow
im zwiefelsfall lohnt sich bei Begriffsunklarheiten auch immer wieder ein Blick in die wikipedia ;)

Englisch: http://en.wikipedia.org/wiki/Stack_(computing)
Deutsch: http://de.wikipedia.org/wiki/Stack

Stimmt!
Warum hab ich nicht selber an Wikipedia gedacht...

Dangeschön

greetz
Nero



Wenn der voll ist ...


jaja :p

RapidMax
19.11.03, 19:58
Neben dem Stack-Speicher redet man auch bei Netzwerk-Protokollen von Stacks. Mit TCP/IP-Stack meint man nähmlich nicht die Datenstruktur, sondern den Programm-Teil der das Protokoll implementiert.

Ich Bereich der Sicherheit hat der Stack seine traurige Berühmtheit wegen den so genannten Buffer-Over-Flow erlangt. Dabei ist nicht ein überlauf des Stacks gemeint, sondern ein Überlauf eines Buffers auf dem Stack. Temporäre Variablen werden oft auf dem Stack abgelegt, auf dem auch die Rücksprungaddresse der aufgerufenen Funktionen liegen. Wenn nun z.B. eine Array-Variable auf dem Stack abgelegt wird und der Programmierer nicht darauf achtet, dass dieser Array nicht über das Ende aus beschrieben wird, kann ein Angreiffer die Rücksprungaddresse überschreiben und so beliebigen Code ausführen.

Gruss, Andy

Doh!
19.11.03, 20:11
Ein Stack im Zusammenhang mit Computern kommt ursprünglich aus der Programmierung.

Du kannst Daten in Listen speichern, die sozusagen eine Einbahnstraße darstellen.

Mal angenommen, Du hast Speicherplätze, die durchnummeriert sind, meinetwegen 1, 2, 3, 4, 5. Dazu hast Du dann noch einen einzigen Zeiger, der auf immer genau einen Speicherbereich zeigen kann. Am Anfang zeigt er nun auf 1. Du legst nun das erste Datum auf Platz 1, der Zeiger zeigt dann auf 2. Das nächste Datum wird dann auf 2 gelegt, der Zeiger zeigt dann auf 3 usw. Genau so (und nur so) kann man dann auch die wieder auslesen. Also zuerst die 5, dann die 4 usw.

Es ist, als würde man einen Stapel aufbauen. Wenn man dann einen hohen Stapel hat, kann man die Teile des Stapels auch nur von oben nach unten abtragen, ohne dass er umstürzt. Daher das Stack.

Beim Netzwerk spricht man auch davon, weil die Pakete der einzelnen Schichten ebenfalls so seriell zusammengebaut und wieder auseinandergenommen werden.