First time I saw an Ethernet frame in details on my CCNA class back in 2010 I immediately got the idea about generating some packets on my own. It was logical next step to ask myself: “Ok, so how can I make one of those and see what happens when I send it out on the network?”. I was not really sure that there is a tool that would make it possible.
Don’t get me wrong, net surfers don’t need this!
I mean, Yeah, ok, I know I am generating a lot of packets right now by not doing anything because my Mac is surely syncing who knows what across the Internet. The thing is, you are not really in control of your machine’s applications network layer which is talking across the network, so you can not really make much changes in frames header format and whats inside headers. Apps are sending out standard packets with standardised header format (flags, addresses etc.). The thing that we control is only the data that we send, the payload of those packets, headers, they do their thing to make the transfer possible.
You can control the packet source IP address of course, maybe MAC address sometimes on some Linux machines by editing your NIC configuration but I am sure you know that if you are still here
Network engineers do need this!
But I am a network engineer and I usually want:
- to test something
- make something that does not exist so far or is not standardised.
- I want to try to create a new protocol that will talk using IP.
- I want to change protocol implementation bugs from some vendor.
- I need a way to create test packets to investigate strange firewall packet drops.
- I want to see what will happen if some packets header flags are changed in strange way, how will that affect the packet forwarding.
- I want to send stuff across the network and see what happens.
- I need other stuff too.