Skip to content
Open
Show file tree
Hide file tree
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
20 changes: 20 additions & 0 deletions 2주차/ddingmin/2, 3 way handshake의 차이.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# 2, 3 way handshake의 차이
- 두 방법 모두 네트워크에서 연결 설정을 하기 위한 방법이다.

### 2-way handshake
1. 클라이언트가 서버에게 패킷과 함께 연결을 요청한다.
2. 서버는 클라이언트에게 연결을 수립하고, 확인하는 패킷은 전송한다.

### 3 way handshake
1. 클라이언트는 서버에게 패킷과 함께 연결을 요청한다.
2. 서버는 클라이언트에게 연결 요청을 확인하고, 확인 패킷을 전송한다.
3. 클라이언트는 연결 확인 패킷을 확인하고, 확인 패킷을 전송한다.

### 차이점
- 2way 에서는 연결을 확인하는 과정을 ***서버 -> 클라이언트*** 에서만 이루어진다. 신뢰적인 연결을 수립하기 위해서는 다음 두 가지 조건을 만족해야 한다.
>1. 상대방에게 패킷을 전달할 수 있다.
>2. 상대방으로 부터 패킷을 전달 받을 수 있다.

- 위 과정에서 서버는 1번의 과정을 확인할 수 없다. 따라서 추가적인 전송을 위해 신뢰적인 연결 상태를 수립하는 것이다.
- 신뢰성 있는 연결을 위해서 한 번의 확인 절차를 더 거치게 되기 때문에 속도적 측면에서는 더 느리다고 할 수 있다. 또한 데이터 전송이 요청시 마다 한 번 더 이루어지기 때문에 간단한 설정만 필요로 하는 경우에는 2way handshake를 사용하기도 한다.
> 그렇다면 UDP를 사용하는게 더 나은 방법이 아닌가? 라고 생각할 수 있다. 하지만 연결 지향을 원하고, 어느정도 신뢰를 원하지만 연결 시간을 줄여야 하는 경우가 존재한다. 즉, 신속성과 연결 지향성을 모두 챙기고 싶을 경우 선택지가 될 수 있다.
24 changes: 24 additions & 0 deletions 2주차/ddingmin/DHCP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# DHCP

## DHCP란?
- Dynamic Host Configuration Protocol
- 네트워크에 연결된 디바이스에게 IP주소와 기타 통신 정보들을 연결된 장치들에게 할당해 주는 프로토콜이다.
- 가정용 네트워크에서는 라우터가 DHCP 서버의 역할을 한다.

## 동작 방식
- 내 PC가 인터넷 네트워크에 연결하기 위해서는 IP 주소가 필요하다.
1. IP 주소를 할당받기 위해 DHCP 서버에게 요청해야 하지만 어디에 존재하는지 모르기 때문에 나의 MAC 주소를 담아 브로드 캐스팅 방식으로 DHCP 서버에게 할당을 요청한다.
2. DHCP 서버는 누군가의 요청을 받고, 할당할 IP와 DHCP 서버의 IP, 사용할 수 있는 IP 시간을 전달한다.
3. 클라이언트는 전송받은 IP 주소를 사용하겠다는 요청을 다시 한 번 보낸다.
4. DHCP 서버는 할당해 주겠다는 응답 메시지와 추가적인 통신 정보들을 보내주며 IP 할당을 마친다.

## 장점
- 네트워크 할당을 각 PC 클라이언트가 담당하지 않기에 중복 관리가 쉽고, 효율적이다.
- IP 주소를 DHCP가 할당해 주기 때문에 주소 풀 관리가 쉽다.
- IP 할당 시간을 두기 때문에 사용하지 않는 주소를 정리하기 쉽다.

## 단점
- DHCP 서버에 의존하기 때문에 DHCP 서버가 다운되면 전체적으로 마비가 된다.
- 크게 확장된 네트워크에서 IP 추적이 어려울 수 있다.
- 기본적으로 인증 메커니즘이 없기 때문에 악의적으로 해커가 DHCP 서버로 위장할 수 있다.
- 마찬가지로 DHCP 서버가 보낸 정보를 해커 클라이언트가 탈취할 수 있다. (DHCP 스푸닝)
17 changes: 17 additions & 0 deletions 2주차/ddingmin/DNS Server의 계층 구조.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# DNS
- Domain name server
- 외우기 힘든 숫자로 이루어진 IP를 사람이 읽고, 기억하기 쉬운 도메인 이름을 사용하도록 도메인와 IP를 서로 변환해주고, 찾을 수 있도록 하는 전화번호부와 같은 서비스이다.

# DNS Server의 계층 구조
- DNS는 계층적 트리 구조로 이루어져 있으며, URL의 뒤에서부터 읽어 탐색하여 들어간다.
- 루트 이후 1단계는 TLD (Top Level Domain)라 부른다.
- .com, .net과 같은 일반적인 도메인을 gTLDs 라고한다.
- 그외에도 국가적 최상위 도메인의 .kr 과 같은 도메인을 ccTLDs 라고 부른다.
- 2단계는 SLD (Second Level Domain)이라고 부른다.
- .co.kr 의 .co 와 같은 부분이 해당한다.
- 3단계는 주로 도메인명이 위치한다.
- .naver , .google 등등
- 4단계는 www 이 위치하는 부분으로 호스트명이라고도 부른다.

> 위와 같은 계층 구조를 역트리 (Inverted tree) 구조라고 한다. <br>
> 계층적 구조를 바탕으로 체계적인 주소관리가 가능하며, 서버의 트래픽을 나누어 처리할 수 있기 때문에 분산 처리가 가능해진다.
16 changes: 16 additions & 0 deletions 2주차/ddingmin/DNS의 Round robin 방식.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# DNS의 Round Robin 방식
- 라운드 로빈 DNS는 별도의 소프트웨어 혹은 하드웨어 로드밸런싱 장비를 사용하지 않고 DNS만을 이용해서 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법이다.

## 원리
- 먼저 특정 사이트에는 여러개의 웹 서버가 있다고 가정한다. 따라서 각각의 웹서버는 각기 다른 공인 IP를 가지고 있고, 그 정보는 DNS서버가 알 고 있다.
1. 클라이언트가 DNS서버에게 IP를 요청한다.
2. DNS서버는 실제 사이트의 서버의 여러개의 IP를 특정 순서나 시간 단위로 번갈아가면서 하나를 선정해 클라이언트에게 전송한다.
3. 특정 시간마다 다른 IP를 제공하기 때문에 서버는 한 IP의 웹 서버에 몰리는 현상을 방지할 수 있다.

### 장점
- 로드밸런서 없이 서비스가 가능하다. 로드밸런서는 굉장히 cost가 높다!!
- 간단하다.
### 단점
- 서버의 수 만큼 공인 IP가 필요하다. 사이트 내에서 관리하지 않고 DNS에서 관리하기 때문!
- 특정 웹 서버에 장애가 발생해도 헬스 체크 기능이 없기 때문에 클라이언트를 해당 웹 서버로 보낼 위험이 있다.
- 사용자는 매번 DNS요청을 하지 않기 때문에 균등하게 분산시킬 수는 없다.
38 changes: 38 additions & 0 deletions 2주차/ddingmin/HTTP와 HTTPS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# HTTP, HTTPS
- Hypertext Transfer Protocol
- HTTP는 클라이언트와 서버 간 통신을 위한 통신 규칙으로 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고, HTTP 응답을 받게된다. 간단히 네트워크 통신을 작동하게 하는 기술이다.
- HTTPS는 HTTP의 보안 취약점을 해결하기 위해 등장한 기술로 SSL, TLS 프로토콜을 이용해서 세션 데이터를 암호화해 통신하는 방식이다. 서버와 클라이언트 사이의 모든 통신이 암호화되어 안전한 통신을 보장한다.
# TLS/SSL
- 웹에서 데이터를 가로채면 누구나 읽을 수 있는 일반 텍스트로 전송되기 때문에 개인정보 보호, 인증, 데이터의 무결성을 보장하기 위해 개발된 방법이다.
- (1995년에 Netscape가 처음으로 SSL을 개발하였으며, SSL 3.0 이후 업데이트가 중단되어 이를 업데이트 한 버전이 TLS이다. Netscape가 업데이트에 참여하지 않게 되어 소유권 변경을 위한 명칭 변경으로 이름만 다를 뿐 같다고 생각해도 된다.)

