
1
00:00:00,830 --> 00:00:03,830
So now we're going to talk about the 
application layer. 

2
00:00:03,830 --> 00:00:06,495
And, up to now we've been talking about 
these bottom layers and we've been sort 

3
00:00:06,495 --> 00:00:10,186
of working our way up. 
We talked about the Link Layer, the IP 

4
00:00:10,186 --> 00:00:14,110
Layer and the TCP Layer. 
And, and, and each of these layers works 

5
00:00:14,110 --> 00:00:17,297
with the other. 
The, the IP layer depends on a link 

6
00:00:17,297 --> 00:00:21,266
layer, the TCP layer, depends on and adds 
value to the IP layer, and now we're 

7
00:00:21,266 --> 00:00:25,550
going to talk about the application layer 
that is going to make use of the services 

8
00:00:25,550 --> 00:00:31,470
of the TCP layer. 
And the services of the TCP layer are 

9
00:00:31,470 --> 00:00:35,646
basically to give us a reliable, 
sequenced end to end stream, that can 

10
00:00:35,646 --> 00:00:40,470
start in one application in one computer 
and end in an application in a different 

11
00:00:40,470 --> 00:00:46,241
computer, and have a two way 
communication. 

12
00:00:46,241 --> 00:00:50,993
So I can send the word Hello, Hello, from 
one application, and then, all kinds of 

13
00:00:50,993 --> 00:00:55,889
billions of dollars of hardware, hundreds 
of thousands of engineers, 40 years of 

14
00:00:55,889 --> 00:01:02,159
engineering design, and out comes Hello 
on the other end. 

15
00:01:03,670 --> 00:01:07,266
And what's beautiful, and this is the 
beauty of the layer, of the four layer 

16
00:01:07,266 --> 00:01:10,910
architecture, is we just pretend this is 
magic. 

17
00:01:10,910 --> 00:01:17,280
This is magic. 
We send something and out it comes. 

18
00:01:17,280 --> 00:01:19,980
With that magic available, with that 
billions of dollars and 40 years of 

19
00:01:19,980 --> 00:01:22,745
research magic available, now what would 
we do? 

20
00:01:22,745 --> 00:01:26,663
Right? 
Now what would we do with that magic if 

21
00:01:26,663 --> 00:01:35,20
we had it available to us? 
So TCP is giving us this reliable pipe. 

22
00:01:35,20 --> 00:01:37,696
We're going to think about now, we're 
going to ignore all the rest of it. 

23
00:01:37,696 --> 00:01:39,310
Right? 
We're going to ignore, all this part, 

24
00:01:39,310 --> 00:01:42,260
we're going to put, all we're going to 
say, is, we have an application on this 

25
00:01:42,260 --> 00:01:46,630
end of our computer. 
Now remember, this is your computer. 

26
00:01:46,630 --> 00:01:52,140
And say this is the server, right? 
So this is you, and this is the server. 

27
00:01:52,140 --> 00:01:55,260
And all the software runs in it in, in 
every, all the software's running in your 

28
00:01:55,260 --> 00:01:58,679
computer and all the software is running 
in the server. 

29
00:02:00,80 --> 00:02:03,565
So the question is, what are we going to 
do between these two things, okay? 

30
00:02:03,565 --> 00:02:06,650
What, how we, what, how are we going to 
ask for data? 

31
00:02:06,650 --> 00:02:10,50
And this application is the client 
application. 

32
00:02:10,50 --> 00:02:12,374
And this application is the server 
application. 

33
00:02:12,374 --> 00:02:16,75
Client and server are not necessarily the 
same, very much the same. 

34
00:02:16,75 --> 00:02:18,920
Client and server are likely very 
different applications. 

35
00:02:18,920 --> 00:02:22,962
The client is like giving me information. 
And the server is responsible for giving 

36
00:02:22,962 --> 00:02:27,434
giving the information to the client. 
So the client is often making a request, 

37
00:02:27,434 --> 00:02:30,600
and then the server is making a response 
back. 

38
00:02:30,600 --> 00:02:34,140
And so, this client server mechanism, 
this application to application 

39
00:02:34,140 --> 00:02:37,820
communication, we could build a mail 
system with it. 

40
00:02:37,820 --> 00:02:40,886
World wide web. 
Or we can stream videos much like we'll 

41
00:02:40,886 --> 00:02:45,325
be streaming this lecture back and forth. 
But we're going to focus on the world 

42
00:02:45,325 --> 00:02:49,87
wide web because it's really simple, and 
really elegant, and it's probably the 

43
00:02:49,87 --> 00:02:53,385
easiest one to understand. 
And, it's the most popular. 

44
00:02:53,385 --> 00:02:57,543
But there are many other protocols going 
on, file transfer and others, but, the 

45
00:02:57,543 --> 00:03:03,69
world wide web protocol, HTTPD, is the 
protocol that is the most popular. 

