TIL that Ethernet encodes bytes as 10 bits not as a parity / error detection mechanism as I had thought, but in order to be "DC-free" (to not accumulate too many electrons on either end of a connection)
> not accumulate too many electrons on either end of a connection
This isn't accurate, like most invocations of electrons when trying to explain electricity. Ignore the electrons, focus on the fields, where the fields go the electrons will (try to) follow.
Ethernet doesn't even have "ends", really. A compliant 10baseT connection is two loops, one in each direction, with a small transformer at either end. Because it is impossible to transmit a DC level through a transformer, all you can actually transmit are edges, which at that frequency get rounded off nicely. That's why it has to be DC-free, because only pulses count. There's a substantial level of DC isolation between the ends, something like 1.5kV.
Andditional reason why you should ignore the electrons: they will simply confuse you when reasoning about transmission lines, as the signal velocity is much faster than the electron drift velocity. If you look very closely and ask questions like "why does the signal velocity depend on what the dielectric is?" you realize that the signal isn't "in" the wires, it's "in" the space between them, which is an insulator, and therefore not dependent on electrons at all.
Ethernet doesn't need a transformer. You can use capacitive isolation as well. But your point still stands though the edge transitions provide easier clock recovery too.
I constantly think to myself that I should make a high quality Anki deck for teaching and retaining the low level networking basics. Even after a college course on the subject the only way it truly clicked with me in a laying way was by Ankifying Michael W. Lucas's phenomenal Networking for System Administrators, and now a solid 30% of problems I run across on a daily basis are made easier by having that knowledge at my fingertips.
One fun fact I learned while at uni was that _technically_ referring to the ethernet connector as RJ45 is incorrect, and 8P8C would be the correct term [1]. But obviously, these days everyone knows what RJ45 is, and almost no one knows what 8P8C is.
I love these low level/from scratch resources. Recently been doing some game development with Godot. I decided to take a break and make a toy game with just SDL2. Lots of stuff I learned (especially from Lazy Foo’s SDL2 series) helped click a lot of concepts from Godot and let me gain a deeper understanding.
Networking is something I find intimidating so this is a good shot to jump in and grow
TIL that Ethernet encodes bytes as 10 bits not as a parity / error detection mechanism as I had thought, but in order to be "DC-free" (to not accumulate too many electrons on either end of a connection)
https://en.wikipedia.org/wiki/8b/10b_encoding#Running_dispar...
> not accumulate too many electrons on either end of a connection
This isn't accurate, like most invocations of electrons when trying to explain electricity. Ignore the electrons, focus on the fields, where the fields go the electrons will (try to) follow.
Ethernet doesn't even have "ends", really. A compliant 10baseT connection is two loops, one in each direction, with a small transformer at either end. Because it is impossible to transmit a DC level through a transformer, all you can actually transmit are edges, which at that frequency get rounded off nicely. That's why it has to be DC-free, because only pulses count. There's a substantial level of DC isolation between the ends, something like 1.5kV.
(100baseTX is slightly more complicated but still has the same nonzero constraints https://en.wikipedia.org/wiki/MLT-3_encoding )
Andditional reason why you should ignore the electrons: they will simply confuse you when reasoning about transmission lines, as the signal velocity is much faster than the electron drift velocity. If you look very closely and ask questions like "why does the signal velocity depend on what the dielectric is?" you realize that the signal isn't "in" the wires, it's "in" the space between them, which is an insulator, and therefore not dependent on electrons at all.
Ethernet doesn't need a transformer. You can use capacitive isolation as well. But your point still stands though the edge transitions provide easier clock recovery too.
I constantly think to myself that I should make a high quality Anki deck for teaching and retaining the low level networking basics. Even after a college course on the subject the only way it truly clicked with me in a laying way was by Ankifying Michael W. Lucas's phenomenal Networking for System Administrators, and now a solid 30% of problems I run across on a daily basis are made easier by having that knowledge at my fingertips.
Nice book, can you share your anki deck ?
One fun fact I learned while at uni was that _technically_ referring to the ethernet connector as RJ45 is incorrect, and 8P8C would be the correct term [1]. But obviously, these days everyone knows what RJ45 is, and almost no one knows what 8P8C is.
[1]: https://en.wikipedia.org/wiki/Modular_connector#8P8C
Related:
Network protocols for anyone who knows a programming language (2017) - https://news.ycombinator.com/item?id=36984171 - Aug 2023 (39 comments)
Network protocols for anyone who knows a programming language - https://news.ycombinator.com/item?id=18967387 - Jan 2019 (71 comments)
I love these low level/from scratch resources. Recently been doing some game development with Godot. I decided to take a break and make a toy game with just SDL2. Lots of stuff I learned (especially from Lazy Foo’s SDL2 series) helped click a lot of concepts from Godot and let me gain a deeper understanding.
Networking is something I find intimidating so this is a good shot to jump in and grow
https://book.systemsapproach.org/