IP and TCP were very carefully designed and were not much like the networking standards of the time. It wasn't an arbitrary choice any more than designing a rocket engine is an "arbitrary choice".
IP and TCP were very carefully designed and were not much like the networking standards of the time. It wasn't an arbitrary choice any more than designing a rocket engine is an "arbitrary choice".
The point was basically that history is ‘arbitrary’, at a larger scale than the intention of the TCP design or the reasons it got chosen for standardization. Maybe the primary reason that TCP stuck is because the military committed to it first, and that signaled to the rest of the world that it was good enough.
It doesn’t necessarily require competition for something to be arbitrarily canonized or standardized, things just happen the way they happen. There can be good reasons all along the way, but it still could have happened a different way, and just didn’t. TCP does choose some specific tradeoffs, it’s not the only way the internet could have come about. Being first without competition is one way it happens. When this happens it adds enormous friction to later alternatives that have or make different tradeoffs.
Yeah, I get that, and of course everything is a spectrum, including the level of arbitrariness. But I am just going by the definition of arbitrary in a dictionary:
> arbitrary, adj. based on random choice or personal whim, rather than any reason or system.
Whereas my analogy with rocket engines was meant to illustrate that IP was designed to solve a very specific problem given a set of constraints. Most (let's say, liquid-fueled) rocket engines end up with very similar designs and engineering decisions are made to optimize performance rather than whim. It's a very empirically-driven engineering exercise.
And for the OP's mentioning of the TCP packet format, I still think we shouldn't regard that as arbitrary. The location of the source and destination fields, for example, was carefully chosen so that routers of the time could minimize the logic necessary to decode them and start to make routing decisions before even most of the header had arrived. It was literally optimized down to the bit position. Now, the choice of byte order (big endian), we might be considered somewhat arbitrary (maybe even wrong) now, but even that was motivated by the machines of the time, as most were big endian while nowadays almost all remaining architectures are little endian (causing no end of confusion to poor networking students).
I don't disagree that history overall, and computer history in particular is full of arbitrary choice points, but I think TCP/IP isn't a good example of that.
> It's not like there's an intrinsic reason TCP packets are the way they are now
This to me invokes the idea of mathematical intrinsic properties. For example the idea of the number zero didn’t always exist, but to this day we don’t have multiple representations or any alternatives. Something about the number zero feels intrinsic. Addition, multiplication, derivatives and integrals seem like operations that might have different notations, but are unchanging intrinsic concepts. TCP formats don’t seem to share this intrinsicness. It is in that sense that I agree with the top comment; there is nothing intrinsic about the TCP format, it is the result of conscious engineering choices, and today there are reasonable alternatives. In this sense I see your argument as supporting this idea that there’s nothing intrinsic about TCP.
> it's largely an arbitrary choice that we standardized on.
The word “arbitrary” was applied to the choice of standard, not the format. I’m choosing to see a second, different idea in that second clause. I see how and why it implies the format itself is being called arbitrary to you and others, but my defense of the comment is based on interpreting it differently than what you saw.
BTW, the dictionary definition starts with “based on random choice”. If we stop there, it still adequately matches what I was talking about, and it also unfortunately doesn’t add much color either. Then the keyword becomes “random” rather than “arbitrary”, but “random” is also commonly used to mean the reason is unknown or complex.
Total tangent, but being a fan of Monte Carlo methods, I frequently use “arbitrary” to disambiguate from truly “random”. When people are asked to pick random numbers, the results are arbitrary but not random in the mathematical sense. ;)
Yes they were, very literally, and incorrectly to boot
Being first is not arbitrary. It is hard to achieve, and valuable. It is a reason.
There were networking systems before TCP and alongside TCP, TCP was clearly superior for a large number of reasons.
Given that everyone on hacker news's livelihood stems from the awesome of TCP (not an over statement), I propose a bit more respect.
How did it happen that the byte order of the multi-byte numeric fields in TCP/IP headers is big endian, which is opposite of what most machines use now? Back then, did it look as if big endian would become prevalent?
Today, almost every host attached to an IP network has to byte swap.
The IPv6 people definitely ought to have designed a little more carefully.
Yes. Big endian was "natural" and x86 was weird and awkward, and a niche low end design that woud never be connected to networks.
For example let's say I send a message to 1.2.3.4, the first router will decide what will be the next node based on the first number, the next one on the second, the next on the third, etc... Because it is big endian, the first router only has to read the first number to do its job, if it was little endian, it would have to read the entire address fist.
Of course, it is a detail, I mean, the words "little/big endian" is a parallel to the the pointless fights in Gulliver's travels. But even if it could have gone either way, for IP, big endian is more natural.
I've designed several transport protocols (don't ask) - and they are really just minor riffs on TCP.
if aliens had a fault-prone wire they wanted to send a message across over some distance - it seems quite likely they would end up with TCP