46
00:03:03,69 --> 00:03:10,430
So, the, there are two basic questions 
that the application layer has to solve. 

47
00:03:10,430 --> 00:03:17,16
One is, which application gets the data. 
And this is done using a mechanism called 

48
00:03:17,16 --> 00:03:21,570
ports, and ports allow a IP address, or a 
single computer, or a single server, to 

49
00:03:21,570 --> 00:03:26,55
serve up multiple services, and then for 
a client to be able to dial up much like 

50
00:03:26,55 --> 00:03:34,100
a telephone extension, and pick the 
service that they are interested in. 

51
00:03:34,100 --> 00:03:38,160
Once you've connected to the service that 
you're interested in, like the world wide 

52
00:03:38,160 --> 00:03:42,810
web service, then you need to know the 
protocol to talk to that. 

53
00:03:42,810 --> 00:03:45,696
Ports and TCP are like a telephone 
extension number. 

54
00:03:45,696 --> 00:03:49,11
Again, that, like I said, they, you can 
connect to an IP address but then you can 

55
00:03:49,11 --> 00:03:53,10
connect to a port within it. 
And so if you think about a telephone 

56
00:03:53,10 --> 00:03:57,2
number, and an extension, it's sort of a, 
a further refinement. 

57
00:03:57,2 --> 00:04:00,530
An IP address gives us a particular 
server,a piece of hardware connected to 

58
00:04:00,530 --> 00:04:04,338
the internet, and then a port within that 
tells us what application we're going to 

59
00:04:04,338 --> 00:04:10,375
talk to. 
So, let's talk about ports and 

60
00:04:10,375 --> 00:04:14,878
connections. 
So, if I add a server, and this kind of 

61
00:04:14,878 --> 00:04:19,362
a, a arbitrary server. 
Here, here is a single server, 

62
00:04:19,362 --> 00:04:23,584
www.umich.edu. 
And it has one IP address connected into 

63
00:04:23,584 --> 00:04:28,360
the cloud. 
We can have many clients talking to it. 

64
00:04:28,360 --> 00:04:32,980
And, we have many services running on 
this server like sending email, or 

65
00:04:32,980 --> 00:04:38,293
logging in to that server, or retrieving 
webpages, or retrieving my mail from that 

66
00:04:38,293 --> 00:04:43,620
server. 
And there are ports, so, incoming email 

67
00:04:43,620 --> 00:04:48,820
is done generally in port 25, remote log 
in is 22 or 23, web servers depending on 

68
00:04:48,820 --> 00:04:54,100
whether it's secure or not are 80 or 443, 
and, [COUGH] the personal mail box is on 

69
00:04:54,100 --> 00:05:01,570
ports 109 or 110. 
And so these computers don't just connect 

70
00:05:01,570 --> 00:05:07,450
to an IP address, but they connect to a 
port within an IP address. 

71
00:05:07,450 --> 00:05:11,980
So some common TCP ports that we have are 
the ones I just mentioned. 

72
00:05:11,980 --> 00:05:14,920
And you can take a look at these on the 
internet. 

73
00:05:14,920 --> 00:05:16,584
The various ports. 
Okay? 

74
00:05:16,584 --> 00:05:20,809
Now, once we have a connection to the web 
server, or to the mail server, or to the 

75
00:05:20,809 --> 00:05:25,540
post office server, we have to know how 
to talk to it. 

76
00:05:25,540 --> 00:05:27,990
And that's what's called an application 
protocol. 

77
00:05:27,990 --> 00:05:32,330
And that is, the rules for conversation, 
the rules for conversing. 

78
00:05:32,330 --> 00:05:35,746
So, TCP gives us this reliable 
connection, we now can connect to the 

79
00:05:35,746 --> 00:05:39,589
server that we desire to connect to by 
using ports, and the question is, what 

80
00:05:39,589 --> 00:05:43,127
are we going to to say across that 
connection, and what we say across that 

81
00:05:43,127 --> 00:05:47,92
connection, who talks first, what do you 
send, what comes back, depends on the 

82
00:05:47,92 --> 00:05:55,322
kind of server that you are talking to. 
We're going to play mostly with the world 

83
00:05:55,322 --> 00:05:59,237
wide, the world wide web. 
Oops, I clicked the wrong button there, 

84
00:05:59,237 --> 00:06:03,131
the world wide web server, because it's 
the simplest, and it's the most obvious 

85
00:06:03,131 --> 00:06:07,742
as to what's going on. 
So the world wide web clients, and the 

86
00:06:07,742 --> 00:06:12,20
world wide, which are otherwise known as 
browsers, the world wide web clients, and 

87
00:06:12,20 --> 00:06:17,620
the world wide web servers communicate 
using a protocol called HTTP. 

88
00:06:17,620 --> 00:06:22,420
As a matter of fact, if you look at the 
top of your URL it's http://, something, 

