moros/doc/network.md

4.0 KiB

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

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>MOROS: Obscure Rust Operating System</title>
  </head>
  <body>
    <h1>MOROS</h1>
  </body>
</html>

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:<v@moros.cc>
> RCPT TO:<alice@example.com>
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