# Level-IP

Level-IP is a Linux userspace TCP/IP stack, implemented with TUN/TAP devices.

The main goals are to:
* Learn TCP/IP
* Learn Linux systems/network programming
* Learn Linux Socket API

The results of the learning experience will be accompanied by explanatory blog posts:

Part 1, Ethernet & ARP: http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp

# Reference works

* QEMU Userspace IP stack, [source code](http://git.qemu.org/?p=qemu.git;a=tree;f=slirp;h=d3a7ee58fa839b55f8cbcc5aa4800db19afac75e;hb=HEAD)
* Linux kernel IP stack, [source code](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/ipv4)
* Xiaochen Wang's TAP device & TCP/IP implementation, [source code](https://github.com/chobits/tapip)

# License

See [LICENSE.md](LICENSE.md) (MIT)

# Level-IP

Level-IP is a Linux userspace TCP/IP stack, implemented with TUN/TAP devices.

The main goals are to:
* Learn TCP/IP
* Learn Linux systems/network programming
* Learn Linux Socket API

The results of the learning experience will be accompanied by explanatory blog posts:

Part 1, Ethernet & ARP: http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp
Part 2, IPv4 & ICMPv4: http://www.saminiir.com/lets-code-tcp-ip-stack-2-ipv4-icmpv4

# Reference works

* QEMU Userspace IP stack, [source code](http://git.qemu.org/?p=qemu.git;a=tree;f=slirp;h=d3a7ee58fa839b55f8cbcc5aa4800db19afac75e;hb=HEAD)
* Linux kernel IP stack, [source code](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/ipv4)
* Xiaochen Wang's TAP device & TCP/IP implementation, [source code](https://github.com/chobits/tapip)

# License

See [LICENSE.md](LICENSE.md) (MIT)

Add link to IPv4 post
Add link to IPv4 post
