Sourcecode Fortschritt


  • Mod

    Das war entscheidend! (findet sich auch im programming guide)

    Nun läuft request und reply in wireshark sauber abwechselnd:
    http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_163_PingRequestReply.PNG

    Beim PING-Absender-Programm kommt trotz dieses Ablaufes dennoch nur noch "timeout" an.


  • Mod



  • version 0.0.1.163 - Rev: 741

    TCP header hinzugefügt tcp.c/h

    icmpDebug, tcpDebug für eine besser veranschaulischung der jeweiligen Packete.



  • Version 0.0.1.165 – Revision 743

    IP/ICMP-Checksumme

    - Man sollte es mit dem Aufräumen nicht übertreiben (rev 740): das Checksummenfeld muss tatsächlich vor der Berechnung der Checksumme auf 0 gesetzt werden.

    PS: Das hier ist wirklich die 0.0.1.165 und die Rev 743, ich hatte beim letzten Mal nur vergessen, die Version in ckernel.c zu aktualisieren, deshalb hat internet eigentlich die 0.0.1.164 bzw. 742 committet.


  • Mod

    C:\hrPING>hrping 192.168.10.97 -n20 -l32 -S -s100
    This is hrPING v2.44 by cFos Software GmbH -- http://www.cfos.de
    
    Using source IP address 192.168.10.99 to send packets
    Pinging 192.168.10.97
    with 32 bytes data (60 bytes IP):
    
    Reply from 192.168.10.97: seq=0000 time=14.150ms TTL=128 ID=0000 - sent=1
    Reply from 192.168.10.97: seq=0001 time=5.801ms TTL=128 ID=0000 - sent=2
    Reply from 192.168.10.97: seq=0002 time=5.790ms TTL=128 ID=0000 - sent=3
    Reply from 192.168.10.97: seq=0003 time=5.813ms TTL=128 ID=0000 - sent=4
    Reply from 192.168.10.97: seq=0004 time=5.799ms TTL=128 ID=0000 - sent=5
    Reply from 192.168.10.97: seq=0005 time=5.808ms TTL=128 ID=0000 - sent=6
    Reply from 192.168.10.97: seq=0006 time=5.804ms TTL=128 ID=0000 - sent=7
    Reply from 192.168.10.97: seq=0007 time=5.828ms TTL=128 ID=0000 - sent=8
    Reply from 192.168.10.97: seq=0008 time=5.834ms TTL=128 ID=0000 - sent=9
    Reply from 192.168.10.97: seq=0009 time=5.805ms TTL=128 ID=0000 - sent=10
    Reply from 192.168.10.97: seq=000a time=5.805ms TTL=128 ID=0000 - sent=11
    Reply from 192.168.10.97: seq=000b time=5.800ms TTL=128 ID=0000 - sent=12
    Reply from 192.168.10.97: seq=000c time=5.804ms TTL=128 ID=0000 - sent=13
    Reply from 192.168.10.97: seq=000d time=5.805ms TTL=128 ID=0000 - sent=14
    Reply from 192.168.10.97: seq=000e time=5.830ms TTL=128 ID=0000 - sent=15
    Reply from 192.168.10.97: seq=000f time=5.834ms TTL=128 ID=0000 - sent=16
    Reply from 192.168.10.97: seq=0010 time=9.280ms TTL=128 ID=0000 - sent=17
    Reply from 192.168.10.97: seq=0011 time=5.844ms TTL=128 ID=0000 - sent=18
    Reply from 192.168.10.97: seq=0012 time=5.816ms TTL=128 ID=0000 - sent=19
    Reply from 192.168.10.97: seq=0013 time=5.820ms TTL=128 ID=0000 - sent=20
    
    Statistics for 192.168.10.97:
        Packets: sent=20, rcvd=20, error=0, lost=0 (0% loss) in 1.905816 sec
        RTTs of replies in ms: min/avg/max/dev: 5.790 / 6.403 / 14.150 / 1.980
    

    0% loss 👍

    PrettyOS hat die IP 192.168.10.97


  • Mod

    Noch zur checksum:

    ICMP Header Checksum. 16 bits.
    Checksum that covers the ICMP message. This is the 16-bit one's complement
    of the one's complement sum of the ICMP message starting with the Type field.

    The checksum field should be cleared to zero before generating the checksum.



  • Version 0.0.1.166:

    - Floppytreiber nutzt nun hlt während er auf ein IRQ wartet. (waitForIRQ geht nicht, weil wir dort ein timeout haben)
    - getch nutzt wieder waitForIRQ, Fehler behoben, keine task-Mutation mehr, Speicherleck weg.
    - Neues Feature zur Memory-Leak-Erkennung. (Aktivierung in os.h, Funktioniert derzeit nicht stabil)
    - Projektdatei aktualisiert
    - Kleinigkeiten


  • Mod

    PrettyOS 0.0.1.166 - Rev: 744

    Testumgebung         SCREEN (phys)     vbe  RTL8139  EHCI      Probleme 
    -----------------------------------------------------------------------------
    qemu-ehci            F2000000h         ok   ja       4 ports   nein
    VBox 3.2.6           E0000000h         ok   nein     8 ports   nein
    VMWare Player 3.0.1  (mit vbe)                                 invalid opcode bei 1A70h
    VMWare Player 3.0.1  (ohne vbe)        -    nein     6 ports   keine
    bochs 2.4.2          E0000000h         ok   nein     nein      keine
    VPC 6.0.192.0        00000000h                                 #PF (err 0, addr 107BC4h) 
    VPC 6.0.192.0        (ohne vbe)        -    nein     nein      keine 
    PC 1,4 GHz GeForce4  F4000000h         ok   ja       nein      keine
    

  • Mod

    0.0.1.167 - Rev. 745:

    - Gratuitous ARP Request abgefragt und dargestellt

    http://wiki.wireshark.org/Gratuitous_ARP

    A gratuitous ARP request is an AddressResolutionProtocol request packet where the source and destination IP are both set to the IP of the machine issuing the packet and the destination MAC is the broadcast address ff:ff:ff:ff:ff:ff.



  • Version 0.0.1.168:

    - Ausgabe bei Strg+t und co nun in kernelkonsole
    - test-results.txt beigelegt
    - Kleinigkeiten



  • version 0.0.1.168 - Rev: 747

    - Aufgeräumt
    - Die #defines in icmp.h um ICMP_ erweitert.

    Keyboard.c
    - Die getch() Funktion sieht im moment so aus.

    char getch()
    {
        char retVal = keyboard_getChar();
        while(retVal == 0)
        {
            waitForIRQ(1); // not working on realPC ---> Broken Free
    	    // sti();hlt();
            retVal = keyboard_getChar();
        }
        return(retVal);
    }
    

    Link zur Darstellung des OSI-7-Modells
    http://upload.wikimedia.org/wikipedia/de/1/14/OSI7Layer_model_3.1.svg


  • Mod

    0.0.1.169 - Rev: 748

    Readcache (rev. 580) in devicemanager.c auskommentiert und auf die alte Version (rev. 579) umgestellt.

    Reale Lesevorgänge können nun übergangsweise quälend langsam vonstatten gehen, da wir dank fgetc jedes Zeichen einzeln ziehen und dabei jeweils den ganzen Sektor lesen. 🙄

    Der Schreibcache ist bereits im FAT-Modul eingebaut.

    Dafür klappt nun wieder der für Dokumentationen wichtige Screenshot (floppy: strg+s, usb: strg+u). 🙂


  • Mod

    0.0.1.170 - Rev: 749

    readcache teilweise (wieder) in betrieb genommen, aber noch nicht genutzt wegen fehler beim schreiben



  • 0.0.1.171:

    - Optimierungen und Änderungen, die ehenkes und ich ausgebrütet haben (hauptsächlich task.c)
    - Readcache aufgeräumt, aber Ergebnis unverändert.
    - Weitere Testergebnisse ergänzt


  • Mod

    0.0.1.172 - Rev: 751

    Lesecache aktiviert, für screenshot ausgeschaltet


  • Mod

    0.0.1.173 - Rev: 752

    readcache weiter optimiert, auch bei mehrfacher Abfrage des Puffers werden die 512 Byte zur Sicherheit kopiert (Korrektheit wichtiger als Performance). Beim Anlegen des Cache eines Sektors werden alle validen Dubletten eliminiert (Korrektheit).



  • version 0.0.1.174 - Rev: 753

    VBE erweitert, man kann jetzt zwischen 3 Auflösungen wählen

    1. 640x480x256 (Bild verschoben)
    2. 800x600x256 (Bild verschoben)
    3. 1024x768x256 (wird fast korrekt angezeigt)
    default: 1024x768x256

    ckernel.c
    - Switch Konstrukt für den gewählten VideoMode hinzugefügt.

    vbe.c/.h
    - switchToVideomode(...) um einen übergabe parameter erweitert, für den zu setzenden VideoMode.

    vidswitch.asm
    - video_mode und ModeInfoBlock, für die 3 jeweiligen oben genannten Bildschirm Auflösungen hinzugefügt.


  • Mod

    strg+s und fdir geht wieder ganz brauchbar:

    PrettyOS [Version 0.0.1.174 - Rev: 753]                                         
    --------------------------------------------------------------------------------
    RTL8139 Interrupt Status: 01h, Receive OK  RXBUFTAIL: 236                       
    Flags: 01h 20h  Length: 248                                                     
    MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h  
    Ethernet: type 2, Type: 08h 00h                                                 
    45h 00h 00h E5h 8Dh D7h 00h 00h 1Eh 11h 77h 7Ah C0h A8h 0Ah 67h C0h A8h 0Ah FFh 
    00h 8Ah 00h 8Ah 00h D1h 11h 65h 11h 02h 8Dh ACh C0h A8h 0Ah 67h 00h 8Ah 00h BBh 
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h 
    41h 43h 41h                                                                     
    Ethernet 2.                                                                     
            RAMdisk                                                                 
    ----------------------------------------------------------------------          
    
    Attached disks:                                                                 
    
    Type    Number  Name            Part.   Serial                                  
    ----------------------------------------------------------------------          
    Floppy  1       BLABLA          0       BLABLA                                  
    RAMdisk 2       RAMdisk         0       786435                                  
    ----------------------------------------------------------------------          
    
    --------------------------------------------------------------------------------
    
    --------------------------------------------------------------------------------
    
    RTL8139 Interrupt Status: 01h, Receive OK  RXBUFTAIL: 488                       
    Flags: 01h 20h  Length: 248                                                     
    MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h  
    Ethernet: type 2, Type: 08h 00h                                                 
    45h 00h 00h E5h 8Dh D8h 00h 00h 1Eh 11h 77h 79h C0h A8h 0Ah 67h C0h A8h 0Ah FFh 
    00h 8Ah 00h 8Ah 00h D1h 11h 64h 11h 02h 8Dh ADh C0h A8h 0Ah 67h 00h 8Ah 00h BBh 
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h 
    41h 43h 41h                                                                     
    Ethernet 2.                                                                     
    
    $> hi <--                                                                       
    I am PrettyOS. Always at your service!                                          
    Screenshot (Thread)                                                             
    
    $>                                                                              
    
    --------------------------------------------------------------------------------
    
    --------------------------------------------------------------------------------
    Saturday, August 14, 2010, 13:28:53   201 s runtime. CPU: 1399 MHz             -
    
    PrettyOS [Version 0.0.1.174 - Rev: 753]                                         
    --------------------------------------------------------------------------------
    running tasks:                                                                  
    pid: 0  esp: 0018FF00h  eip: 00000000h  PD: 00A22000h  k_stack: 00000000h       
    pid: 9  esp: C0204B40h  eip: 0011450Eh  PD: 00A22000h  k_stack: C0204E08h       
    blocked tasks:                                                                  
    pid: 8  esp: C0209E88h  eip: 0011450Eh  PD: C0207000h  k_stack: C020A008h       
    
    --------------------------------------------------------------------------------
    
    --------------------------------------------------------------------------------
    
    RTL8139 Interrupt Status: 01h, Receive OK  RXBUFTAIL: 992                       
    Flags: 01h 20h  Length: 248                                                     
    MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h  
    Ethernet: type 2, Type: 08h 00h                                                 
    45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh 
    00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh 
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h 
    41h 43h 41h                                                                     
    Ethernet 2.                                                                     
    
    $> fdir <--                                                                     
    <Floppy Disc Directory>                                                         
    BLABLA          0 byte           (vol)  1st sector: 31                          
    BOOT2.BIN       1002 byte        (arc)  1st sector: 33                          
    KERNEL.BIN      223884 byte      (arc)  1st sector: 35                          
    HELLO.ELF       9344 byte        (arc)  1st sector: 473                         
    CPP.ELF         9252 byte        (arc)  1st sector: 492                         
    ARROW.ELF       10637 byte       (arc)  1st sector: 511                         
    CALC.ELF        10847 byte       (arc)  1st sector: 532                         
    KEYSOUND.ELF    8657 byte        (arc)  1st sector: 554                         
    MUSIC.ELF       10538 byte       (arc)  1st sector: 571                         
    PQEQ.ELF        8813 byte        (arc)  1st sector: 592                         
    README.ELF      9095 byte        (arc)  1st sector: 610                         
    TTT.ELF         10672 byte       (arc)  1st sector: 628                         
    SCREEN.TXT      4098 byte        (arc)  1st sector: 649                         
    
    Screenshot (Thread)                                                             
    
    $>                                                                              
    
    --------------------------------------------------------------------------------
    
    --------------------------------------------------------------------------------
    Saturday, August 14, 2010, 13:29:59   267 s runtime. CPU: 1399 MHz             \
    

    Das noch nicht vollständig ausgewertete Netzwerk-Paket

    Flags: 01h 20h Length: 248
    MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
    Ethernet: type 2, Type: 08h 00h
    45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
    00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
    41h 43h 41h

    bedeutet:

    Internet Protocol (IP):
    45: version: 4, header length: 20 bytes
    00: differentiated services field: ...
    00 E5: total length 229
    8D DA: identification
    00: flags (don't fragment, more fragments)
    (00) 00: fragment offset
    1E: time to live (TTL) = 30
    11: UDP (protocol)
    77 77: checksum
    C0h A8h 0Ah 67h: source IP 192.168.10.103
    C0h A8h 0Ah FFh: dest IP 192.168.10.255

    User Datagram Protocol (UDP):
    00 8A: source port: netbios-dgm (138)
    00 8A: dest port: netbios-dgm (138)
    00 D1: length
    11 62: checksum

    NetBIOS Datagram Service:
    ...

    Server Message Block Protocol:
    ...

    SMB Mailslot Protocol:
    ...

    MS Windows Browser Protocol:
    ...

    screenshot (similar packet)
    http://www.henkessoft.de/OS_Dev/Bilder/NetworkPacket_UDP_NetBIOS_SMB.PNG



  • version 0.0.1.175 - Rev: 754

    udp.c/.h
    - UDPRecv(...), UDPDebug(...): udppacket_t wird leider noch nicht richtig ausgelesen


  • Mod

    TEST:

    PrettyOS [Version 0.0.1.175 - Rev: 754]

    RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 488
    Flags: 01h 20h Length: 248
    MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
    Ethernet: type 2, Type: 08h 00h
    45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
    00h 8Ah 00h 8Ah 00h D1h 0Eh DAh 11h 02h 90h 37h C0h A8h 0Ah 67h 00h 8Ah 00h BBh
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
    41h 43h 41h
    Ethernet 2.

    source port: 16                                                                 
    destination port: 27159                                                         
    
    UDP Header information:                                                         
    +--------------+----------------+                                               
    |      16      |      27159     | (source port, destination port)           
    +-------------------------------+                                               
    |      19      |      64776     | (length, checksum)                        
    +-------------------------------+                                               
    |             data              | (data)                                       
    +-------------------------------+
    

    Alles falsch! 😃

    Vergleich:
    Korrekt wäre:

    User Datagram Protocol (UDP):
    00 8A: source port: netbios-dgm (138)
    00 8A: dest port: netbios-dgm (138)
    00 D1: length
    0E DA: checksum

    ... sind doch nur 8 Byte, so wie es aussieht. 😉

    Die beiden IP-Adressen im Internet-Protocol (IP) C0h A8h 0Ah 67h und C0h A8h 0Ah FFh sollte man auch auswerten.

    45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
    00h 8Ah 00h 8Ah 00h D1h 0Eh DAh 11h 02h 90h 37h C0h A8h 0Ah 67h 00h 8Ah 00h BBh
    00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
    41h 43h 41h

    Wir werten die IP-Zeile
    45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
    überhaupt noch nicht vollständig aus, holen uns nur das Protokoll raus ^^

    Im Prinzip Wireshark nachbauen. 😃

    Ich kann UDP sehr schön testen, denn mein Printserver sendet das ständig ins Netz.


Anmelden zum Antworten