updating 311 stuff for now

This commit is contained in:
Medium Fries 2018-11-07 18:46:01 -08:00
parent 961a9dab6f
commit 0c2c2dd293
5 changed files with 158 additions and 0 deletions

66
cst311/lec/lec15.md Normal file
View File

@ -0,0 +1,66 @@
# lec15
## DHCP
For a client to setup a connection with a server using DHCP we must (as a clien) send out:
```
source addres: 0.0.0.68
dest: 255.255.255.255,67
yiaddr: 0.0.0.0
transaction ID: 654
```
This is broadcasted out so that nearby serer can "hear" this request and send back some pertinent information for the client's new address on the network:
```
src: somthing
dest: ff.ff.ff.ff,44
yiaddr: something else
transactioni ID: sumting
lifetime: long time
```
The client then responds using its _previous_ information because we must first acknoledge to the server that we are going to use that new information.
## From subnet to Internet
A given machine's network address must be routed through some interface(modem) to reach the rest of the internet.
This modem is the part between us and the internet which translates our local address to an address that is recognizable to the rest of the internet.
## Network address translation
3 things our NAT router must do:
1. Replace outgoing message addresses/port with NAT address/port
2. Remember all the ingoing and outgoing addresses and port.
3. Incoming datagrams must have their target address/ports changed to relevant local network address/ports.
Basically the NAT must translate things going in and out to the proper direction.
## ICMP
> Internet Control Message Protocol
## IPv6
> Initially, because 32-bits is almost not enough these days.
This is becoming increasingly true as the IoT industry grows.
> No more checksums
Because we want to reduce the processing load on
> Options
Specified in a seperate header from the top header using a flag
> ICMPv6
New stuff like _packet too big_ messages whch can be sent upstream to tell a host to reduce packet size.
The whol point of this new protocol is to primarily simplify the implementation at an atomic level, and to also reduce the strain on routers to improve quality of service.
To move towards IPv6 we can use tunneling which basically means we wrap our IPv6 datagram with an IPv4 header.

25
cst311/lec/lec16.md Normal file
View File

@ -0,0 +1,25 @@
# lec16
Now we'll look at an introduction to how routing (sort of) works, with a few constraints.
## Constraints for Routing
We know that no router can have a link to every other router in the world so we know that most data will have to hop over a few routers at least to get pretty much anywhere(welcome to heuristics).
To add onto this constraint, each router will only have knowledge of the routers directly around it.
This means we have a small, easy to update catalog of nearby routers, which hopefully small enough where searching it doesn't take too long.
Further more each router must have some kind of "_length_" concept to determine how "_far away_" nearby routers are.
This could be a ping time to send data to those nodes, or maybe a physical distance.
Whatever the case may be, we have a _length_ or _distance_ to the surrounding nodes.
In essence, these are the only constraints we have to build a routing algorithm.
We know that we have tools like Dijkstra's algorithm but the problem is that with a huge network, say the size of the whole internet we will waste countless amounts of time.
For this reason we have to come up with some kind of _good enough, nice one bro_ algorithm.
## Routing Algorithm Goals
1. Finish Fast
* graph traversal is cool and all but people have things to do. So we want to reach the end as fast as possible
2. Easy Execution
* Individual nodes might be comprised of old hardware, slow and sluggish, so give them something easy to compute

14
cst311/lec/lec17.md Normal file
View File

@ -0,0 +1,14 @@
# lec17
## Distance Vector Algorithm
Properties of this algorithm include:
* Nodes are self updating
* This means that each node updates its distance table with all of its neighbors.
The main advantage of this is that we don't need a knowledge of the whole map and we can have dynamic maps that change over time.
Compared to Dijktra's algorihtm we are able to establish a much more realistic scenario, akin to how routers actually figure out how to route packets.
We're able to to do this because we don't worry about mapping out the _entire_ network which, if you sending data across countries, would be monumental in size to map out.
This is isn't even mentioning the amount of time and effort it would take to process the shortest path cost, assuming that giant network doesn't change because someone plugged in a router.

39
cst311/lec/lec18.md Normal file
View File

@ -0,0 +1,39 @@
# lec18
## Heirarchical Routing
So far we've looked at routing from a very simple point of view.
To better model reality we'll assume a new constraint: that being the internet as a network of networks.
This means that the actual routers within each network must maintain multiple forwarding tables.
One for intra-net routing, and another for inter-net routing.
## Intra-AS Routing
### RIP
Popular because it was included with BSD/unix back in 82.
Uses simple distance vectoralgoritm for evaluating cost.
1. Maximum distance of 15 hops
2. Distance vectors exchanged every 30 seconds
### OSPF
> Open Shortest Path First
Uses a link state algorithm.
* LS pcket dissemination
* Topology map at each node
Security is built into the protocol itself.
We allow for multiple _same-cost paths_
Also uni- multi-casting
## Inter-AS Routing
### BGP
> Border Gateway Protocol
* Allows subnet to advertise its existent

14
cst311/lec/lec19.md Normal file
View File

@ -0,0 +1,14 @@
# lec19
## Broadcast Routing
We allow multiple identical streams to follow a _trunk_ structure wherein we only branch to a client when needed.
This keeps bandwidth usage down on a network's links.
## Multicast Problem
Take the concept from the previous section, where we have a tree structure spread across a network.
Our goal here would be to create some tree where all the _members_ for the data share the same tree.
_Also multicast groups get their own subnet class_.
This is to distinguish regular traffic from this multicast traffic[224.0.0.0].