Ian Ring | Netsuite Inc
Average 14 wpm
Using a modified version of Morse code
It's erratic and noisy
Harry Nyquist, engineer at Bell Labs and AT&T, invented the facsimile machine, and developed improved methods for sending pulses of electricity through wire, making telegraphy and television possible.
between two machines
Suffice to say all those problems were solved in the 1920s-1930s
Connecting electronic devices to each other in a large network
About 45 years actually
And lots of people were working on it
Part of the challenge was waiting for computers to evolve into
machines complex enough to do the operations that a network requires
Transfer Control Protocol
So it's often called "TCP/IP"
it's indirect and complicated, but remarkbly reliable
Most reliable, but not the fastest
An average packet will be close to 1500 bytes
at least 64 of those bytes is IP and TCP bubblewrap
We're all used to our computers being able to do TCP/IP without thinking about it
but that wasn't always the case
How many of you remember this?
How many of you remember this?
An agreement how information will be structured and how each side will send and receive it.
Each port expects content to adhere to a protocol
Tim B-L added hyperlinks to SGML, and made some improvements to Gopher.
He called his new protocol "HTTP" and the new language "HTML", and his network of interconnected documents became the "World Wide Web".
Uses TCP/IP to transmit two messages.
TCP/IP makes sure they both get delivered.
A request tells the destination to send a response containing the requested resource.
In TCP/IP, it does not automatically follow that a request is fulfilled by a response. TCP/IP is a one-way communication. The request/response cycle is part of the HTTP protocol.
Telnet is not magic, it's literally typing in raw data to send over TCP/IP to a port.
The HTTP Protocol is so friendly...
you can type in an HTTP request manually with telnet.
$ telnet ianring.com 80 Trying 184.108.40.206... Connected to ianring.com. Escape character is '^]'. GET /hello.html HTTP/1.1 Host: www.ianring.com
HTTP/1.1 200 OK Date: Tue, 22 Sep 2015 20:39:24 GMT Server: Apache/2.2.23 (Fedora) Last-Modified: Thu, 17 Sep 2015 04:55:59 GMT ETag: "3a914-2b-51fea3b385610" Accept-Ranges: bytes Content-Length: 43 Connection: close Content-Type: text/html; charset=UTF-8 <html> <body> hello world! </body> </html>
Request content from the server
Send data to server
Because a single IP address could be hosting more than one website
This one is required by HTTP/1.1
Suggests that the client is capable of "keeping alive" a TCP connection, so the TCP/IP layer may use the same TCP connection to send multiple HTTP requests/responses
The connection timeout is still usually really short, like anywhere from 5 to 15 seconds
Two ways of saying "don't give me a cached version, get a fresh one".
There are plenty of other ones that are commonly used
And you are allowed to make up your own
This is precisely when the server created the response
Identifies the kind of server making the response
Caching has a huge impact on speed
If the content hasn't changed, the server doesn't need to send the whole response
Tells the client that this server accepts "byte ranges"
Nice to know, if you're downloading a big file.
Explains that the length of the body should be precisely this many bytes
And if it's not... something went wrong
Instructs the client to close the TCP/IP connection
But remember it's not actually two things connected
Declares what type of content this is
Every developer should read it.
...and its sequels: 7230, 7231, 7232, 7233, 7234, and 7235.