# Computer Networking


Computer networking theory

## Reference Models

### OSI Model

The OSI model presents the network stack using multiple layers. As a set of abstractions, each layer has their own standards which let it interoperate with layers above and below.

The layers are:

1. Application layer
2. Presentation layer
3. Session layer
4. Transport layer
5. Physical layer
6. Network layer
8. Physical layer

The physical layer is comprised of the literal copper, fiber, and wireless frequencies used to transport bits, 0s and 1s.
The data link layer focuses on transmitting data frames between directly connected nodes. Medium access control (MAC) and logical link control (LLC) work at this layer.
The network layer allows packets to flow between nodes which are not directly connected. Routing with IPs between networks happens at this layer.
The transport layer focuses on levels of reliability. TCP and UDP are used at this layer.
The session layer focuses on connections.
The presentation layer focuses on standardizing protocols and data representations (e.g. XML).
Finally, the application layer is what highest-level, whatever service is being provided to the user.

### TCP/IP

TCP/IP has four layers:

1. Application layer
2. Transport layer
3. Internet layer

### Hardware

• Hub - A hub connects multiple devices and will pass around data frames to every single connection. It has no logic and is equivalent to wiring all the cables together.
• Repeater - A repeater is used to boost signals. It will read the pattern (e.g. voltage representing bits) and repeat it on another wire.
• Bridge or Switch - A switch connects multiple devices and does routing at this layer using mac addresses.
• Router - Routers work at the network layer to route packets across different networks (e.g. across VLANS or LAN to WAN).

## Network Layer

### Routing

#### Distance Vector

In Distance Vector routing, or Bell-ford Algorithm, each node incrementally builds up it's own routing table to identify the next hop to reach each destination.