7 ms·
Network protocols for anyone who knows a programming language (2017)
- monk1 3y ago> An interpacket gap of 96 bits (12 bytes) where the line is left idle. Presumably, this is to let the devices rest because they are tired. This one left me laughing hard.
- jmbwell 3y agoIt’s funny cos it’s kinda true? While the preamble allows the devices to sync their clocks, the gap allows them to reset. The assumption is that there will be some drift between the clocks over the course of a transmission. A period of electrical silence makes it clearer when the last packet ends and when the next preamble begins. I think of it like shouting in a canyon. Shout Hello and it’s intelligible, but shout a whole sentence, and it’s hard to make out among the echoes and wind and birds. With some time between words for noise to settle down, signal to noise ratio improves and everyone can resync with each word. It’s not a big deal, and the gaps are smaller as line speeds increase. 10Base-T has big fat millisecond gaps, while 400G Ethernet has gaps that seem impossibly small.
- convolvatron 3y agoI suspect it has (had) to do more with the fact that ethernet used to be a multi-access protocol and you were giving someone else a chance to talk. in general having read this its not clear how much of this is legacy and how much is modern. certainly there doesn't need to be a rest on a dedicated channel, and most other protocols leave the clock synched between peers (i.e. with 4b5b idle tokens)
- jmbwell 3y agoYeah the article skips past the multiple access (hub) era for sure, and I haven’t thought about it in many years myself (!). I don’t know for sure how directly the IPG was related to multiple access. Early Ethernet would wait for silence, a la carrier sense multiple access, but it also used a collision detection and backoff mechanism. When someone tried to transmit, if someone else was talking, both would detect the collision and each would wait a semi-random period of time and try again, repeating with incrementally larger delays until a collision wasn’t detected and the frame could be transmitted. When there were only hubs, or when everything was on one coaxial cable, collisions happened all the time. The more nodes on a segment, the more collisions would impede traffic. You’d design a network with gateways and routers and expensive little store-and-forward switches at what we’d now call the core, to partition everything into smallish segments and try to keep the collision domains small. Cheap switching at what we’d now call the access level fixed all this by making all links effectively point to point. Ethernet standards from 10G onward don’t even bother with multiple access (point to point only, meaning switched), but they still retain the inter-packet gap. In some places it’s referred to as a “guard interval.” So I do think it’s mostly to provide opportunities for resyncing. Much of this applies in the RF domain as well. Before MIMO, Wi-Fi was directly analogous to an Ethernet hub… CSMA, one collision domain, incremental back off. Some access points still let you specify the guard interval manually. MIMO and things like beam-forming help reduce the collision domains by breaking the RF into cells and allowing something pretty close to a point to point link between the node and the AP. RF is its own dark art, but in terms of signaling, the problems and their solutions are much the same. So you’re correct that the guard interval or IPG would create a bit of silence for someone else to jump into. Everyone would probably have to resolve the collision in that case, but Ethernet accommodates that scenario as well.
- eternityforest 3y agoI wonder if they left it in because they just wanted to be really, really sure there wouldn't be any getting stuck in bad states like some I2C devices can.
- bcrl 3y agoIt's still used to allow for timing discrepancies between the physical layer and higher layers. Phys will insert and delete symbols in the IPG when the FIFOs between layers have too few or too many entries. This allows for systems with ever so slightly different clocks to talk to each other without any packet loss.
- aequitas 3y agoThinking of the router in Warriors of the Net[0] and it makes perfect sense, he could use a rest once in a while. [0] https://www.youtube.com/watch?v=PBWhzz_Gn10 https://www.youtube.com/watch?v=PBWhzz_Gn10
- pests 3y agoIn the Gemini spacecraft this was almost true. The ram they used would overheat if accessed too frequently so the assembly coders had to be sure to add no ops or find other things to do while the ram cooled down.
- sesm 3y agoYou can find a more detailed (yet accessible) description of TCP congestion avoidance and slow start in this excellent and free book: https://hpbn.co/building-blocks-of-tcp/#congestion-avoidance-and-control https://hpbn.co/building-blocks-of-tcp/#congestion-avoidance... Edit: also, it has an entire section about HTTP/2 https://hpbn.co/http2/ https://hpbn.co/http2/
- z5h 3y agoGreat read. This made me curious about “the story” of the creation of the internet. ChatGPT suggested some books: 1. Where Wizards Stay Up Late: The Origins Of The Internet 2. The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution 3. Inventing the Internet Any comments on the above? Or other suggestions?
- tiahura 3y agoWhile not Internet-centric, hopefully you’ve read Hackers by Steven Levy.
- z5h 3y agoNo. (Shame). But I did just download “UNIX: A History and a Memoir”.
- pjmorris 3y agoI read 'Where Wizards Stay Up Late', thoroughly enjoyed it, and would recommend. I can't speak to the others.
- whartung 3y agoI looked at those titles and wondered if ChatGPT just made them up.
- beeburrt 3y agoThe Backbone https://technicshistory.com/the-backbone/ https://technicshistory.com/the-backbone/ There's also The Switch by the same person: https://technicshistory.com/the-switch/ https://technicshistory.com/the-switch/
- ipython 3y agoNot related to the "creation" of the Internet, but Clifford Stoll's The Cuckoo's Egg is a great read and I would highly recommend it. I also second "Where Wizards Stay Up Late".
- wofo 3y agoI liked "The Dream Machine", which also tells how computers came to exist
- lordnacho 3y agoCool, I didn't know that final wrinkle about the 8b/10b encoding. Physical layer stuff is not so common these days.
- tambourine_man 3y agoGary Bernhardt is just so good, I wish I would dedicate more time to read and watch his content. Alas, I'm a lazy #$%@&
- s_dev 3y agoHe's basically a hardcore version of Julia Evans who also does great learning content for techies.
- tambourine_man 3y agoShe's also fantastic. Their sense of humor is great and it makes digesting deep content a lot easier. But Julia's concision in her Zines is what sets her apart, to me. So much great content in 3 or 4 panels. Incredible, it must be really hard and take a long time to achieve. Gary is more of a prose guy, to me.
- yayitswei 3y agoGood study guide for that one interview question, "what happens when I type google.com into the browser and press enter".
- glonq 3y ago"The great firewall of china blocks me and I lose 10 social credit points"
- HL33tibCe7 3y ago> This is handled by IP, the Internet Protocol, whence IP addresses. This is grammatically nonsense. Correct would be “whence IP addresses come”. Or, “from where IP addresses come”, if you want to write like somebody normal One of my biggest pet peeves is when someone uses obscure words like “whence” in an effort to flex their knowledge - and it’s even worse when they actually use it wrong. Almost made me stop reading the article. Although I’m glad I didn’t, because the rest of the article is great.
- capableweb 3y agoI guess sometimes it takes a bit of knowledge about the author to read through their reading without cringing. In this case, I think it's on purpose, to give the author's (fictional) tone to the text. If you try watching one of the later talks, you'll see what style the text is trying to emulate.
- icedchai 3y agoI think it's a simple typo... "hence IP addresses" makes more sense.
- depressedpanda 3y agoI'm just happy they didn't write "from whence". I know it's accepted usage, but it just irks me when I see it as "from" is entirely redundant.
- gary_bernhardt 3y agoThat sentence's grammar is intentional. (I wrote the sentence.) English is not a programming language. I'm sure that we can both name revered authors who have used far "worse" grammar consistently throughout their careers, whereas the word choice that has so ruffled you here involves a single word. As to "flexing knowledge": I had some fun in a couple sentences in that article. I aim to be at least slightly more than a machine that extrudes gray paste of unit density. Fabricating an ulterior motivate and attributing it to me is offensive.
- davidrupp 3y ago
- ipython 3y agoTCP sequence numbers count bytes not packets, which is why they don't increment by 1 for each packet (unless the previous packet only included one byte of payload). Agreed with other commenters, this is a great article- thanks for posting!
- id0ntw4ntit 3y ago> There are too many Internet nodes for it to work in this way. We can't provide a direct, uninterruptible path from each machine to each other machine it wants to talk to. Is this true? Isn't a direct, uninterruptible path from each machine to the other a requirement for communication? The path must proceed through complex switching systems, like in the analog days, yes. What is meant by the statement that it is no longer electrically equivalent to a single wire?
- alfons_foobar 3y agoI think this refers to circuit switching (in the old telephone networks, when you called someone, the connection had to be physically established at the "intersections" by the phone network operators) vs. packet switching (where the underlying network is not changed, instead the data packet is forwarded from one "intersection" to the next and reaches its destination eventually).
- roelschroeven 3y agoIn old telephone systems, each telephone had a dedicated wire to the central, and centrals had a number of dedicated wires between, each one of which could be used for one conversation at a time. Setting up a call involved physically switching your line to one of the wires to the next central, and from there to the next, until the last central where there was a physical connection made to the line the person you were calling (unless if at some place no free wires were available; then you got a busy signal). Once all the switches were put in the correct position, there was practically speaking one uninterrupted wire between the two phones. If you were to put a voltage spike on your line, that could be measured at the other end. At the end of the call the switches were put in another position, and there was no electrical connection between those phones anymore. In a packet-switched network, there is no direct electrical connection between two arbitrary nodes; there is only an electrical connection between your device and the first router, and between any router and the next one. Of course nowadays telephone lines don't work with physical dedicated wires anymore either. It's all digitized and multiplexed now.
- jbirer 3y agoBookmarked.
- phlipski 3y agoExcellent little primer that clearly and simply explains basic networking!