## 작동 방식
- 공개키 암호화 방식과 공개키의 느리다는 단점을 보완한 대칭킹 암호호 방식을 함께 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

### 공개키 방식
- A와 B 키가 존재하며 둘은 서로 다르다. A로 암호화하면 B로 복호화할 수 있고, 마찬가지로 B로 암호화하면 A로 복호화 할 수 있다.
- 둘 중 하나를 비공개키, 개인키라고 하며, 자신만 가지고 있고, 공개되지 않는다.
- 나머지 하나를 공개키라고 하며 타인에게 제공한다. 공개키는 유출되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전한다.

### 대칭키 방식
- 동일한 키로 암호화, 복호화가 가능하다.
- 대칭키는 매번 랜덤으로 생성되어 유출되어도 다음에 사용할 때는 다른 키가 사용되기 떄문에 안전하다.
- 공개키보다 빠르게 통신할 수 있다.

### CA
- SSL 방식을 적용하기 위해서는 신뢰성있는 제 3자인 CA가 필요하다. CA는 인증서를 발급하는 기관으로 생각하면 된다.

### 동작 과정 (서버)
1. 서버는 공개키와 개인키를 만들고, CA에 자신의 정보와 공개키를 관리해달라는 요청을 한다.
2. CA는 CA의 공개키와 개인키를 가지고 있고, 서버가 제출한 데이터를 검증하고, CA의 개인키로 서버가 제출한 정보들을 암호화해서 인증서를 만들어 제공한다.
3. 서버는 인증서를 받는다.
### 동작 과정 (클라이언트)
4. 사용자는 CA의 공개키를 언제든 발급 받을 수 있다.
5. 사용자는 사이트에 접속을 하면 서버는 자신의 인증서를 사용자에게 보낸다.
6. 사용자는 CA의 공개키로 인증서를 복호화하여 서버의 정보와 서버의 공개키를 얻는다.
7. 얻어낸 서버의 공개키로 대칭키를 암호화해서 다시 서버에게 보낸다.
8. 서버는 개인키로 복호화를 통해 대칭키를 얻고, 해당 대칭키로 통신할 수 있도록 한다.

## HTTPS의 장단점
- HTTPS는 웹사이트의 무결성을 보호해준다. 웹사이트와 사용자 브라우저 사이의 통신을 침입자가 건드리지 못하도록 한다.
- 동작 과정에서 속도가 느려진다. 보안이 중요한 사이트에서는 HTTPS, 그렇지 않은 사이트에서는 HTTP를 사용하기도 한다.
29 changes: 29 additions & 0 deletions 2주차/ddingmin/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## 2주차

## 📃면접 리스트
### 강성민 -> 김종원
1. OSI 7 계층 모델에 대해 설명해주세요.

2. IPv4와 IPv6의 주요 차이점은 무엇인가요?
- IPv4와 IPv6 간의 호환성 문제는 어떻게 해결되나요?

3. HTTP와 HTTPS의 차이점을 설명해주세요.

4. 로드 밸런서에 대해서 설명해주세요.

5. ARP에 대해 설명해주세요.

6. NAT에 대해 설명해주세요

7. www.google.com에 접속하였을 때 일어나는 일을 설명해주세요.
- mac 주소를 어떻게 알아낼 수 있을까요?

## 📕TODO 리스트

### 강성민
- [ ] HTTP와 HTTPS의 차이
- [ ] TLS / SSL
- [ ] DNS Server의 계층 구조
- [ ] DHCP
- [ ] 3way handshake의 이점은?
- [ ] DNS의 Round Robin 방식
Empty file added 2주차/ddingmin/TLS와 SSL.md
Empty file.