89
00:06:22,420 --> 00:06:27,43
dot dot dot, right? 
And [COUGH], and so basically, there is a 

90
00:06:27,43 --> 00:06:31,20
specification for how this is done. 
So when they wrote down, I'm going to 

91
00:06:31,20 --> 00:06:34,650
write the first web browser and the first 
web server, they also wrote a document 

92
00:06:34,650 --> 00:06:40,226
about how that piece of software would 
talk to this other piece of software. 

93
00:06:40,226 --> 00:06:43,450
And the, and it's a very simple concept, 
http has a protocol where you make a 

94
00:06:43,450 --> 00:06:47,270
connection to the, from the client to the 
server. 

95
00:06:47,270 --> 00:06:50,660
The client requests a document. 
The server feeds out the document. 

96
00:06:50,660 --> 00:06:52,700
And then the connection is dropped. 
Okay? 

97
00:06:52,700 --> 00:06:55,420
So it's very simple. 
We'll actually simulate this. 

98
00:06:55,420 --> 00:07:00,172
This is called the HTTP request response 
cycle. 

99
00:07:00,172 --> 00:07:03,193
Okay? 
And so the way it works, is, you're in a 

100
00:07:03,193 --> 00:07:07,333
browser, and you click on a link, the 
browser's an application, it's the 

101
00:07:07,333 --> 00:07:11,956
client, running on your computer, so, so 
this is kind of your computer down here, 

102
00:07:11,956 --> 00:07:17,181
okay. 
You click on a link, then the browser 

103
00:07:17,181 --> 00:07:23,310
makers a connection to the web server and 
sends a request to, for the document. 

104
00:07:23,310 --> 00:07:27,464
The web server looks up, does whatever, 
and sends the document back, and then the 

105
00:07:27,464 --> 00:07:31,590
document is displayed on your screen. 
Okay. 

106
00:07:31,590 --> 00:07:37,680
So, let me show you sort of how this 
works with a web browser. 

107
00:07:37,680 --> 00:07:42,774
So here is a canonical webpage. 
So here's a browser, here's the URL that 

108
00:07:42,774 --> 00:07:46,950
I went and got, you can get this URL as 
well, you can even look at the source. 

109
00:07:46,950 --> 00:07:51,263
So if you look at this source there is 
[COUGH] my HTML. 

110
00:07:51,263 --> 00:07:54,292
But one of the things that's in this 
source is a link. 

111
00:07:54,292 --> 00:07:57,773
And if I hover over top of this link, 
whoops, I gotta go like that to hover 

112
00:07:57,773 --> 00:08:01,678
over the top of the link. 
You can see, at the bottom of my screen, 

113
00:08:01,678 --> 00:08:05,387
you can see it's going to tell you that 
we're about to go retrieve page2.htm. 

114
00:08:05,387 --> 00:08:12,640
Now, this browser is running on my 
laptop. 

115
00:08:12,640 --> 00:08:16,990
It is a web client. 
It is an HTTP client. 

116
00:08:16,990 --> 00:08:21,590
And I'm about to click on this piece of 
software running on my computer. 

117
00:08:21,590 --> 00:08:25,490
And then it is going to make a connection 
out the back of it, retrieve a document 

118
00:08:25,490 --> 00:08:29,740
and then show me the other document. 
So it's going to happen real fast. 

119
00:08:29,740 --> 00:08:33,824
I'll click on second page. 
It requested, and got a document back, 

120
00:08:33,824 --> 00:08:37,529
and showed me the document. 
So that's the contents of the second 

121
00:08:37,529 --> 00:08:41,934
document, okay. 
And so that is the request response cycle 

122
00:08:41,934 --> 00:08:47,394
that is triggered, that is triggered by 
me making a click somewhere in my 

123
00:08:47,394 --> 00:08:51,935
browser. 
The, the browser sees the click, it opens 

124
00:08:51,935 --> 00:08:54,639
a connection, this is sort of the 
internet over here, it makes a 

125
00:08:54,639 --> 00:08:57,915
connection, requests a document, the 
document comes back, and then the new 

126
00:08:57,915 --> 00:09:02,152
document is displayed. 
The request, response cycle. 

127
00:09:02,152 --> 00:09:06,189
Click, request, response, display. 
Click, request, response, display. 

128
00:09:06,189 --> 00:09:11,697
So let's take a look in some more detail 
as to what's really going on here. 

129
00:09:11,697 --> 00:09:16,449
So, the command that is being sent up to 
the server, across this connection, and 

130
00:09:16,449 --> 00:09:21,710
remember that this part here's the 
internet right there. 

131
00:09:21,710 --> 00:09:25,970
The command is a get command. 
And the document is based on the URL I 

132
00:09:25,970 --> 00:09:30,594
clicked on that the browser knows about, 
and says get /page2.html, and what comes 

133
00:09:30,594 --> 00:09:35,938
back is HTML. 
And that is a markup language that 

