# CSC 321.01, Class 05: Web technologies

Overview

• Preliminaries
• Notes and news
• Upcoming work
• Extra credit
• Questions
• A broad overview of Web and related technologies
• Three-tier architecture
• Some notes on cookies

## Preliminaries

• Fruit snax!
• Classroom? Here or 3813?
• Apologies for being behind in grading. I have a busy next few days, but I will do my best to catch up over the weekend.
• Last reminder: If you have TuTh afternoons available for the next few weeks, you should consider Megan Goering ‘08’s “Design Thinking” course. TuTh 2:00-3:50, JRC 209. starting tomorrow.
• Many of you received comments that you should be more thorough on your journal answers. Here’s an appropriate length one for part 1 of t he latest journal: DNS (Domain Name System) – The Domain Name System matches hostnames to IP addresses so that a browser user does not have to remember the IP addresses of each site they want to visit. The browser asks a DNS server where a given hostname is, and then receives an IP address that refers to the same place..
• Mentor session 6-7:30pm tomorrow.

### Upcoming work

• Hartl 1 due Thursday at 10:30pm.
• This should be less time-consuming than the Ruby exercises.
• Hartl 2 due Sunday at 10:30pm.
• This should take about the same amount of time as the first Hartl assignment.

### Good things to do (Other)

• WinC 6pm on Thursday. (Every other week.)
• Posse Plus Retreat Reflections, Community Hour next week (Tuesday, 11am, JRC 101)

### Questions

What topics did people want to hear about?
Here’s the approximate list I recorded.
• HTML: 3
• Three-tier model: 2
• Broad overview: 2
• Security: 2
• Networks and network protocols: 2
• Push vs. pull: 1
• Stateless: 1
• XML: 1
• Alternatives to Rails: Python+Django, Node.js, PHP, …: 1
• WEBrick and comparison to other servers: 1
• Horizontal scaling: 1
• MVC: 1
What’s with this “check” garbage? What does it mean in terms of my letter grades?
Check means “satisfactory”. If everything is satisfactory, you get a B.
Applies to reading journals only. “Satisfactory” on homework is an A-.
How do you timebox?
I spent N hours. This is what I achieved.
So you should probably stop at N hours minus 20 minutes to give yourself time to write something.
About three hours per Hartl assignment.

## A broad overview of Web technologies

• TCP/IP - How do you get information from computer to computer on a network of computers.
• Routing
• Breaking a larger message into smaller pieces (and rearrange)
• Providing feedback and error messages
• Etc.
• Byte order (yay endian wars)
• TCP/IP was designed so that you can layer other protocols on top of it. Dozens (if not more) for particular applications/situations/types of data. HTTP, FTP, Gopher, smtp, etc.
• Early 1990’s TBL develops WWW.
• HTTP
• HTTP
• Specifies the kinds of requests
• GET a resource
• POST a resource or request (typically interpreted as “here’s a request plus additional information”)
• UPDATE a resource (rarely used)
• DELETE a resource
• Each Web application can have its own general semantics for what to do for each request.
• Specifies the forms of responses
• Numeric code (success or failure)
• If it succeeds, type of data and content
• “Stateless”
• A stateful protocol remembers the state of the communication (e.g., where you are in a directory structure, what you’ve said recently, that you’ve authorized)
• Stateless protocols don’t remember state (except for some tricks)
• Assumption: If you call the same operations on the same values (that is, ask for the same URL), you get the same response.
• Problem: How do I refer to information? URL.
• Originally designed just for Web, but now expanded.
• Protocol: http, https, ftp, gopher, mailto, file, …
• Machine (or related info):
• User information (and authentication)
• Resource
• http://www.cs.grinnell.edu/~rebelsky/Courses/CSC321/2018S/
• “Parameters” with a question mark and more info
• Combination of “what I tell my Web browser” and “what my Web browser tells the server”
• Problem: What do data look like? HTML
• Information plus meta-information
• Surround information with “tags” like <p>...</p>
• It turns out that this isn’t as much as we’d like for many “applications” of the Web.
• State - Cookies. Browser sends information to client. Client should send it back to browser with the next request.
• Loses purity of reference of URLs
• Raises security risks
• Interactivity: We need programs to run on the page.
• Java - Embedded application that should not talk to the rest of the page.
• Flash - Embedded application that might be able to talk to the rest of the page and is written by people who don’t understand security.
• JavaScript - Embedded code that is expected to interact with the page. (Good security model? We hope.)

Technologies mentioned (or that I should have mentioned)

• TCP/IP
• HTTP