I first got the idea during covid lockdown. The world was slowly getting used to remote work, appreciating its benefits and navigating the challenges it brought as the line separating personal and professional worlds got increasingly blurry. A mild inconvenience I often faced was that I would be on a call and my parents would call me for lunch or dinner — not knowing I was busy. I bought a smart…
This post builds up on my previous post where I talked about an interesting bug in my ping implementation. In case you haven’t read it I will explain it very briefly for better coherence. I was sending raw echo-request packets to a target host but I wasn’t using the right tool for sending raw packets. As a result, the operating system’s network stack slapped a duplicate IP header…
Sometime last year I implemented a toy ping utility in Go, where I did most of the packet creation, and serialization manually. I got it working however, there was something off about how I was serializing the IP packet. func (p *Packet) Serialize() ([]byte, error) { buf := new(bytes.Buffer) headerSerialized, err := p.Header.Serialize() if err != nil { return nil, errors.Wrapf(err, "error…