134
00:09:35,938 --> 00:09:40,890
describes how this doc, how this page is 
supposed to be shown. 

135
00:09:40,890 --> 00:09:45,840
So let's say that we wanted some more 
detail on how this really worked, right. 

136
00:09:45,840 --> 00:09:49,195
Let's say that we want to write a web 
browser and we want to be a good citizen 

137
00:09:49,195 --> 00:09:53,330
and we want to talk properly to the the 
web. 

138
00:09:53,330 --> 00:09:57,750
Well, we would go back to the IETF, the 
Internet Engineering Task Force, and we 

139
00:09:57,750 --> 00:10:02,102
would go grab the document that says hey, 
if you want to write a browser, this is 

140
00:10:02,102 --> 00:10:06,834
what you do. 
This is what you do if you want to write 

141
00:10:06,834 --> 00:10:10,340
a browser. 
You can go grab RFC 1945. 

142
00:10:10,340 --> 00:10:14,40
Which is the hypertext transport protocol 
version 1.0. 

143
00:10:14,40 --> 00:10:17,462
Now I'm sure there's more complex 
superseeded versions of it, but if we 

144
00:10:17,462 --> 00:10:20,826
read it, and read it, and read it, we 
spent a lot of time, we'd get down to 

145
00:10:20,826 --> 00:10:24,596
section 5.1.2, and it would say, if you 
are making a request for a document this 

146
00:10:24,596 --> 00:10:30,970
is the request line. 
It has the letters G E T, followed by a 

147
00:10:30,970 --> 00:10:35,41
space, followed by the URL you're looking 
for, followed by a space, followed by the 

148
00:10:35,41 --> 00:10:38,933
version, okay? 
So that is the rule. 

149
00:10:38,933 --> 00:10:43,585
That is what you're supposed to send down 
this connection. 

150
00:10:43,585 --> 00:10:46,610
It'll give us some more examples on page 
24. 

151
00:10:46,610 --> 00:10:51,240
And so, we could read all this, and we 
could write a web browser. 

152
00:10:51,240 --> 00:10:54,488
But what we're going to do, is we're 
going to fake being a web browser, we're 

153
00:10:54,488 --> 00:10:57,420
going to cheat. 
We're going to hack it. 

154
00:10:57,420 --> 00:10:59,80
We're going to pretend to be a web 
browser. 

155
00:10:59,80 --> 00:11:02,516
We're going to send the commands, to the 
web browser. 

156
00:11:02,516 --> 00:11:06,360
Now, I'm going to do this on a Macintosh, 
you could also do it on Windows, if you 

157
00:11:06,360 --> 00:11:11,19
installed Telnet Client, okay. 
So the key is you install a Telnet 

158
00:11:11,19 --> 00:11:13,970
client. 
Now most people would say that Relnet is 

159
00:11:13,970 --> 00:11:17,750
insecure, and it is, it's a very old 
protocol, because all it does is it opens 

160
00:11:17,750 --> 00:11:21,410
a TCP connection to a host on a port that 
I specify, and whatever I type goes 

161
00:11:21,410 --> 00:11:27,298
across that TCP connection. 
So it's a great way to hack, especially 

162
00:11:27,298 --> 00:11:31,811
older, less secure protocols. 
So because HTTP is generally a public 

163
00:11:31,811 --> 00:11:35,532
protocol, it's not really highly 
protected, so it's much simpler to hack 

164
00:11:35,532 --> 00:11:38,633
it. 
Hacking secure protocols is, requires 

165
00:11:38,633 --> 00:11:41,230
writing software rather than typing 
commands. 

166
00:11:41,230 --> 00:11:46,590
So if you're on windows you have to 
install Telnet, T-E-L-N-E-T. 

167
00:11:46,590 --> 00:11:49,900
So what I'm going to show you in a 
second, is I'm going to show you hacking. 

168
00:11:49,900 --> 00:11:50,439
And I'm going to telnet to 
www.drchuck.com, port 80. 

169
00:11:50,439 --> 00:11:57,4
What I'm saying is, connect me to this 
server on the internet, and connect me to 

170
00:11:57,4 --> 00:12:02,761
port 80, because I want to do HTTP 
connections, and then I will send one 

171
00:12:02,761 --> 00:12:08,450
command. 
I'm going to send that command. 

172
00:12:08,450 --> 00:12:10,642
And then the web server will give me back 
the page. 

173
00:12:10,642 --> 00:12:15,53
Okay? 
It's probably easier for me to just do 

174
00:12:15,53 --> 00:12:19,510
it. 
So let's take a look. 

175
00:12:19,510 --> 00:12:23,974
I am going to simulate what the web 
browser does when it's requesting, well 

176
00:12:23,974 --> 00:12:28,654
actually, we'll go to the second page, 
and when it's requesting the first page 

