Skip to content

jonifndef/tcpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tcpp

Tell me some goals that sound good

  • No ipv6
  • Start with just two protocols: ipv4 and ARP
  • Try to follow the core guidelines as much as possible
  • Use Google Test for unit tests
  • Dunno

Milestones (not necessarily in order):

  • Parse ethernet frames
  • Parse ARP packets
  • Parse IP packets
  • Parse TCP packets
  • Implement TCP handshake
  • Let the application set the ip link interface UP and add the ip addr
  • Use epoll for read()

So, what the deal with RFC:s?

RFC7414 is something of a list of RFC:s that you might want or not want to implement.

List of RFC:s we probably want to implement:

  • RFC793 - Core functionality (Is this deprecated, which would be better to use?)
  • RFC1122 - Congestion control
  • RFC791 - The IP Protocol
  • RFC826 - ARP

Nice to haves:

Other tips and tricks:

To set capabilities, run: sudo setcap CAP_NET_ADMIN=ep my_binary

To set tap interface in up state, run: sudo ip link set my_tap_interface up

To set ip addr for interface, run: sudo ip addr add x.x.x.x/netmask dev my_tap_interface

Status right now:

I am trying to add support for sending packets back to the client. When this is tested, and the whole chain is implemented from arp-handler and back to tcpp, we can answer an ARP request and show up in the kernels ARP table.

About

A small tcp/ip stack written in c++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors