Klausurvorbereitung

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausurvorbereitung
Hi Leute.

Die Aktivität im Forum lässt ja mal echt zu wünschen übrig. Deswegen frag’ ich gleich mal: Wie lernt ihr für die Klausur? Macht ihr eher alte Klausuren durch?

Bei der Klausur 2008: hat da jemand einen Plan bei den Aufgaben 2 b) und c) ?

2b) war TCP-kommunikation zwischen 2 hosts. Das Problem dabei ist allerdings: Die Kommunikation findet in beide Richtungen statt. Also müssten meiner Meinung nach auch 2 Puffer auf beiden Seiten existieren. Und das ist ganz schön blöd.

2c) Da Hab’ ich im Moment wenig Ahnung. Falls hier Jemand weiterhelfen könnte, wäre das super.

gruß


Hi

Bei der 10/3/08,2b verstehe ich nicht, wieso das mit den Puffern ein Problem sein sollte… ist doch nicht gefragt. :wink:
Für die 10/3/08,5a habe ich folgende Diskussionsgrundlage anzubieten: die Ergänzungen “backoff”->“frozen backoff”: [busy]/stop_timer; “frozen backoff”->“backoff”:[~busy]/start_timer; und “backoff”->“sense”:random(0,…,2^(m-1))*t/;
Ist das so richtig, und wie stellt man die Zeit eigentlich von Hand ein?


Zu Aufgabe 2b) Da hast du wohl recht. Das hab’ ich übersehen.

zur Aufgabe 5 a)
hm… ehrlich gesagt verstehe ich die Aufgabenstellung noch nicht ganz. Da kann ich dir also im Moment noch nicht viel dazu sagen.

Was genau bewirkt eigentlich stop_timer? Bewirkt das, dass der timer wieder von 0 anfängt zu zählen,
oder dass der Timer eingefrohren wird? Und was ist mit “bei jeder Wiederaufnahme des Backoff” gemeint?
Die Aufgabenstellung is ja mal mega ****.
Dann muss man ja zusätzlich anscheinend “wait for ACK”->“backoff” modifizieren. Noch keine Ahnung.


stop_timer heißt für mich, daß der Timer eingefroren wird, aber ich bin mir da nicht ganz sicher. Darüber, wie man da was abspeichert, schweigt sich die Aufgabe ja auch aus, ebenso wie darüber, wie man den Timer wiederherstellt, also kann man ihn nur stoppen und weiterlaufen lassen. Wiederaufnahme des Backoff heißt wohl, daß der Backoff nicht mehr eingefroren ist, also normaler Backoff.


Also stop_timer heisst, dass der Timer wieder von null anfängt zu zählen.
alles andere würde glaub’ ich auch keinen sinn machen. Und ein Freund von
mir hat eine Lösung gebaut, die mir persönlich recht plausibel klingt.
Frozen Backoff friert also die wartezeit ein. Sobald wieder frei ist,
läuft die Wartezeit wieder weiter.

“wait for ACK” —> “backoff”: wzeit =random(0, …, 2^m - 1) * t
“backoff”—> “sense” : wzeit/
“backoff” → “frozen backoff”: [busy]/ zeit = (time() div t) * t
“frozen backoff” —> “backoff”: [free]/ wzeit = zeit

Das Ganze unter der Annahme, dass Time nicht die aktuelle Zeit, sondern die
aktuelle Wartezeit liefert!!!

PS: Kannst du mir mal deine Lösung für 2 b) schildern?


Bei der 2 b) ist der 3-wege-handshake ja völlig klar:

zuerst:

A–>B SYN-FLAG=1, SQN=0, 0 B Daten
B–>A SYN-FLAG=1, ACK-FLAG=1, SQN=1000, ACK=1, 0 B Daten
A–>B SYN-FLAG=0, ACK-FLAG=1, SQN=1, ACK=1001, 500 B Daten

Ich glaub’, da gibts net viel falsch zu machen. beim 3. Teil des Handshakes kann A gleich 500 B Dten schicken.
Daraufhin müsste es wieder einen ACK von Host B bekommen. Klingt alles eigentlich plausibel.
In dieser Kontellation hat allerdings B nie die möglichkeit, Daten an A zu schicken. Oder sehe ich da etwas falsch? Denn est steht ja explizit da: “Wann immer mömglich, schickt Host A 500 Bytes an Host B und Host B
300 Bytes an Host A.” WANN also kann Host B denn an Host A 300 Bytes schicken? In dieser Konstellation
kommt eigentlich nur Host A dazu, daten zu schicken. Denn Host B muss ACK zurückliefern.

Hat jemand einen Vorschlag?


Die ACKs kommen huckepack auf den Segmenten, die dann auch Nutzdaten enthalten sollen. Beispiel aus dem Buch: A->B: Seq=42, ACK=79, data=…, B->A: Seq=79, ACK=43, data=…, …
So verstehe ich das jedenfalls, macht auch irgendwie Sinn, wenn beide sich gegenseitig Daten schicken sollen.


