Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added more things to networking section #6

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions networking/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
- [Private IP](#private-ip)
- [Latency](#latency)
- [Throughput](#throughput)
- [DNS_(Domain_Name_System)](#DNS_(Domain_Name_System))
- [Load_Balancing](#Load_Balancing)
- [NAT_(Network_Address_Translation)](#NAT_(Network_Address_Translation))
- [CDN_(Content_Delivery_Network](#CDN_(Content_Delivery_Network))
- [Questions](#questions)

## What is Networking?
Expand Down Expand Up @@ -35,6 +39,68 @@ The time it takes to perform a certain task/action

The number of tasks/actions per unit of time


### DNS (Domain Name System)

Definition:
DNS translates human-readable domain names (e.g., www.example.com) into IP addresses (e.g., 192.0.2.1). This system enables users to access resources on the internet using easy-to-remember names rather than numerical IP addresses.

From a System Design Perspective:

DNS helps in load balancing by directing traffic to multiple servers.

DNS caching can reduce latency but may also lead to stale records.

Strategies like TTL (Time-To-Live) optimization are crucial for DNS performance.



### Load Balancing

Definition:
Load balancing is the process of distributing network traffic across multiple servers to ensure availability, scalability, and fault tolerance.

Key Considerations in System Design:

Types: Hardware load balancers, software load balancers (e.g., Nginx, HAProxy), and cloud-based solutions (e.g., AWS ELB).

Algorithms: Round Robin, Least Connections, IP Hashing, etc.

Load balancers often use public IPs for external communication and private IPs for internal communication.



### NAT (Network Address Translation)

Definition:
NAT allows multiple devices on a private network to share a single public IP address for internet access. It modifies the source IP of outgoing packets and the destination IP of incoming packets.

Use Cases in System Design:

Conserves public IP addresses.

Provides a layer of security by hiding internal network details from external users.

Facilitates communication between private and public networks.



### CDN (Content Delivery Network)

Definition:
A CDN is a network of distributed servers that deliver web content and other data to users based on their geographic location.

System Design Benefits:

Reduces latency by serving content from the nearest server.

Decreases load on the origin server.

Improves fault tolerance and scalability.


---

## Questions

<details>
Expand Down