adding base for lec4 networking edition
This commit is contained in:
parent
ed848f7b2f
commit
ca0797ad2d
86
cst337/lec/lec4.md
Normal file
86
cst337/lec/lec4.md
Normal file
@ -0,0 +1,86 @@
|
||||
# lec4
|
||||
|
||||
Get a basic conceptual understanding of the application layer on the network stack.
|
||||
|
||||
## Application Layer Intro
|
||||
|
||||
Things we don't care about in this layer:
|
||||
* Routing
|
||||
* Network buffer(queue) overflows
|
||||
|
||||
These things should be handled by the network layers beneath this one.
|
||||
|
||||
### What the App-layer defines
|
||||
|
||||
* types of messages
|
||||
|
||||
Requests and responses.
|
||||
|
||||
* Message syntax
|
||||
|
||||
* Message Semantics
|
||||
|
||||
* Open protocols
|
||||
|
||||
* Rules
|
||||
|
||||
## Client Server Architecture
|
||||
|
||||
> Server
|
||||
|
||||
Hoster of content, usually with a static ip address
|
||||
|
||||
> Client
|
||||
|
||||
Requesters of content, ip addresses here aren't necessarily dynamic however if you host a server of some kind, __never__ assume a client has a consistent ip.
|
||||
Also clean any requests from users to avoid random catastrophe.
|
||||
|
||||
## Peer to Peer
|
||||
|
||||
Here there is no concept of a host that is always on and has a static ip. Instead we have clients communicating with each other directly.
|
||||
|
||||
## Sockets
|
||||
|
||||
> processes which allows applications to send/receive data.
|
||||
|
||||
> `man socket` in the terminal on any *nix based system(_maybe not mac_)
|
||||
|
||||
Each socket will use some port for which to communicate through.
|
||||
|
||||
## TCP & UDP Protocols
|
||||
|
||||
> TCP
|
||||
|
||||
Provides flow and congestion control.
|
||||
|
||||
Drawback is that we have someover head for the safety.
|
||||
|
||||
> UDP
|
||||
|
||||
Does _not_ provide flow or congestion control.
|
||||
|
||||
Advantage is that we don't have to concern ourselve with any packet safety, like accounting for dropped packets.
|
||||
|
||||
Streaming services would be a good use case since it's more acceptable for a _milisecond_(colloquially speaking) of data to be lost since the user probably won't notice anyway.
|
||||
|
||||
* More and more networking level improvements and hardware improvements however allow us to use TCP with its overhead without worry.
|
||||
|
||||
## HTTP Protocol
|
||||
|
||||
Uses the client/server architecture assumptions.
|
||||
|
||||
Clients make `GET` requests and Servers usually send `OK` packets.
|
||||
|
||||
> KeepAlive
|
||||
|
||||
Modern(ish) concept that a connection opened with a server/client should remain open for some time; that way we don't have to reopen that connection for every single request a single user makes.
|
||||
_Yes this save us on overhead, and yes its worth it_.
|
||||
|
||||
> Stateless
|
||||
|
||||
Maintains no information about past client requests.
|
||||
Cookies add the concept of statefulness.
|
||||
|
||||
## HTTP Structures
|
||||
|
||||
Now we'll go over some of the various structures which HTTP uses.
|
Loading…
Reference in New Issue
Block a user