Noch was anderes: müßte B nicht ein ACK auf 0 und A ein ACK auf 1000 schicken, weil diesen beiden ACKs Pakete mit 0 Bytes Daten vorhergehen? Die ACKs sind ja immer um die Byte-Zahlen höher als die bestätigten Sequenznummern.

/edit: Okay, die ACKs sind beim Handshake doch um 1 inkrementiert.


Ja, danke für die Antwort. Das hab’ ich jetzt kapiert wie’s geht.

Falls du noch probleme hattest, bei der 2008, schreib’ einfach. Vielleicht hab’ ich eine Lösung dafür.
Die Aufgaben, die ich sehr seltsam fand und nicht wusste, wie sie zu lösen waren sind:

Klausur 2008:
1 e) : Protokolle lassen sich unter anderem durch Message Sequence Charts (MSCs) beschreiben. Was stellt ein MSC in diesem Zusammenhang dar?
Was soll man denn da hinschreiben? Was ein MSCs allgemein ist? komisch formulierte Aufgabe

1 g) : Warum reagiert TCP bei der Überlastkontrolle konservativer auf das Ende eines Timeouts als auf drei duplizierte ACKs?
Im Script steht zwar, dass er sich konservativer verhält. Aber nicht WARUM.

und 1 i): Welches echtzeitfähige Medienzugriffsverfahren kennen Sie? Begründen Sie Ihre Antwort.

Und absolut unlösbar war für mich weiterhin die 1 c)
Sorry, ich meinte die 2c)


Für die 1i) würde ich sagen: CSMA/CA, aber ich weiß das nicht so richtig zu begründen. Ich würde eben sagen, daß bei Kollisionsvermeidung Neuübertragungen wegfallen, und daß es deswegen echtzeitfähig ist, aber ganz zufrieden bin ich damit selbst nicht.
Bei der 1c): durch den Pseudo-Header, aber auch da geht aus den Folien nicht hervor, wieso… echt tolle Arbeit…
Was soll eigtl. alles drankommen?


Bei der 1 c) kann ich dir helfen:

Bei der UDP/TCP-Prüfsumme wird ein Pseudoheader voran gestellt. Dieser besteht aus den Internetadressen von Sender-und Empfänger und etc. Die Internet-adressen sollten eigentlich nur von IP, also der Netzwerkschickt berücksichtigt werden => Verletzung des Schichtenprinzips.


CSMA/CD ist glaub’ ich nicht richtig. CSMA/CD ist nicht echtzeitfähig, da Kollisionen nicht vollkommen ausgeschlossen werden. CSMA/CD wies bei Ethernet eingesetzt wird, arbeitet nur mit einer wahrscheinlichkeit. Um so mehr Kollisionen bereits passiert sind, um so geringer entsteht eine weitere Kollision, da die Stationen eine zufällige Wartezeit zugewiesen bekommen ( random(0, …, 2^m - 1) ).
Bei CSMA/CA dasselbe: keine garantierte Latenzzeit, also höchstens nur “weich” echtzeitfähig.

Ich würde sagen, dass Token-Ring ein echtzeitfähiges Medienzugriffssytem ist. Eine Station kann nur dann senden, wenn sie das Token bekommt. Dadurch werden Kollisionen völlig unmöglich.

PS: Was ich noch fragen wollte: Gibt es ausser diesen beiden älteren Klausuren eigentlich noch weitere Klausuren für TI4 irgendwo?


seh ich das eigentlich richtig dass bei der klausur erlaubt ist skript bücher taschenrechner etc mitzubringen? so stehts auf den alt-klausuren…


siehst du richtig, nur keine kommunikationsmittel


Wie sieht es eigtl. bei der 10/3/08-3) mit Bibliotheken aus? Was kann man da importieren?


Hey Leute,

Ich will jetzt nicht rummotzen, aber:

Man versucht hier Lösungen von Aufgaben zu erarbeiten und das einzige was kommt, ist:

“Sind eigentlich Hilfsmittel zur Klausur zugelassen?”

Da sinkt die Motivation zum Posten doch erheblich…


Hi Karim,

Also du brauchst eigentlich nur folgende import-zeilen:

import java.io.;
import java.net.
;

Also andere Bibliotheken, als die JAVA-standardbibliotheken darf man mit Sicherheit nicht verwenden.


Danke,
ich habe diese Zeilen gesehen und mich dann gefragt, ob das als Standard angesehen wird.
Es dürfte spannend werden, aus welchem Layer die Prog.-Aufgabe genommen wird…


Ähm, ja UND? Das ist ein erheblicher Unterschied was die Klausurvorbereitung angeht. Und ich wüsste nicht inwiefern dich das in deiner persönlichen Freiheit hier andere Fragen zu TI4 zu stellen einschränkt… :scared: