ZealOS/docs/Home/Net/Docs/NetworkingNotes.DD.html
TomAwezome 1b75d91002 Fix Mount AHCI Port selection.
Add arg to SATARep to specify drive types to show.
Add checks in AHCIPortInit to verify port signatures, add helper method to get signatures from port.
2021-08-02 16:40:05 -04:00

95 lines
4.2 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V0.13">
<style type="text/css">
body {background-color:#fef1f0;}
.c0F{color:#fef1f0;background-color:#000000;}
.cF0{color:#000000;background-color:#fef1f0;}
.cF1{color:#0148a4;background-color:#fef1f0;}
.cF2{color:#3b7901;background-color:#fef1f0;}
.cF3{color:#057c7e;background-color:#fef1f0;}
.cF4{color:#bb2020;background-color:#fef1f0;}
.cF5{color:#9e42ae;background-color:#fef1f0;}
.cF6{color:#b57901;background-color:#fef1f0;}
.cF7{color:#b2b6af;background-color:#fef1f0;}
.cF8{color:#555753;background-color:#fef1f0;}
.cF9{color:#678fbb;background-color:#fef1f0;}
.cFA{color:#82bc49;background-color:#fef1f0;}
.cFB{color:#0097a2;background-color:#fef1f0;}
.cFC{color:#e26a6a;background-color:#fef1f0;}
.cFD{color:#c671bc;background-color:#fef1f0;}
.cFE{color:#c7ab00;background-color:#fef1f0;}
.cFF{color:#fef1f0;background-color:#fef1f0;}
</style>
</head>
<body>
<pre style="font-family:monospace;font-size:12pt">
<a name="l1"></a><span class=c0F>Zeal Networking Stack Notes</span><span class=cF0>
<a name="l2"></a>
<a name="l3"></a>Departures from Shrine:
<a name="l4"></a>
<a name="l5"></a> ARP Cache is Hashtable. Keys are U32 ip addresses converted to &quot;%X&quot; string.
<a name="l6"></a>
<a name="l7"></a> DNS Cache is Hashtable. Keys are U8 *hostname.
<a name="l8"></a>
<a name="l9"></a> NetFIFO is NetQueue. If problems arise, maybe set a #define max
<a name="l10"></a> for the length of the Queue.
<a name="l11"></a>
<a name="l12"></a> Not defining ntohl and friends. Using Endian functions.
<a name="l13"></a>
<a name="l14"></a> Many file global vars have been condensed into global classes.
<a name="l15"></a>
<a name="l16"></a> Sockets are a non-standard finite state machine.
<a name="l17"></a> Protocols extend these to create protocol-specific sockets.
<a name="l18"></a>
<a name="l19"></a>Stack progress: (# done, ~ WIP, . N/A)
<a name="l20"></a>
<a name="l21"></a> # PCNet-II Driver
<a name="l22"></a> . Other Network Card Drivers? See </span><a href="https://zeal-operating-system.github.io/ZealOS/Home/Roadmap.DD.html#l10"><span class=cF4>Roadmap</span></a><span class=cF0>.
<a name="l23"></a>
<a name="l24"></a> # NetQueue
<a name="l25"></a>
<a name="l26"></a> # Ethernet
<a name="l27"></a> - double check.
<a name="l28"></a>
<a name="l29"></a> # ARP (Address Resolution Protocol)
<a name="l30"></a> - double check.
<a name="l31"></a>
<a name="l32"></a> # Sockets
<a name="l33"></a> - Implemented a Finite State Machine
<a name="l34"></a> through Socket function calls.
<a name="l35"></a> Sockets themselves do nothing,
<a name="l36"></a> all calls simply do/don't alter
<a name="l37"></a> socket state. Protocols will
<a name="l38"></a> need to detect socket states
<a name="l39"></a> and respond appropriately.
<a name="l40"></a> - keep eyes on verifying socket logic sanity.
<a name="l41"></a>
<a name="l42"></a> # IPV4 (Internet Protocol Version 4)
<a name="l43"></a> - double check, some TODOs.
<a name="l44"></a>
<a name="l45"></a> ~ ICMP (Internet Control Message Protocol)
<a name="l46"></a> - needs ICMPSendRequest implemented.
<a name="l47"></a>
<a name="l48"></a> ~ TCP (Transmission Control Protocol)
<a name="l49"></a> - needs much testing, still many bugs/oddities.
<a name="l50"></a> - needs reviewing RFC for better compliance.
<a name="l51"></a>
<a name="l52"></a> # UDP (User Datagram Protocol)
<a name="l53"></a> - double check, some TODOs.
<a name="l54"></a>
<a name="l55"></a> ~ DNS (Domain Name System)
<a name="l56"></a> - needs clarifying/rewriting in certain methods.
<a name="l57"></a>
<a name="l58"></a> ~ DHCP (Dynamic Host Configuration Protocol)
<a name="l59"></a> - needs clarifying/rewriting in certain methods.
<a name="l60"></a>
<a name="l61"></a> # NetHandler
<a name="l62"></a> - Uses a switch case with packet ethertype,
<a name="l63"></a> then directly calls the appropriate handler.
<a name="l64"></a>
<a name="l65"></a> - IPV4Handler was moved to NetHandler file.
</span></pre></body>
</html>