177
00:12:28,654 --> 00:12:33,490
it's doing a get for page one. 
Okay. 

178
00:12:33,490 --> 00:12:42,380
So that's what we're going to do, except 
now we're going to do it in a terminal. 

179
00:12:42,380 --> 00:12:46,278
So I'm going to type telnet, whoops, I 
always type this wrong. 

180
00:12:46,278 --> 00:12:52,148
T-E-L-N-E-T, www.dr-chuck.com, port 80. 
Okay. 

181
00:12:52,148 --> 00:12:53,923
So now I am connected to the webserver on 
dr-chuck.com. 

182
00:12:53,923 --> 00:13:19,140
I could, for example, type yo, what is 
up, dude. 

183
00:13:19,140 --> 00:13:23,40
Now that would suggest I have not read 
the protocol specification for the HTTP 

184
00:13:23,40 --> 00:13:28,270
protocol, so I do not know that I'm 
supposed to type the word Get here. 

185
00:13:28,270 --> 00:13:36,340
I'm going to type yo, what is up Dude. 
And it goes, you are not from my country. 

186
00:13:36,340 --> 00:13:39,350
You are not from my planet. 
I do not know what you said. 

187
00:13:39,350 --> 00:13:43,254
Of course that, the way web servers are 
saying this, is they're saying bad 

188
00:13:43,254 --> 00:13:46,383
request. 
Your browser sent a request that this 

189
00:13:46,383 --> 00:13:50,15
server could not understand. 
It is, the request header is missing a 

190
00:13:50,15 --> 00:13:53,735
colon separator. 
You do not comply, go away. 

191
00:13:53,735 --> 00:13:58,630
But we did talk. 
It just told us that whatever we were 

192
00:13:58,630 --> 00:14:03,334
saying is gibberish to it. 
And that's okay, because we have read the 

193
00:14:03,334 --> 00:14:08,210
document, and so we can do it. 
So let's do it. 

194
00:14:08,210 --> 00:14:11,726
So now I'm going to do is telnet to 
dr-chuck.com on port 80. 

195
00:14:11,726 --> 00:14:16,325
Go to dr-chuck, hook onto port 80, so we 
can talk to the web server, and now I am 

196
00:14:16,325 --> 00:14:21,202
going to behave. 
I read the specification. 

197
00:14:21,202 --> 00:14:28,799
I'm going to type G-E-T, get, space, one 
space, http://www.dr-chuck.com/page1.htm, 

198
00:14:28,799 --> 00:14:35,433
HTTP, space 1, dot, I think there's a 
slash there, whoops, oh no, no, no, get 

199
00:14:35,433 --> 00:14:41,650
it right, get it right. 
Slash 1 dot 0. 

200
00:14:41,650 --> 00:14:46,80
I think I got that right. 
So that is what I'm supposed to type if I 

201
00:14:46,80 --> 00:14:50,770
am a real browser. 
Now I have to actually type another new 

202
00:14:50,770 --> 00:14:58,320
line, so I'll type another new line, and 
now whoa, oh, I gave it the wrong page. 

203
00:14:58,320 --> 00:15:01,770
Look, look, look, look, look. 
I wanted to do, I told it to get 

204
00:15:01,770 --> 00:15:05,140
page.htm. 
So let's do it again, do it again. 

205
00:15:05,140 --> 00:15:08,650
I'm not very good at this, my browser is 
much better at it. 

206
00:15:08,650 --> 00:15:19,300
So I type get 
http://www.dr-chuck.com/page1.htm, space, 

207
00:15:19,300 --> 00:15:24,748
HTTP/1.0. 
I believe that's it. 

208
00:15:24,748 --> 00:15:32,410
Let's hope I got it right this time. 
And then another enter, and then another 

209
00:15:32,410 --> 00:15:32,700
enter. 
Yay, I got it. 

210
00:15:32,700 --> 00:15:38,250
So this time, I'd type, you know, I'd 
type this, then I'd type this. 

211
00:15:38,250 --> 00:15:42,936
Now it gave me some header information, 
it's saying things like 200 okay means I 

212
00:15:42,936 --> 00:15:48,660
like you what the time is, when this file 
was last modified. 

213
00:15:48,660 --> 00:15:52,880
It's an HTML file and it actually shows 
me the HTML text. 

214
00:15:52,880 --> 00:16:00,126
And so we have just hacked, a web server. 
You can do this to like facebook.com, and 

215
00:16:00,126 --> 00:16:02,694
do a Get. 
If you get the right thing, it will give 

216
00:16:02,694 --> 00:16:05,249
you stuff. 
You can go to various sites, you can fake 

217
00:16:05,249 --> 00:16:07,622
browsers. 
Now, you're only going to get so far, 

218
00:16:07,622 --> 00:16:10,672
because at some point, these servers know 
that you're not a browser, because a 

219
00:16:10,672 --> 00:16:15,80
browser actually sends a little more 
stuff than what we just sent. 

