Regardless of the layer, in a few words WireGuard is a simple encrypted tunnel over UDP. Since it’s UDP - there’s no guarantee all packets will be delivered, BUT - what WireGuard places emphasis on is all packets delivered from the WireGuard interface will be authenticated and encrypted. Similarity if packets are received from a particular peer, replies to that IP address will be guaranteed to go to that same peer.
The best feature of all imho is OpenSSH inspired authentication - makes configuring server/peers really straightforward.
References [1] https://www.wireguard.com/papers/wireguard.pdf
My understanding is the Wireguard messages are IP (L3) but the protocol messages itself are UDP (L4) and it seems reasonable to describe Wireguard as a session layer over UDP given how much state and connection information it maintains.
Maybe due to my own ignorance I misunderstood the meaning of derefr’s comment. Apologies if I sounded rude!
But Layer 6 is where the difference lies between ASN.1’s representational encodings—DER, BER, XER, etc. You can switch out this “presentation layer” encoding without either your application layer caring (it just sees an ASN.1 codec library) or your transport layer caring (it’s just transporting an opaque octet-stream payload document.)
One might also describe Avro, Parquet, etc. as “presentation formats”—they all have canonical input ADTs, but multiple possible wire encodings depending on the schema supplied at encode time. But all such schemas decode back to the same input ADT.
1. The physical connection and voltage/light levels
2. Switching and MAC addresses
3. Routing and IP addresses
4. TCP/UDP and port numbers
Of course we know it's more complicated than that, but it's still a useful simplification.