[music]
Okay, so let's start out with the early Internet.
What did that look like?
So what we're talking about here
is the 1960s - the early 1960s.
I would like to say - and yes, I can actually say that was before
I was born, good - but the early Internet,
some terms you may have heard of before,
DARPA or ARPA.
DARPA stood for The Defense
Advanced Research Projects Agency.
And the early Internet started
out as a project from -
I'm not sure if I'm pronouncing it correctly,
if people say DARPA or D ARPA,
never actually really looked that up -
but it started out as a research
project from them and they created
something called the ARPANET.
And originally, way back in the day,
the ARPANET was very simple.
It simply consisted of two hosts which were mainframes,
so this is even before laptops or
PCs were generated. You had
these two monstrous computers that were talking to each other,
and that was the early form of networking,
having one mainframe be able to connect and get the resources of
another mainframe.
It was a point-to-point connection
using circuit switching lines,
actually using the phone lines.
The mainframes were located at different universities,
different colleges.
I think they were in the same state originally.
I think they were both in California originally.
But they used basically the telephone
lines to get to each other
and transfer their data.
Wait, went a little fast there.
So keep in mind, back in these early days here,
there was no such thing as a LAN - as a Local Area Network.
And this is important to conceptualize
because I don't know if you're like me or not,
but when I try to visually think,
visually picture in my mind,
data going across a network,
the image that comes to my head is, number one,
I imagine data coming into my laptop -
so inbound or ingress data -
and I envision that as a series of electrical pulses, right?
Zz, zz, zz, zz, electrical pulses coming in,
and these electrical pulses are being
interpreted as 1s and 0s.
So my NIC card is seeing this electricity bouncing around on the cable,
and it's interpreting that as a series of just thousands
of 1s and 0s coming in really really quickly.
And when I think in terms of sort of the OSI model
and the stack and all that stuff, the first thing that comes to my mind is
okay, those electrical pulses, that's my physical layer.
That's Layer 1 of the OSI model -
the electricity coming into the NIC card -
and then I start going up the OSI model.
This is the way I envision. I say, Okay,
well, the next one is the data link layer - Layer 2.
And at the data link layer, my NIC card says, Okay, let's see here.
What rules am I following? What protocol am I following?
Oh, I'm doing Ethernet.
So according to the rules of Ethernet,
the first few pulses of electricity
are the pre-amble and the Ethernet frame.
The next few pulses of electricity
are the destination MAC followed
by the source MAC.
Then eventually, Layer 2 says, I'm done.
I've looked at a few hundred bits.
I've been able to interpret that as an Ethernet frame.
Within those few hundred bits, it told me that the next section is
going to be IP, and so now we go up to the networking layer.
When I visualize this, I start at Layer 1,
I go to Layer 2, and then Layer 3 and on up.
Why I'm bringing it up right here is because originally,
when the original ARPANET was designed,
there really wasn't a Layer 2.
There was a Layer 1.
It was a circuit switched line using
telephone lines for one mainframe
to call another mainframe, but there
was no such thing as Ethernet
originally, back in these days, back in the early 1960s.
So there was no such thing as MAC addresses.
A lot of times, people assume that historically,
Layer 2 came out first,
MAC addresses, and then IP came out after that.
But it's actually just the opposite.
TCP/IP came out before local area networks came out,
before Ethernet.
So as it says here, All communications
originally were point-to-point,
and initially, it was like circuit switching,
which is another way of saying, the phone lines.
And then, as more and more networks start coming up,
they were still point-to-point -
one device talking to another device -
but they start using other types of media at the physical layer,
like satellite uplinks, like direct cable connections.
I don't mean cable modem, I mean a physical,
hardwired cable from one mainframe in one building
to another mainframe in another building.
That's what I'm talking about there.
So as these point-to- point networks were being developed,
as it says, There was a need to develop a protocol so that hosts
on these disperate networks could
communicate with each other.
So the idea was, Okay, I've just
developed a very primitive network
where my mainframe can talk to another mainframe.
Now, what if I expand that to where my mainframe now has the
ability to talk to six other mainframes?
Still direct connections.
What if I expand that a little bit further?
What if I say, I want my mainframe
to talk to Sally's mainframe,
and then jump through Sally's mainframe
to Bob's mainframe on the
other side? Now, it's not point-to-point,
it's me talking to somebody else,
and then going through them to
somebody else.
And they start saying, Okay, we
need some sort of address to do that.
So when I connect to Sally, I need
to have some way of telling her,
Hey, I don't really want to talk to you.
I don't really need your data.
I just need you to take what I'm
sending you and pass it on to Bob
behind you. So this is where the whole idea of TCP/IP originally
became invented.
They said okay, well, we need some
sort of address so that when I'm
sending my data to Sally, she knows it's not for her,
it's for the person behind her, so
she can establish a connection.
We also need to figure out some ways to make,
that data reliable,
like how do I know if I send something to Bob way out there,
how do I know if it got there?
How long should I wait before I determine that oh,
it doesn't look like it got there.
What should I do about that?
So they actually developed TCP right along the same time as IP.
So TCP was developed to answer
questions of how do I make this very unreliable,
very primitive connection reliable for me?
What do I do when stuff is lost?
Then of course, they put IP along
with that so we can have addressing.
Just to give you some interesting
terminology, back in the original ARPANET,
these two or three colleges or
universities that had mainframes
talking to each other,
that they actually developed a whole unique box,
a whole unique system that the
mainframe would connect to and then
these boxes - these black boxes - is
actually what form the network.
These black boxes would use the
circuit switching lines to talk to
each other. And they were called--
has anybody studied the history of
the Internet? Does anybody know what
those original - I would say routers -
what was the name of the very first
routers that were developed that
these mainframes connected to talk to each other?
Does anybody know?
It actually has kind of a funny sounding acronym.
They were called IMPs or Internet Messaging Processors.
They were huge. They were like the
size of a refrigerator, and of course,
the mainframe was like the size of your whole house.
But the mainframe would connect
to this big refrigerator size box
called an IMP and it actually was the IMP that needed to be addressed.
The IMP needed to have an address
so it could talk to the IMP in Standford,
could talk to the IMP in Berkeley,
or the IMP in Stanford
could talk to the IMP in Los Angeles.
That's where they originally came up
with the idea of Layer 3 addressing.
The main point I want you to take
away from here is that number one,
the very, very first networks were
point-to-point only, because number two,
there was no concept of local area networks.
There was no concept of something
called a broadcast domain where
a whole bunch of devices could see each other on the same wire.
That had not been created yet.
This is what networks looked like back in the early days.
You had these internet messaging processors connecting to always uo
permanent circuits.
The original Layer 3 protocol that
they used to address these things
actually wasn't even IP.
They came up with a precursor to that,
which was called the Network
Control Protocol - NCP.
And NCP didn't even really-- the only kind of addressing it used
was like for port numbers,
like whatever protocols were running on that mainframe,
each protocol had sort of its own unique port number
and that's how they addressed things.
And then of course, we had dial-up circuits,
where people would use modems to connect to each other,
or satellite networks.
So these were the early days.
Then people said - and this is what I described earlier -
they say, Well, what if I, in the future,
need to jump through something?
What if I need to connect--
as we can see here, this mainframe
on the far left wants to connect all the way to the mainframe in
the bottom, so we've got to jump
through a couple things to do that.
So it was the vision of these early Internet pioneers
that if somehow people could connect
these disparate networks together
- a satellite network connected
to a modem network connected to a
dial network - if they could somehow
connect all these things together,
you would now have networks connected by a series of hops.
And so there was going to be a need for
some kind of networking addressing scheme,
flow control, air correction and detection,
and all that stuff, and that is where TCP/IP was born,
with a need to solve the problems
introduced by what you see right here.
So the original designers of TCP/IP said,
Okay, well one of the things we're
going to need is each hop in
the network is going to need an address
so when we send data, that
hop knows is that data for you, or for someone behind you?
And so the original designers of IP said,
Okay, well let's see here.
Everything is viewed by computers
as binary. It's just 1s and 0s, 1s and 0s,
it's just a string of binary.
So they said, Well,
in however many meetings they had,
they decided and that address is
going to be 32-bits long.
They said that a unique network
address is going to be 32-bits long,
and they said, Okay, well, you know--
remember this is like the late 1960s now,
like 1969, 1970 - and at this point in time,
there's literally a handful of these networks.
So they said, Well, let's see here.
A 32-bit address,
I don't really see how there's ever
going to need to be anymore than
a couple of hundred networks.
This is all experimental.
We're just seeing if this works.
So of this 32-bit address,
we'll just say that the first 25% of it -
the first 8-bits - will represent the network,
and then the remaining bits will
represent that unique IMP or mainframe
on the network.
Keep in mind, the original IP address
was 32-bits long - just like
it is today - but key difference was,
it was understood that of that
32-bit address, only the first eight
bits at the front end represented
the network address.
If you think in terms of binary, you realize that with eight bits
to play with, you're pretty limited
in how many networks you have.
As a matter of fact, you only have 254 networks available.
Now with eight bits, technically,
if you think of every possible
combination of binary you can come
up with from 00000 up to 11111,
and everything in between, technically,
that gives you 256 combinations
of numbers, of bits you can come up with with eight bits to play with.
But the early designers of IP said,
Well, two of those combinations are not going to be usable as an address.
The combination where the network is all 0s,
so the first eight bits, if those are all 0s,
that represents like a default route -
a route to anywhere.
Then the other combination is if all of those bits are 1s,
that's considered a broadcast.
It's like sending something to anybody.
So those two numbers out of 256 you could not use,
that left 254.
Back in 1969, 1970, they were thinking,
We're never going to use
254 networks. This is experimental.
This is for fun.
Of course we know, that didn't turn out to be the case.
Now what's kind of interesting is, it was actually very forward
thinking of these people to come
up with a networking address where
you had a network address and then a bunch of host bits.
Because if you think about it, there were no LANs back then.
There were no broadcast domains.
It was just point-to-point.
They could've come up with a scheme where they said,
Okay, every device is just going to have a 32-bit number.
We're not going to divide this between network and host.
You're going to have a unique name.
I'm going to have a unique name.
We're all just going to know each other's unique names.
But they didn't do that.
They took those 32-bit number and they divided it -
8 bits for the network, 24 bits on the end for host.
Because they did that, it was setting
the stage for a few years later
when LANs and Ethernet would come out
and those host bits would take
on a lot more relevance.
So we can see here in this particular case,
we've got four unique networks.
So if we only have 8-bits to play with,
it would say something like, Okay network number 1,
you can see there, it's going to be 7 zeros followed by a 1.
Network number 2, it's going to be 6 zeros followed by a 10.
So as long as those 8-bit patterns
are unique from each other,
they're different,
they could be recognized as being different networks.
All right, now here we go into the 1970s.
So in the late 1970s, now Ethernet
and Token Ring came on the scene.
Some of you guys might be saying, Token Ring?
What's that? That's not part of the CCNE. You're right.
Token Ring died out many, many years ago,
but back in this day,
they were competing Layer 2 protocols, data link layer protocols.
Both Ethernet and Token Ring were
founded on the same idea that you
could have a bunch of devices,
still probably mainframes or big servers,
but a bunch of devices all connected
to some common network media
and able to see each other, be able to talk to each other.
For example Ethernet,
the original Ethernet was a big thick coaxial cable, very similar
to the cable that goes into your cable TV set.
It was big, it was yellow, it wasn't really bendable,
and the idea was you could have
several mainframes all clamped into
that same cable and if they were running Ethernet,
now they could see each other on that cable.
If any mainframe started transmitting voltage,
started transmitting electricity on that cable,
you had more than one device on that cable that could see it.
This is the whole idea of a broadcast domain.
A broadcast domain is a collection
of devices connecting to a common
network media, let's just say it's a cable to make it simple.
In that broadcast domain, if one
of those devices starts using that
network media, starts transmitting electricity on it,
voltage on it, all the other devices see that.
They're privy to that.
So that was different, right?
Back in the early internet, it was
just two devices connected to
a cable and that was it.
Now, with Ethernet, you've got the
concept of three or four or five
devices could all be connected to
that same cable and they could
all see each other.
So now we have another-- now we had
a requirement that did not exist previously.
Previously with just two devices on a cable,
when device A started fluctuating the electricity,
there's only one place it could go -
device B. Device B knew, Okay, if I see some electricity coming in,
some 1s and 0s, it's got to be for me
because there is only me and device A
on the cable.
There's nobody else it could be for.
There was really no need for any kind of addressing at Layer 2
because it was point-to-point.
Now with the broadcast domain, with Ethernet,
we do have the requirement for an address,
because now we could potentially have 30 devices all seeing that
same electrical energy, all being
privy to these 1s and 0s going
across the cable, and now they need to know,
Is that for me
or can I safely ignore it?
So that's why with Ethernet they said,
Okay, we need to build in an address called a MAC address,
a Layer 2 address into Ethernet, so that when I put stuff on the wire,
I can address it to a unique individual.
And so when I see stuff coming on the wire,
I know if it's for me or if it's not for me.
Now also keep in mind that the
original developers of Ethernet and
Token Ring, they said, Well, Ethernet and Token Ring,
there's protocols out there
right now that it could carry,
like Ethernet might be carrying IP behind it,
but maybe in the future someone will
develop other types of protocols.
We don't want to limit-- as a developer of Ethernet,
let's say I'm the designer of Ethernet,
I don't want to limit or restrict
myself to where my Ethernet protocol
is only ever going to be able to carry IP packets.
I want to design it so it's fluid, so it's scalable,
so that if anybody develops another protocol five,
ten, fifteen years from now, my Ethernet protocol,
which was developed way back in 1972, can carry that new thing.
So this is why Ethernet needed its own unique address.
A lot of times when we think of Ethernet,
logically in our minds we think, Oh, Ethernet carries IP.
Ethernet carries IP.
Well, that's true, but Ethernet can
carry hundreds of different protocols,
not just IP. So the designers of Ethernet were to assume that
a frame might carry non-IP protocols
so they put their own address
into an Ethernet frame.
[music]