2.3 KiB
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.