Sourcecode Fortschritt


  • Mod

    version = "0.0.2.153 - Rev: 993"

    - struct zur Speicherung von Daten während des Empfangs über die verschiedenen Protokolle hinweg eingebaut (bisher gesammelt: senderMAC, senderIP).
    - ACHTUNG: Änderung in network.h

    Mit Qemu wurde bisher kein vollständiges DHCP erreicht, was selbst bei Hardware ohne Probleme verlief.

    EDIT: diese version macht auch mit Test-PC Probleme. Ursache wird ermittelt. 🙄


  • Mod

    version = "0.0.2.154 - Rev: 994"

    - DHCP Request wieder auf BROADCAST Flag umgerüstet (nur damit läuft der Test-PC).

    Committed wurde die Qemu-Version.


  • Mod

    version = "0.0.2.154 - Rev: 995"

    Wir verzichten nun in Qemu auf das DHCP Discover (network.c). Damit erhalten wir von lästigen DHCP-Paketen freie und wirklich interessante Wireshark-Protokolle (pcap), die man direkt mit wireshark aus dem Internet als Vergleich zu eigenen Versuchen öffnen kann.

    Hier ein Beispiel mit strg+w (Handshake mit Homepage) und strg+x (Daten laden, Verbindung ordnungsgemäß schließen). Hier wirkt vor allem der Host zusätzlich mit, so dass wir davon lernen können, wie man es richtig macht. 🙂

    http://www.henkessoft.de/OS_Dev/wireshark_captions/rev.995_netdump.pcap

    Es kam letzt die Frage auf, ob 00-12-12-12-12-12 eine gültige MAC-Adresse ist (The first 3 byte of each MAC address are assigned to a specific vendor.). Sie ist es in der Tat:

    http://www.base64online.com/mac_address.php?mac=00%3A12%3A12
    Mac address: 00:12:12 Vendor: Plus PLUS Corporation



  • Version 0.0.2.155:

    - Floppytreiber: Dump-Funktion implementiert, Configure-Kommando genutzt, IRQ-Timeout bei Calibrate gesenkt, Reset gemäß Spezifikation implementiert.
    - Bugfix: BL2 übergibt korrekte mmap-Länge an Kernel -> Keine Reboot-Probleme mehr.
    - Code angepasst, sodass keine Compilerfehler beim kompilieren mit -O2 oder -O3 kommen.
    - DHCP: Redundanten Code in Funktion ausgelagert.
    - Kleinigkeiten



  • Version 0.0.2.156:

    - Netzwerk-API implementiert -> Userprogramme im Netzwerk mit TCP sind jetzt möglich
    - starwars.ELF als erstes Netzwerk-Userprogramm hinzugefügt


  • Mod

    version = "0.0.2.157 - Rev: 998"

    - Fehler (Parameterreihenfolge) berichtigt in tcp_usend
    - user program "browser.elf" beispielhaft erstellt (Zugriff auf Homepage ehenkes), um tcp_usend (kernel) aus dem user-land mittels syscall zu testen. Funktioniert nun prächtig!


  • Mod

    version = "0.0.2.158 - Rev: 999"

    - strg+i, strg+w, strg+x entfernt.

    - tcp..h/c: Nutzung von TCB entsprechend RFC 793 testweise für Active Open begonnen.

    Active open klappt noch. 🙂

    Literatur: http://www.systems.ethz.ch/education/past-courses/fs10/operating-systems-and-networks/material/TCP-Spec.pdf


  • Mod

    version = "0.0.2.159 - Rev: 1000" und
    version = "0.0.2.160 - Rev: 1001"

    Weiterentwicklung bei tcp.h/c gemäßt rfc 793.

    Problem: SEQs und ACKs beim Datentausch auf auf FIN offenbar noch falsch.
    Letzte korrekte Rev: 999


  • Mod

    version = "0.0.2.161 - Rev: 1002"

    Problem bei tcp.c:

    Mischung aus Rev. 1001 und rollback zu Rev. 999. Nun kann man systematisch den Logikfehler im Ablauf suchen.
    Ein Fehler war die Verwechslung zwischen length und tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
    Die -4 wird bis jetzt nicht verstanden!!!

    Die passive open Seite läuft leider nicht ok (Test-PC, strg+b, telnet: open geht, send blabla <--- ACK-Problem)


  • Mod

    version = "0.0.2.162 - Rev: 1003"

    Wesentliche Fehler beseitigt in tcp.c:
    - kein Erhöhen der SND.NXT beim Empfang bei ESTABLISHED (die +1 gilt nur für den 3-way-handshake)
    - dafür Erhöhen der SND.NXT beim eigenen Senden ^^

    Unklar nach wie vor:

    uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
    

    Problem: passive open noch nicht in Ordnung!


  • Mod

    version = "0.0.2.163 - Rev: 1004"

    Nun gelingt auch passive open mit anschließendem Datentausch:
    Hierbei Test-PC verwenden, dafür #define QEMU_HACK auskommentieren.
    Für telnet (PrettyOS als Server) unbedingt #define _NETWORK_DATA_ aktivieren, damit man die ankommenden Daten sieht. Hier müsste jemand ein telnet-Server-Programm schreiben im user-land von PrettyOS. 😉



  • Version 0.0.2.164:

    - Funktion zum verschieben von Elementen zwischen Ringen implementiert: Scheduler verursacht weniger Speicherallokationen/Deallokationen
    - Code aufgeräumt, Änderung an dummy.c reverted.
    - rtl8139_eeprom.c/h gelöscht, da kein konkreter Anwendungszweck vorhanden (wurde ohne klaren Zweck mit Rev. 708 von bheide hinzugefügt)


  • Mod

    version = "0.0.2.165 - Rev: 1006"

    static bool IsSegmentAcceptable (tcpPacket_t* tcp, tcpConnection_t* connection, uint16_t tcpDatalength) hinzugefügt und im TCP-Datenempfang eingesetzt, um eingehende Pakete zu prüfen.

    beep ausgeschaltet


  • Mod

    version = "0.0.2.166 - Rev: 1007" (??)

    Codevereinfachungen in tcp.c


  • Mod

    version = "0.0.2.167 - Rev: 1007"

    SND.WND, RCV.WND. SEG.WND verwendet.

    Aktuell:

    Vorgabe:
    const uint16_t STARTWINDOWS = 8192; // Wert des Empfangspuffers

    Reduktion des Empfangspuffers nach Empfang (vor tcp_send):
    connection->tcb.SND.WND -= tcpDataLength;
    connection->tcb.SEG.WND = connection->tcb.SND.WND;

    Wiederherstellung des Empfangspuffers (mach tcp_send):
    connection->tcb.SND.WND = STARTWINDOWS; // Simuliert Weitergabe der Daten an user-App, z.B. unseren Browser.


  • Mod

    version = "0.0.2.168 - Rev: 1008"

    TCP: kleine Verbesserungen


  • Mod

    version = "0.0.2.169 - Rev: 1009"

    Funktion tcp_receive(...) wurde intern komplett umgebaut. Die erste Ordnungspriorität haben nun die Zustände (states) und nicht mehr die Flags.
    Damit lässt sich das Modul besser mit den Plänen in http://www.medianet.kent.edu/techreports/TR2005-07-22-tcp-EFSM.pdf vergleichen.

    Tests: browser , starwars (beides active open) und telnet-server (passive open, zur Zeit nur mit Hardware testbar) gehen noch.


  • Mod

    version = "0.0.2.170 - Rev: 1010"

    Verbesserungen in tcp.c


  • Mod

    version = "0.0.2.171 - Rev: 1011"

    Verbesserungen tcp.c und network.h (nun kann einfacher zwischen Qemu und Hardware umgestellt werden)

    Anmerkungen :
    Will man Qemu als telnet-Server verwenden: _NETWORK_DATA_ aktivieren in os.h, damit die Daten angezeigt werden (vielleicht hat dies auch noch einen Seiteneffekt).

    Mit Qemu/TAP klappt es leider noch nicht korrekt. Es bleibt beim SYN (telnet) - SYN,ACK (PrettyOS) hängen.


  • Mod

    version = "0.0.2.172 - Rev: 1012"

    Farbschemata weiter angepasst, z.B. textColor(WHITE) durch textColor(TEXT) usw.


Anmelden zum Antworten