-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: [Network] OSI 7 Layer 기본 개념 정리 * feat: [Network] HTTP/HTTPS 기본 개념 정리 * feat: [Network] SSL/TLS 기본 개념 정리 * feat: [Network] REST API 기본 개념 정리 * feat: [Network] DNS 기본 개념 정리 * feat: [Network] LoadBalancing 기본 개념 정리
- Loading branch information
1 parent
4bf8579
commit 05ef2c3
Showing
6 changed files
with
357 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
## DNS (Domain Name System) | ||
|
||
DNS는 **호스트의 도메인 네임을 네트워크 주소로 변환**하거나 그 반대의 역할을 수행하는 시스템입니다. 사용자가 도메인 네임(예: `naver.com`)을 입력하면 아래와 같은 과정이 이루어집니다. | ||
|
||
## 동작원리 | ||
|
||
### 1. 브라우저에서 도메인 입력 | ||
|
||
- 사용자가 `www.naver.com`을 입력하면 **네임 서버(DNS 서버)**에 접속합니다. | ||
|
||
### 2. Local DNS Server에서 IP 요청 | ||
|
||
- 먼저 **PC의 Local DNS Server**에서 `www.naver.com`의 IP 주소를 요청합니다. | ||
1. **인터넷 연결** 시, 기본적으로 통신사의 DNS 서버가 등록됩니다. | ||
2. **이전에 접속한 기록이 있는 경우**: | ||
- Local DNS 서버에서 캐싱된 IP 주소를 PC에 전달하여 요청 종료. | ||
3. **접속 기록이 없는 경우**: | ||
- Local DNS 서버가 **다른 DNS 서버들과 통신**을 시작합니다. | ||
|
||
### 3. 도메인과 연결된 IP 정보 확인 | ||
|
||
1. **Root DNS Server에 요청** | ||
- `Root DNS Server`는 도메인 정보가 있는 상위 DNS 서버로 요청을 전달합니다. | ||
- 해당 도메인 정보가 없는 경우, 다음 서버로 이동하라는 응답을 보냅니다. | ||
2. **TLD DNS Server 요청** | ||
|
||
- `TLD DNS Server`는 도메인의 최상위 도메인(`.com`, `.co.kr` 등)을 관리합니다. | ||
- 예: `naver.com`의 `.com` 정보 확인. | ||
- 해당 도메인이 없다면 다른 서버를 찾아보라는 응답을 보냅니다. | ||
|
||
3. **Authoritative DNS Server 요청** | ||
- 실제 도메인과 IP 주소의 관계가 기록/저장/변경되는 서버입니다. | ||
- 예: `naver.com`의 Authoritative DNS Server에서 `www.naver.com`의 IP 주소를 확인하여 응답. | ||
|
||
### 4. 사용자 PC에 IP 전달 | ||
|
||
- PC는 전달받은 IP 주소를 사용하여 서버에 접속합니다. | ||
- 이 과정에서 **IP 주소를 캐싱**하여 다음 요청 시 빠르게 연결될 수 있도록 합니다. | ||
|
||
### 5. 브라우저에 서버 내용 출력 | ||
|
||
- 최종적으로 서버의 IP 주소를 통해 **브라우저에 요청된 페이지가 출력**됩니다. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# HTTP와 HTTPS 개요 | ||
|
||
## HTTP (HyperText Transfer Protocol) | ||
|
||
- **역할:** 클라이언트와 서버 간 통신을 위한 프로토콜. | ||
- **포트:** 80 | ||
- **작동 방식:** | ||
1. 사용자 브라우저가 웹 서버에 HTTP 요청을 전송. | ||
2. 서버는 HTTP 응답으로 응답. | ||
- **요청 및 응답 상태 코드:** | ||
- 200: 정상 처리 | ||
- 400: 잘못된 요청 | ||
- 404: 리소스를 찾을 수 없음 | ||
- 500: 서버 오류 | ||
- **HTTP 요청 유형:** | ||
- **GET:** 웹사이트의 일부 데이터를 요청. | ||
- **PUT:** 일부 데이터를 서버로 전송. | ||
|
||
## HTTPS (HyperText Transfer Protocol Secure) | ||
|
||
- **역할:** 브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결을 설정. | ||
- **포트:** 443 | ||
- **특징:** | ||
- 데이터 무결성, 인증, 기밀성을 제공. | ||
- SSL(Secure Socket Layer) 및 TLS(Transport Layer Security) 기술을 사용하여 암호화. | ||
- 독립된 인증기관(CA)으로부터 SSL/TLS 인증서를 획득하여 신뢰를 구축. | ||
|
||
## HTTP와 HTTPS 작동 방식 | ||
|
||
### HTTP 작동 방식 | ||
|
||
- **OSI 모델 계층:** Application Layer Protocol | ||
- **HTTP 요청:** | ||
- **GET:** 데이터 조회. | ||
- **PUT:** 데이터 전송. | ||
- **응답 상태 코드:** | ||
- 200: 성공 | ||
- 400: 잘못된 요청 | ||
- 404: 리소스를 찾을 수 없음 | ||
- 500: 서버 오류 | ||
|
||
### HTTPS 작동 방식 | ||
|
||
1. 사용자가 `https://URL` 형식을 통해 HTTPS 웹 사이트를 방문. | ||
2. 브라우저가 서버의 신뢰성을 요청 (SSL 인증서를 요청). | ||
3. 서버가 공개 키(P123)가 포함된 SSL 인증서를 전송. | ||
4. 브라우저가 비밀 키(S456)를 생성하고 공개 키(P123)를 사용해 암호화하여 서버로 전송. | ||
- **브라우저 비밀 키 관리:** | ||
- 브라우저의 비밀 키는 시스템 메모리에 저장되며, 세션 종료 시 폐기됨. | ||
- **공개 키 암호화:** | ||
- 공개 키는 비대칭 암호화 방식으로 작동하며, 암호화된 데이터는 해당 개인 키(K789)로만 해독 가능. | ||
5. 서버는 자신의 개인 키(K789)를 사용하여 브라우저가 보낸 데이터를 해독하고 비밀 키(S456)를 획득. | ||
6. 브라우저와 서버는 동일한 비밀 키(S456)를 사용해 안전한 데이터 송수신을 수행. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
## 로드 밸런싱 (Load Balancing) | ||
|
||
로드 밸런싱은 **클라이언트와 서버 그룹 사이에 위치하여 서버에 가해지는 트래픽을 분산**함으로써 서버의 부하를 덜어주는 역할을 합니다. | ||
|
||
## 로드 밸런싱의 종류 | ||
|
||
1. **L4 로드밸런싱** | ||
|
||
- 트래픽을 Transport 계층의 로드밸런서가 받아서 서버에 적절히 나누어 줍니다. | ||
- Network 계층이나 Transport 계층의 정보를 바탕으로 분산합니다. | ||
|
||
2. **L7 로드밸런싱** | ||
- Application 계층에서 패킷의 내용을 확인하고, 해당 내용에 따라 특정 서버로 트래픽을 분배합니다. | ||
|
||
## 로드 밸런싱 알고리즘 | ||
|
||
### Static (정적 방식) | ||
|
||
1. **라운드 로빈** | ||
|
||
- 클라이언트 요청을 여러 대의 서버에 순차적으로 분배합니다. | ||
|
||
2. **가중치 기반 라운드 로빈** | ||
|
||
- 각 서버에 가중치를 매기고, 가중치가 높은 서버에 클라이언트 요청을 먼저 배부합니다. | ||
|
||
3. **IP 해시** | ||
- 클라이언트 IP 주소를 숫자로 변환한 다음 개별 서버로 매핑합니다. | ||
- 사용자는 동일한 서버로 연결되는 것을 보장합니다. | ||
|
||
### Dynamic (동적 방식) | ||
|
||
1. **최소 연결 방법** | ||
|
||
- 활성 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송합니다. | ||
- 모든 서버가 동일한 처리 능력이라는 점을 가정합니다. | ||
|
||
2. **최소 응답 시간 방법** | ||
- 현재 연결 상태와 응답 시간을 모두 고려하여, 가장 짧은 응답 시간을 보내는 서버로 트래픽을 할당합니다. | ||
|
||
## 서버를 확장하는 방법 | ||
|
||
1. **스케일 업 (Scale Up)** | ||
|
||
- 기존 서버의 성능을 향상시킵니다. | ||
- **방법**: CPU, 메모리 업그레이드. | ||
- **장점**: 관리 편의성 및 운영 비용에 큰 변화가 없음. | ||
- **단점**: 성능 확장에 한계가 있으며, 서버 비용 증가 폭이 큼. | ||
|
||
2. **스케일 아웃 (Scale Out)** | ||
- 서버를 추가하여 시스템을 확장합니다. | ||
- 트래픽과 작업을 여러 대의 컴퓨터나 서버에 분산시켜 처리하는 방법으로, **로드 밸런싱이 필수적으로 동반**됩니다. | ||
- **장점**: 지속적인 확장이 가능하며, 서버 비용 부담이 적음. | ||
- **단점**: 관리 편의성이 떨어지고 운영 비용이 증가. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
# OSI 7계층 및 네트워크 통신 개요 | ||
|
||
## OSI 7계층 | ||
|
||
OSI(Open Systems Interconnection) 모델은 네트워크 통신 기능을 7개의 계층으로 나눈 것으로, 소프트웨어 및 하드웨어 구성 요소 전반에 걸쳐 모든 유형의 네트워크 통신을 캡슐화합니다. | ||
|
||
### 1. Physical Layer (물리 계층) | ||
|
||
- **역할:** 물리적 통신 매체와 이를 통해 데이터를 전송하는 기술을 다룸. | ||
- **주요 기능:** 디지털 및 전자 신호 전송. | ||
- **예시 기술:** | ||
- Bluetooth | ||
- NFC | ||
- Data 전송 | ||
|
||
### 2. Data Link Layer (데이터 링크 계층) | ||
|
||
- **역할:** 물리 계층을 통해 네트워크에 연결된 두 시스템 간 데이터 전송을 담당. | ||
- **주요 기능:** | ||
- 데이터 패킷을 캡슐화하여 데이터 프레임으로 변환. | ||
- 흐름 제어 및 오류 제어 수행. | ||
- **예시 기술:** | ||
- Ethernet | ||
- Wi-Fi | ||
- **하위 계층:** | ||
- Media Access Control (MAC) | ||
- Logical Link Control (LLC) | ||
|
||
### 3. Network Layer (네트워크 계층) | ||
|
||
- **역할:** 데이터 패킷의 라우팅과 전달, 논리적 주소 지정(IP 주소 관리)을 담당. | ||
- **주요 프로토콜:** | ||
- IPv4 | ||
- IPv6 | ||
|
||
### 4. Transport Layer (전송 계층) | ||
|
||
- **역할:** 데이터 패킷이 손실이나 오류 없이 올바른 순서로 도착하도록 보장. | ||
- **주요 프로토콜:** | ||
- **TCP (전송제어 프로토콜):** 연결 기반, 손실 없는 데이터 전송 (예: 파일 공유). | ||
- **UDP (사용자 데이터그램 프로토콜):** 무연결 기반, 손실이 허용되는 전송 (예: 비디오 스트리밍). | ||
|
||
### 5. Session Layer (세션 계층) | ||
|
||
- **역할:** 네트워크 상의 두 애플리케이션 간 세션 생성, 관리 및 종료. | ||
- **주요 기능:** | ||
- 애플리케이션 연결 동기화. | ||
- 충돌 방지 및 세션 관리. | ||
- **예시:** | ||
- Network File System (NFS) | ||
- Server Message Block (SMB) | ||
|
||
### 6. Presentation Layer (표현 계층) | ||
|
||
- **역할:** 데이터의 구문과 표현 방식 처리. | ||
- **예시 포맷:** | ||
- HTML | ||
- JSON | ||
- CSV | ||
|
||
### 7. Application Layer (응용 계층) | ||
|
||
- **역할:** 사용자와 네트워크 간 상호작용. | ||
- **주요 기능:** 애플리케이션 자체의 표준화된 통신 제공. | ||
- **예시 프로토콜:** | ||
- HTTP, HTTPS | ||
- POP3, SMTP (Email Client) | ||
|
||
## OSI 모델에서 통신 과정 | ||
|
||
OSI 모델은 애플리케이션이 네트워크를 통해 다른 장치의 애플리케이션과 통신할 수 있도록 설계되었습니다. 통신은 다음 과정을 따릅니다: | ||
|
||
1. **발신자 측:** | ||
|
||
- 애플리케이션 계층에서 시작하여 데이터가 하위 계층으로 전달. | ||
- 각 계층은 데이터를 전달하기 전에 고유한 헤더와 주소를 추가. | ||
|
||
2. **전송:** | ||
|
||
- 데이터가 물리적 매체를 통해 전송. | ||
|
||
3. **수신자 측:** | ||
|
||
- 데이터가 각 계층에서 관련 헤더에 따라 처리됨. | ||
- 계층을 거칠수록 데이터는 점진적으로 압축 해제. | ||
|
||
4. **결과:** | ||
- 데이터가 최종적으로 수신 측 애플리케이션에 도달. | ||
|
||
## TCP/IP 모델 | ||
|
||
OSI 모델의 현대적 대안은 TCP/IP 모델이며, 다음과 같은 계층으로 구성됩니다: | ||
|
||
1. Physical Layer (물리 계층) | ||
2. Data Link Layer (데이터 링크 계층) | ||
3. Network Layer (네트워크 계층) | ||
4. Transport Layer (전송 계층) | ||
5. Application Layer (응용 계층) | ||
|
||
TCP/IP는 OSI 모델의 복잡성을 줄이고 실용성을 강조한 모델입니다. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# URI vs URL | ||
|
||
## URI (Uniform Resource Identifier) | ||
|
||
- **정의:** 인터넷상의 리소스 "자원 자체"를 식별하는 고유한 문자열 시퀀스. | ||
- **특징:** | ||
- 조금 더 포괄적인 개념. | ||
- 리소스를 식별하기 위한 고유 문자열. | ||
- **예시:** `soongsil.ac.kr` | ||
|
||
## URL (Uniform Resource Locator) | ||
|
||
- **정의:** 네트워크 상에서 리소스의 위치를 나타내는 규약. | ||
- **특징:** | ||
- 자원 식별자와 위치를 동시에 제공. | ||
- 리소스에 어떻게 도달할 수 있는지를 포함. | ||
- **예시:** `https://soongsil.ac.kr` | ||
|
||
--- | ||
|
||
# REST (Representational State Transfer) | ||
|
||
## REST 구성 요소 | ||
|
||
1. **Resource:** 리소스를 URL로 표현. | ||
2. **Verb:** HTTP Method (GET, POST, PUT, DELETE). | ||
3. **Representations:** 리소스의 표현 방식. | ||
|
||
## REST 특징 | ||
|
||
1. **Uniform Interface:** | ||
- URL로 지정한 리소스를 조작하는 통일된 인터페이스 제공. | ||
2. **Stateless:** | ||
- 무상태성: 요청마다 상태 정보를 저장하지 않고 독립적으로 처리. | ||
3. **Cacheable:** | ||
- 응답에 캐싱 기능을 적용 가능. | ||
4. **Self-Descriptiveness:** | ||
- REST API 메시지만 보고도 쉽게 이해할 수 있음. | ||
5. **Server-Client 구조:** | ||
- 서버와 클라이언트가 명확히 분리되어 개발과 유지보수가 독립적으로 이루어짐. | ||
6. **계층형 구조:** | ||
- 보안, 로드 밸런싱, 암호화 계층 등을 추가하여 구조상의 유연성을 제공. | ||
- Proxy, Gateway 같은 네트워크 기반 중간 매체를 사용할 수 있음. | ||
|
||
## REST 디자인 가이드 | ||
|
||
1. **URI는 리소스를 표현해야 함.** | ||
- 리소스명은 **명사**로 작성 (동사 사용 지양). | ||
2. **행위는 HTTP Method로 표현.** | ||
- **CRUD 매핑:** | ||
- **GET:** Read | ||
- **POST:** Create | ||
- **PUT:** Update | ||
- **DELETE:** Delete |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# SSL/TLS 개요 | ||
|
||
## SSL/TLS의 주요 기능 | ||
|
||
- **역할:** 데이터 전송의 기밀성과 무결성을 보장. | ||
- **암호화 방식:** 공개 키 암호화 방식을 사용. | ||
|
||
## SSL/TLS의 이점 | ||
|
||
1. 개인 데이터 보호 및 고객 신뢰 강화. | ||
2. 기밀성 및 보호에 대한 업계 규정을 준수. | ||
3. SEO 개선 효과. | ||
|
||
## SSL/TLS의 주요 원칙 | ||
|
||
### 1. 암호화 | ||
|
||
- **퍼블릭 키 (Public Key):** | ||
|
||
- 웹 서버가 SSL/TLS 인증서를 통해 브라우저에 제공하는 암호화 키. | ||
- 브라우저는 이 키를 사용하여 데이터를 암호화한 후 서버로 전송. | ||
|
||
- **프라이빗 키 (Private Key):** | ||
- 웹 서버에만 존재. | ||
- 퍼블릭 키로 암호화된 데이터는 프라이빗 키로만 복호화 가능. | ||
|
||
## SSL/TLS 인증서의 구성 요소 | ||
|
||
- 도메인 이름. | ||
- 인증 기관(CA). | ||
- 인증 기관의 디지털 서명. | ||
- 발급 날짜와 만료 날짜. | ||
- 퍼블릭 키. | ||
- SSL/TLS 버전. | ||
|
||
## SSL (보안 소켓 계층) | ||
|
||
- **역할:** | ||
|
||
- 네트워크상의 2개 디바이스 또는 애플리케이션 간 보안 연결 생성. | ||
- 애플리케이션 및 브라우저에서 안전한 통신 채널 제공. | ||
|
||
- **한계:** | ||
- 오래된 기술로 취약성이 존재해 현재는 TLS로 대체됨. | ||
|
||
## SSL과 TLS의 유사점 | ||
|
||
- 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화. | ||
- 네트워크를 통해 연결된 두 당사자를 인증하여 데이터 교환의 안전성 보장. | ||
|
||
## TLS의 표준화 | ||
|
||
- **현재 표준:** TLS 인증서가 업계 표준. | ||
- **명칭 관례:** TLS 인증서를 지칭할 때 여전히 "SSL" 용어가 사용됨. |