-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #25 from isu-nice/isu
[내용정리] 이수
- Loading branch information
Showing
11 changed files
with
269 additions
and
80 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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,161 @@ | ||
# 📡 네트워크 기기 | ||
|
||
통신 프로토콜 중에서 OSI(Open System Interconnection) 7계층의 각 계층 별 | ||
네트워크 기기에 대해 알아본다. | ||
|
||
상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. | ||
|
||
## [Layer 1] 물리 계층 | ||
물리 계층의 기기는 간단한 네트워크 장비라고 볼 수 있다. | ||
패킷을 관리하지 않으며 , 단순히 수신한 패킷을 복사해서 다른 포트로 전송하는 역할을 한다. | ||
패킷이 반복적으로 복제되어 패킷 충돌이 증가할 수 있고, 이는 네트워크 스위칭의 성능을 제한하는 원인이 될 수 있다. | ||
|
||
### 📍 NIC (Network Interface Card) | ||
`LAN 카드` 라고도 하며, 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용된다. | ||
|
||
<img src="images/lan_card.jpg" width="350" height="300"> | ||
|
||
네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드이다. | ||
|
||
각 LAN에는 고유 식별번호인 MAC주소가 있다. | ||
|
||
### 📍 리피터 (Repeater) | ||
약해진 신호 정보를 증폭하여 다른 쪽으로 전달하는 장치로, 패킷을 더 멀리 보낼 수 있도록 하는 장비이다. | ||
광케이블이 보급됨에 따라 현재는 잘 쓰이지 않는다. | ||
|
||
> HDMI 리피터 | ||
<img src="images/repeater.png" width="400" height="300"> | ||
|
||
|
||
### 📍 AP (Access Point) | ||
주로 건물의 각 층과 사무실 별로 설치하여, AP에 유선 LAN을 연결하면 | ||
무선 네트워크에 연결된 기기들이 인터넷에 접속할 수 있도록 무선 신호를 발생시키는 역할을 한다. | ||
|
||
<img src="images/ap.jpg" width="400" height="300"> | ||
|
||
DHCP 서버에서 IP를 할당해줘야 하며 공유기와 라우터 등에서 IP를 가져와야 한다. | ||
NAT 기능이 없기 때문에 라우터가 필요하다는 특징이 있다. | ||
|
||
#### 💡 NAT(Network Address Translation) | ||
사설 IP 주소를 공인 IP 주소로 변환하여 외부 네트워크와 통신 가능하게 하는 기술 | ||
|
||
#### 💡 공유기(wi-fi)와의 차이점 | ||
하나의 공인 IP 주소를 여러 대의 컴퓨터가 공유한다. | ||
NAT, 허브, 스위칭 기능이 추가된 라우터라고 보면 된다. -> `Layer 3 네트워크 계층의 기기` | ||
NAT 기능이 있어서 사설 IP 를 각 연결된 디바이스들에게 할당할 수 있다. | ||
|
||
### 📍 허브 (Hub) | ||
|
||
<img src="images/hub.jpg" width="300" height="300"> | ||
|
||
저렴한 비용으로 여러 대의 컴퓨터를 연결하는 장치이다. | ||
IP 프로토콜을 사용하지 않고 오직 비트 단위의 전기 신호를 증폭하는 기능한다. | ||
이러한 방식은 데이터를 전송할 때 연결되어있는 모든 포트에 데이터가 전송된다는 단점이 있다. | ||
|
||
|
||
## [Layer 2] 데이터 링크 계층 | ||
Layer 1에서는 패킷을 단순히 복제하여 전달했기 때문에 데이터 충돌이 발생할 수 있다는 단점이 있었다. | ||
이러한 문제를 보완하기 위해 `스위치`가 탄생했다. | ||
|
||
스위치는 여러 장비를 연결하고 데이터 통신을 중재하며, 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비를 말한다. | ||
|
||
### 📍 L2 스위치 | ||
연결된 장치로부터 패킷이 왔을 때, 패킷을 전송하는 역할을 한다. | ||
IP 주소를 이해하지 못하므로 IP 주소 기반 라우팅은 불가능하고, | ||
단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다. | ||
목적지가 MAC 주소 테이블에 없다면 전체 포트에 전달하는 기능이나, | ||
MAC 주소 테이블의 주소를 일정 시간 이후 삭제하는 기능도 있다. | ||
|
||
### 📍 브리지 (Bridge) | ||
소규모에서 두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 연결하는 통신망 연결 장치이다. | ||
|
||
<img src="images/bridge.png" width="400" height="300"> | ||
|
||
장치에서 받아온 MAC 주소를 저장하고 MAC 주소 테이블로 관리하며, | ||
이 MAC 정보를 이용해서 포트를 스위칭 한다. | ||
|
||
브리지는 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 사용된다. | ||
|
||
|
||
## [Layer 3] 네트워크 계층 | ||
### 📍 라우터 (Router) 🟰 L3 스위치 | ||
L3 스위치는 L2 스위치의 기능에 더해서 라우터의 기능을 갖춘 장비이다. | ||
(L3 스위치를 라우터라고 해도 무방하다) | ||
|
||
<img src="images/router.jpg" width="500" height="300"> | ||
|
||
라우터는 각각의 독립적인 네트워크들을 연결∙분할∙구분 시켜준다. | ||
또한, 각각의 네트워크에 존재하는 장치끼리 데이터를 송수신할 때, 최적의 경로를 찾고 패킷 소모를 최소화하는 특징이 있다. | ||
그리고 네트워크 총단에서 패킷을 받기 원하는 디바이스에게 패킷을 복사할 수 있기 때문에 트래픽효율성 높일 수 있다. | ||
|
||
#### 💡 라우팅 | ||
IP 프로토콜에 헤더를 붙여, 패킷의 경로를 결정하고 데이터를 전달하는 것. | ||
서로 다른 네트워크 간에 통신하려면 라우터가 필요하다. | ||
|
||
|
||
## [Layer 4] 전송 계층 | ||
### 📍 L4 스위치 | ||
|
||
<img src="images/L4_switch.png" width="400" height="200"> | ||
|
||
L4 스위치는 우선 `로드 밸런서` 역할을 한다. | ||
- NLB(Network Load Balancer) 컴포넌트로, 전송 계층을 처리하는 기기이다. | ||
|
||
외부에서 들어오는 모든 요청을 서버가 아닌 L4 스위치를 거치게 해서 | ||
서버에 적절히 나누어주는 역할을 한다. | ||
|
||
IP와 포트를 기반으로 트래픽을 분산하며, | ||
네트워크 주소 변환을 위한 기능, TCP 세션 기반의 부하 분산 기능을 한다. | ||
|
||
L4 스위치는 기업에서 가장 널리 사용하는 네트워크 장비이다. | ||
|
||
|
||
#### 💡 로드 밸런서 (Load Balancer) | ||
서버 부하 분산을 의미한다. | ||
2대 이상의 서버를 기반으로 가상 IP를 제공하고, 한 서버에 문제가 발생해도 | ||
다른 서버를 기반으로 서비스를 운용하기 때문에 안정적인 서비스르 제공할 수 있다. | ||
|
||
|
||
## [Layer 7] 애플리케이션 계층 | ||
### 📍 L7 스위치 | ||
|
||
<img src="images/L7_switch.jpg" width="450" height="300"> | ||
|
||
L4 스위치와 마찬가지로 클라이언트로부터 오는 요청을 여러 서버로 분산시키는 `로드 밸런서`다. | ||
- ALB(Application Load Balancer) 컴포넌트로, 애플리케이션 계층을 처리한다. | ||
|
||
하지만 L7 스위치는 URL, HTTP 헤더, 서버, 캐시, 쿠키 등을 기반으로 트래픽을 분산한다. | ||
|
||
외부 데이터를 걸러내는 필터링 기능과 응용 프로그램 수준의 트래픽 모니터링도 가능한 것이 특징이다. | ||
|
||
|
||
#### 💡 L4 스위치 vs L7 스위치 | ||
먼저, L4 스위치의 경우 3~4계층에 속하는 IP 주소 및 TCP/UDP Port 정보를 보고 스위칭하지만, | ||
L7 스위치의 경우 3~7계층에 속하는 IP 주소 및 TCP/UDP Port 정보, 패킷 내용까지 모두 보고 스위칭해준다. | ||
|
||
또한, L4 스위치의 경우 TCP/UDP Port를 이용하여 로드 밸런싱(트래픽 분산처리)을 하지만, | ||
L7 스위치의 경우 7계층 HTTP의 URL, FTP 쿠키 정보 및 바이러스 패턴을 분석하여 | ||
보안에 더 유리하고 정교한 로드 밸런싱이 가능하다(ex. Traffic filter, Security, VPN 등). | ||
|
||
L7 스위치는 데이터 분석을 통해 DDoS 공격을 방어하기도 하고 감염 패킷 패터링 등의 기능도 제공하기 때문에 | ||
`보안 스위치`라고 부르기도 한다. | ||
|
||
|
||
#### 💡 헬스 체크 (Health Check) | ||
전송 주기와 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보내는 것. | ||
L4, L7모두 헬스 체크를 통해 정상/비정상 서버를 판별한다. | ||
- 서버에 부하가 되지 않을 만큼 요청 횟수가 적절해야 함 | ||
- TCP, HTTP 등 다양한 방법으로 요청을 보냄 | ||
- 요청이 정상적으로 이루어졌다면 정상적인 서버로 판별 | ||
- ex) TCP 요청을 보냈는데 3-way Handshake 가 일어나지 않았다면 비정상 서버 | ||
|
||
|
||
|
||
------------------------------------------------- | ||
|
||
|
||
### References | ||
- https://www.joinc.co.kr/w/man/12/switch | ||
- https://handreamnet.tistory.com/501 | ||
- https://siahn95.tistory.com/161 |
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
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,92 @@ | ||
# 🚄 캐시와 캐시 메모리, 캐싱 | ||
자주 헷갈리는 캐시 메모리와 캐시, 캐싱이라는 용어에 대해 조금 더 자세히 알아보자. | ||
|
||
## 💥 캐시 메모리 (Cache Memory) | ||
먼저, 캐시 메모리는 흔히 [메모리의 계층구조](%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9D%98_%EA%B3%84%EC%B8%B5%EA%B5%AC%EC%A1%B0.md)에서 말하는 | ||
CPU와 주 기억장치 사이에 위치한 '특정한 종류의 캐시'를 가리키는 용어이다. | ||
|
||
캐시 메모리는 보통 SRAM을 말하고, L1, L2, L3의 세 단계로 나뉘어서 CPU가 데이터를 직접 가져오고 | ||
저장할 수 있도록 한다. | ||
|
||
## ⚡️ 캐시 (Cache) | ||
그렇다면 캐시는 무엇일까? | ||
캐시는 느린 기억장치와 빠른 기억장치 간의 속도 차이를 극복하기 위해 '중간 단계로 사용되는 메모리'를 일반적으로 일컫는 용어이다. | ||
|
||
예를 들어, 캐시 메모리와 보조 기억장치 간의 속도 차를 해결하기 위한 캐싱 계층은 '주 기억장치'가 되고, | ||
CPU '캐시'는 CPU와 메인 메모리(RAM) 사이에서 데이터를 더 빠르게 엑세스할 수 있도록 돕는다. | ||
|
||
이때 사용되는 캐시는 각각의 계층 사이에서 데이터에 대한 접근 속도를 향상시키고, 전체 시스템의 성능을 향상시키는 데에 기여하게 된다. | ||
|
||
그리고 이러한 `캐시`에 반복적인 데이터를 효율적으로 처리하기 위해 사용되는 기술이 바로 `캐싱(caching)`이다. | ||
|
||
앞으로 설명할 내용은 모두 보편적인 캐시에 해당하는 내용임을 기억하자. | ||
|
||
|
||
### 📍 캐시의 성능 | ||
- `캐시 히트` | ||
- 캐시에서 원하는 데이터를 찾은 경우, 캐시에서 바로 데이터를 읽어오는 것 | ||
|
||
- `캐시 미스` | ||
- 해당 데이터가 캐시에 없어서 다음 계층에서 데이터를 찾아오는 것 | ||
|
||
캐시 히트의 비율을 `캐시 적중률(Hit Ratio)`이라고 하며, 캐시의 성능은 주로 적중률에 비례하게 된다. | ||
|
||
### 📍 캐시의 지역성 | ||
캐시가 효율적으로 동작하려면 캐시의 적중률을 극대화 시켜야하므로, | ||
캐시에 저장할 데이터가 지역성(Locality)을 가져야 한다. | ||
여기서 지역성이란, 기억장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성이다. | ||
|
||
- 시간 지역성: 최근 사용한 데이터에 다시 접근하려는 특성 | ||
- 공간 지역성: 최근 접근한 데이터의 주소나 인접한 주소에 접근하려는 특성 | ||
|
||
### 📍 캐시 매핑 | ||
캐시가 히트되기 위해 메모리와 매핑하는 방법 | ||
- 직접 매핑 | ||
- 메모리 100개 당 캐시 10을 매핑하는 등, 순서를 일치시키는 방식 | ||
- 처리 속도는 빠르지만 충돌이 자주 발생한다. | ||
- 연관 매핑 | ||
- 순서를 일치시키지 않고 관련있는 캐시와 메모리를 매핑하는 방법 | ||
- 충돌이 적지만 모든 블록을 탐색해야 하므로 속도가 느리다. | ||
- 집합 연관 매핑 | ||
- 직접 매핑 + 연관 매핑 | ||
- 순서를 일치시킴과 동시에 블록화하여 저장하는 방법 | ||
- ex) 메모리 1 ~ 100, 캐시 1 ~ 10이 있다면 캐시 1 ~ 5에는 1 ~ 50의 데이터를 블록화하여 무작위로 저장한다. | ||
|
||
|
||
### 📍 캐시의 활용 | ||
캐시의 특성이 활용되는 것을 간략히 정리하면 다음과 같다. | ||
아래의 예시 이외에도 CPU 칩이나 분산 파일 시스템에서 캐시가 사용된다. | ||
|
||
#### 웹 브라우저의 캐시 | ||
사용자의 커스텀 정보나 인증 모듈 등의 사항을 웹 브라우저에 저장하여, | ||
추후 서버에 요청할 때 중복 요청을 방지하기 위해 쓰인다. | ||
|
||
`쿠키` | ||
- 만료기한이 있는 Key-Value 저장소 | ||
- 데이터를 4KB까지 저장할 수 있다. | ||
- same site 옵션을 strict로 설정하지 않았을 경우, 다른 도메인에서 요청했을 때 자동 전송된다. | ||
- `httponly` 옵션을 걸어, `document.cookie`로 쿠키를 볼 수 없게 하는 것이 중요하다. | ||
|
||
`로컬 스토리지` | ||
- 만료기한이 없는 Key-Value 저장소 | ||
- 데이터를 5MB까지 저장할 수 있다. | ||
- 도메인 단위로 저장/생성되며, 웹 브라우저를 닫아도 유지된다. | ||
- 클라이언트에서만 수정 가능하다. | ||
|
||
`세션 스토리지` | ||
- 만료기한이 없는 Key-Value 저장소 | ||
- 데이터를 대략 5MB까지 저장할 수 있으며, 이는 브라우저마다 다를 수 있다. | ||
- 탭 단위로 생성하며, 탭을 닫을 때 해당 데이터가 삭제된다. | ||
- 클라이언트에서만 수정 가능하다. | ||
|
||
#### DB의 캐싱 계층 | ||
메인 DB 위에 `레디스(redis)`캐시를 두어 이 계층을 캐싱 계층으로 사용하기도 한다. | ||
|
||
|
||
|
||
------------------------------------------------- | ||
|
||
|
||
### References | ||
- https://velog.io/@eddy_song/memory-hierarchy | ||
- https://chelseashin.tistory.com/43 |