220
00:16:15,80 --> 00:16:17,190
But, you get the picture. 
Okay. 

221
00:16:17,190 --> 00:16:22,41
It's a protocol where we have rules, and 
if we type the right thing, if we type 

222
00:16:22,41 --> 00:16:26,584
the right thing, we know what the 
specification tells us to type, we are 

223
00:16:26,584 --> 00:16:32,682
rewarded, with the information on that 
server. 

224
00:16:32,682 --> 00:16:37,128
If we comply with the server's request, 
we can talk to it. 

225
00:16:37,128 --> 00:16:40,264
If we know how to talk, if we know what 
port to talk to, and we know what 

226
00:16:40,264 --> 00:16:43,624
protocol to talk to that port we can 
write a client that meets the needs of 

227
00:16:43,624 --> 00:16:51,376
that server and extract the data. 
So this is, I like, I like command lines, 

228
00:16:51,376 --> 00:16:56,50
I like sort of old school user 
interfaces, and this is a scene from one 

229
00:16:56,50 --> 00:17:01,520
of the Matrix movies, that you may 
recall. 

230
00:17:01,520 --> 00:17:04,280
I can't put it in here because of 
copyright re, requirements. 

231
00:17:04,280 --> 00:17:07,118
I might have a URL, or maybe students 
will come up with a URL. 

232
00:17:07,118 --> 00:17:09,590
You can probably search for the Trinity 
hacking scene. 

233
00:17:09,590 --> 00:17:12,324
People put it up and then it gets taken 
down and someone else puts it up. 

234
00:17:12,324 --> 00:17:15,540
So let me tell you a little story about 
this scene. 

235
00:17:15,540 --> 00:17:19,252
This scene was actually written by a 
former student of mine, who worked on all 

236
00:17:19,252 --> 00:17:22,960
three Matrix movies doing IT work on the 
movies. 

237
00:17:22,960 --> 00:17:27,316
And they were in Australia shooting the, 
the, the three, the second set of three 

238
00:17:27,316 --> 00:17:31,954
movies, and he saw this scene. 
And the scene was supposed to use a 

239
00:17:31,954 --> 00:17:35,666
Minority Report style way for her to hack 
into the, the power grid, and shut it 

240
00:17:35,666 --> 00:17:39,322
down. 
And he said, that's not the way that you 

241
00:17:39,322 --> 00:17:42,50
hack into computers. 
[COUGH]. 

242
00:17:42,50 --> 00:17:46,520
All good hackers use a text based 
interfa, interface, some old thing. 

243
00:17:46,520 --> 00:17:51,272
And that's a throwback interface. 
So the Wachowski brothers told him 

244
00:17:51,272 --> 00:17:55,110
rewrite it. 
So he actually downloaded the exact 

245
00:17:55,110 --> 00:17:59,240
hacking software, its called Nmap, which 
stands for network map. 

246
00:17:59,240 --> 00:18:03,108
It is mapping the ports. 
Its, probes the ports and sees whats on 

247
00:18:03,108 --> 00:18:05,538
the ports. 
See what version of software's on each of 

248
00:18:05,538 --> 00:18:08,785
the ports. 
Figures out what the, what the weaknesses 

249
00:18:08,785 --> 00:18:13,450
of those things are, and even 
automatically exploits the weaknesses. 

250
00:18:13,450 --> 00:18:17,14
So he wrote a script that downloaded this 
thing that automatically breaks into 

251
00:18:17,14 --> 00:18:20,50
computers. 
By the way, the good guys use this and 

252
00:18:20,50 --> 00:18:23,800
the bad guys use this same thing. 
The good guys use it to test all of the 

253
00:18:23,800 --> 00:18:26,595
computers on their campus and make sure 
that they are okay, and the bad guys use 

254
00:18:26,595 --> 00:18:30,846
to break into the ones that the good guys 
aren't smart enough to fix. 

255
00:18:30,846 --> 00:18:34,70
And so [COUGH], this was kind of cool, 
and, and the people who wrote nmap were 

256
00:18:34,70 --> 00:18:37,262
really quite amazed when they saw the 
movie. 

257
00:18:37,262 --> 00:18:40,120
They even figured out what version it was 
and things like that. 

258
00:18:40,120 --> 00:18:45,480
And so it actually triggered a series of 
follow on scenes that use actual real 

259
00:18:45,480 --> 00:18:52,80
hacking software nmap hacking software. 
So, I don't know if we've got a URL for 

260
00:18:52,80 --> 00:18:56,172
this or not, whatever URL I come up with 
even the one in the n, nmap people come 

261
00:18:56,172 --> 00:19:00,16
up with, whatever it is goes away because 
of copyright, but you can find it, 

262
00:19:00,16 --> 00:19:06,816
because someone always puts it back up. 
So, okay, so, maybe you can go and maybe 

