# MOROS Network ## NET Display the network configuration: > net config mac: 52-54-00-12-34-56 ip: 10.0.2.15/24 gw: 10.0.2.2 dns: 10.0.2.3 Display one attribute of the network configuration: > net config dns dns: 10.0.2.3 Set one attribute of the network configuration: > net config dns 10.0.2.3 Display network statistics: > net stat rx: 13 packets (4052 bytes) tx: 15 packets (1518 bytes) Listen for packets transmitted on the network: > net monitor ------------------------------------------------------------------ [488.396667] NET RTL8139 Receiving: 00000000: 3333 0000 0001 5256 0000 0002 86DD 6000 33....RV......`. 00000010: 0000 0038 3AFF FE80 0000 0000 0000 0000 ...8:........... 00000020: 0000 0000 0002 FF02 0000 0000 0000 0000 ................ 00000030: 0000 0000 0001 8600 155E 4000 0708 0000 .........^@..... 00000040: 0000 0000 0000 0101 5256 0000 0002 0304 ........RV...... 00000050: 40C0 0001 5180 0000 3840 0000 0000 FEC0 @...Q...8@...... 00000060: 0000 0000 0000 0000 0000 0000 0000 .............. ------------------------------------------------------------------ [543.871322] NET RTL8139 Receiving: 00000000: 5254 0012 3456 5255 0A00 0202 0800 4500 RT..4VRU .....E. 00000010: 002C 0001 0000 4006 62BB 0A00 0202 0A00 .,....@.b. ... . 00000020: 020F A2E8 0016 0412 F801 0000 0000 6002 ..............`. 00000030: 2238 BECB 0000 0204 05B4 0000 "8.......... ------------------------------------------------------------------ ## DHCP The `dhcp` command configures the network automatically: > dhcp --verbose DEBUG: DHCP Discover transmitted DEBUG: DHCP Offer received ip: 10.0.2.15/24 gw: 10.0.2.2 dns: 10.0.2.3 ## HOST The `host` command performs DNS lookups: > host example.com example.com has address 93.184.216.34 ## TCP The `tcp` command connects to TCP sockets: > tcp time.nist.gov 13 --verbose DEBUG: Connecting to 129.6.15.30:13 58884 20-02-05 19:19:42 00 0 0 49.2 UTC(NIST) * This could also be done with the `read` command: > read /net/tcp/time.nist.gov:13 58884 20-02-05 19:19:55 00 0 0 49.2 UTC(NIST) * ## HTTP Requesting a resource on a host: > http moros.cc /test.html Is equivalent to: > read /net/http/moros.cc/test.html And: > read /net/http/moros.cc:80/test.html ## SOCKET The `socket` command is used to read and write to network connexions like the `netcat` command on Unix. For example the request made with `tcp` above is equivalent to this: > socket time.nist.gov 13 --read-only 59710 22-05-11 21:44:52 50 0 0 359.3 UTC(NIST) * And the request made with `http` is equivalent to that: > socket moros.cc 80 --prompt MOROS Socket v0.1.0 > GET /test.html HTTP/1.0 > Host: moros.cc > HTTP/1.1 200 OK Server: nginx Date: Wed, 11 May 2022 21:46:34 GMT Content-Type: text/html Content-Length: 866 Connection: close Last-Modified: Fri, 29 Oct 2021 17:50:58 GMT ETag: "617c3482-362" Accept-Ranges: bytes MOROS: Obscure Rust Operating System

MOROS

Here's a connexion to a SMTP server to send a mail: > socket 10.0.2.2 2500 --prompt MOROS Socket v0.1.0 220 EventMachine SMTP Server > EHLO moros.cc 250-Ok EventMachine SMTP Server 250-NO-SOLICITING 250 SIZE 20000000 > MAIL FROM: > RCPT TO: 250 Ok 250 Ok > DATA 354 Send it > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec > diam vitae ex blandit malesuada nec a turpis. > . > QUIT 250 Message accepted 221 Ok Sending a file to a server: > socket 10.0.2.2 1234 <= /tmp/alice.txt