263
00:19:06,816 --> 00:19:10,226
the nmap people will know it or maybe you 
just have to search for the Trinity 

264
00:19:10,226 --> 00:19:15,414
hacking scene. 
So you can use telnet and you can hack, 

265
00:19:15,414 --> 00:19:21,353
legitimately hack a web server. 
So, [COUGH] basically the application 

266
00:19:21,353 --> 00:19:24,917
layer is a rich place, and there's lots 
of things that happen in the application 

267
00:19:24,917 --> 00:19:28,280
layer. 
We have this pipe abstraction, it's 

268
00:19:28,280 --> 00:19:31,348
kind of like a, a string with two tin 
cans, and we can shout into one end and 

269
00:19:31,348 --> 00:19:36,978
stuff comes out the other end. 
later we'll talk about adding security to 

270
00:19:36,978 --> 00:19:41,796
that, and we use these port numbers to 
allow to, multiple different servers, or 

271
00:19:41,796 --> 00:19:47,650
services on a computer that we can 
connect to. 

272
00:19:47,650 --> 00:19:51,290
[COUGH] So we kind of now reached the top 
of the architecture of the internet. 

273
00:19:51,290 --> 00:19:54,700
We've talked about ethernet, the link 
layer, the fiber and all the diverse 

274
00:19:54,700 --> 00:19:58,594
wireless, all of the wonderful things 
that happen there. 

275
00:19:58,594 --> 00:20:03,14
The internet work layer, which is this 
kind of geographical hopping thing that's 

276
00:20:03,14 --> 00:20:06,28
unreliable. 
The TCP layer that retransmits 

277
00:20:06,28 --> 00:20:10,448
automatically if necessary. 
And then the application layer, which is 

278
00:20:10,448 --> 00:20:15,245
what we do with all this networks. 
[COUGH] It's really impressive that this 

279
00:20:15,245 --> 00:20:20,171
came out of research work from the 1970s. 
And that most of the architectures that 

280
00:20:20,171 --> 00:20:24,727
were really present, most of the ideas of 
the architecture from the 70s are really 

281
00:20:24,727 --> 00:20:33,57
still present with us today. 
[COUGH] As the NSF net came out, these 

282
00:20:33,57 --> 00:20:37,345
architectures evolved a little bit, the 
last few tweaks, and there have been 

283
00:20:37,345 --> 00:20:41,365
tweaks going on ever since, but the, 
really the last few critical tweaks 

284
00:20:41,365 --> 00:20:47,921
happened in the late 1980s. 
The [COUGH] the number of web hosts or 

285
00:20:47,921 --> 00:20:52,16
the number of hosts on the internet goes 
from six in 1969, to sort of a billion in 

286
00:20:52,16 --> 00:20:56,371
2011. 
And, and it's pretty impressive that 

287
00:20:56,371 --> 00:21:00,915
roughly the same architecture that was 
designed with six computers is still 

288
00:21:00,915 --> 00:21:05,672
mostly functioning in a, in mostly the 
same patterns, all these years later with 

289
00:21:05,672 --> 00:21:11,908
bill, billions of computers. 
And so, if you start looking at the 

290
00:21:11,908 --> 00:21:16,396
network now, it almost looks like a live 
creature with veins, and nerves, and it 

291
00:21:16,396 --> 00:21:20,952
sort of almost pulses, and you see things 
like, you can search on the internet for 

292
00:21:20,952 --> 00:21:25,440
how the internet reacted to Hurricane 
Sandy, when, like, New York City was just 

293
00:21:25,440 --> 00:21:33,270
like shut off for three days. 
The internet just kind of like, routed 

294
00:21:33,270 --> 00:21:36,200
around it. 
Yeah a lot of stuff went across the 

295
00:21:36,200 --> 00:21:40,40
Atlantic ocean from New York City and 
yeah, it found different paths, and you 

296
00:21:40,40 --> 00:21:44,120
know, yeah, New York was down, but the 
rest of it wasn't, in many ways pretty 

297
00:21:44,120 --> 00:21:49,182
amazing. 
And, we certainly see other situations 

298
00:21:49,182 --> 00:21:52,542
where governments try to shut the 
internet down by going into the server 

299
00:21:52,542 --> 00:21:56,238
rooms, and shutting off, you know, what 
they think is the only connections, but 

300
00:21:56,238 --> 00:22:02,942
then more connections pop up. 
And so it's, it's very much a almost a 

301
00:22:02,942 --> 00:22:06,930
living thing. 
It's billions of computers, and hundreds 

302
00:22:06,930 --> 00:22:10,745
of thousands of routers. 
And, and, it's, hundreds of millions of 

303
00:22:10,745 --> 00:22:13,790
simultaneous connections going on all the 
time. 

304
00:22:13,790 --> 00:22:17,868
Including the one we're doing right now, 
probably. 

305
00:22:17,868 --> 00:22:23,97
And, it's trillions of bytes a day to 
moving across, and it's, it's, it's not 

306
00:22:23,97 --> 00:22:28,996
perfect, but it kind of works. 
You can think of it as like, the largest, 

307
00:22:28,996 --> 00:22:33,398
engi-collective, engineering thing that 
we've done together as humanity, we built 

308
00:22:33,398 --> 00:22:36,814
this. 
It's all one thing, and yet it's so many 

309
00:22:36,814 --> 00:22:39,960
different pieces. 
And we just kind of keep, gluing them 

310
00:22:39,960 --> 00:22:43,76
together, and gluing more things on more 
things. 

311
00:22:43,76 --> 00:22:46,470
And it was, it really was created almost 
like life itself. 

312
00:22:46,470 --> 00:22:49,780
It's very organic. 
It's designed to heal itself, rather than 

313
00:22:49,780 --> 00:22:52,770
be perfect. 
Because things that try to be perfect are 

314
00:22:52,770 --> 00:22:57,322
fragile, and they break too easily. 
But things that are designed to heal, can 

315
00:22:57,322 --> 00:22:59,970
heal. 
And you're never perfectly correct. 

316
00:22:59,970 --> 00:23:02,730
You're never all the way up, and you're 
never all the way down. 

317
00:23:02,730 --> 00:23:05,632
And so that's what's interesting about 
the internet. 

318
00:23:05,632 --> 00:23:09,615
Oops, went the wrong way. 
And so, we kind of come to the end of 

319
00:23:09,615 --> 00:23:13,580
this, where we started out with like 
machines, and pulleys and gears, and 

320
00:23:13,580 --> 00:23:17,805
spraying oil at [UNKNOWN], and, typing a 
few characters on a keyboard, to this 

321
00:23:17,805 --> 00:23:21,835
thing, where we, sort of just take for 
granted that we can watch basketball 

322
00:23:21,835 --> 00:23:29,877
anywhere on the planet, just with a 
couple of swipes of the, of the key. 

323
00:23:29,877 --> 00:23:34,842
And in a sense, it's just that same human 
urge to communicate at a distance. 

324
00:23:34,842 --> 00:23:40,57
And so the last thing that I'll close 
with is another video from Van Jacobsom. 

325
00:23:40,57 --> 00:23:44,446
Now, this is about a technique he calls 
Content Centric Networking. 

326
00:23:45,830 --> 00:23:49,430
And not everybody agrees with Van 
Jacobson on this. 

327
00:23:49,430 --> 00:23:53,6
You can ask people and they'll say it's a 
good idea. 

328
00:23:53,6 --> 00:23:57,296
That, I don't present this as the future, 
I present this more to get you thinking 

329
00:23:57,296 --> 00:24:02,620
that there is a future that might be 
different than the present. 

330
00:24:02,620 --> 00:24:08,500
That what I just told you, that seems, 
seems like oh, it's perfect. 

331
00:24:08,500 --> 00:24:12,850
And the, and when, and Vint Cerf in 1969, 
he figured this out. 

332
00:24:12,850 --> 00:24:16,225
And, [SOUND] , it was the perfect thing, 
right? 

333
00:24:16,225 --> 00:24:19,210
And, the answer is, it might not be. 
And we, as engineers, and we as the 

334
00:24:19,210 --> 00:24:22,510
people of the internet, we must 
understand that, in 20 years, it might be 

335
00:24:22,510 --> 00:24:26,49
all different. 
Because, 20 years ago, it was all 

336
00:24:26,49 --> 00:24:28,366
different. 
And 30 years before that, it was 

337
00:24:28,366 --> 00:24:31,290
different yet again. 
And so nothing's perfect. 

338
00:24:31,290 --> 00:24:34,995
And so we should never be complacent, and 
assume that what we have is trivial or 

339
00:24:34,995 --> 00:24:39,970
perfect, or even the right answer. 
So we should continue to question. 

340
00:24:39,970 --> 00:24:43,588
And so it's really interesting to hear, 
again, from Jan Jacobson, who sort of did 

341
00:24:43,588 --> 00:24:46,990
this great innovation in 1987 that saved 
us, and yet he thinks that these are 

342
00:24:46,990 --> 00:24:51,699
issues, and they're issues that need to 
be saved again. 

343
00:24:51,699 --> 00:24:55,838
And I think, in many ways, he's right. 
The question is not so much whether he's 

344
00:24:55,838 --> 00:24:59,590
right or wrong, the question is, what 
will the ultimate solution that we pick 

345
00:24:59,590 --> 00:25:03,574
be produced. 
So, so, take a look at Van Jacobson, and 

346
00:25:03,574 --> 00:25:07,474
what he can, what he is thinking about as 
terms of the issues in the future, that 

347
00:25:07,474 --> 00:25:13,633
we're going to need to solve, when he 
talks about content centered networking. 

