diff --git a/docs/sk-lim19f/2024-02-10.md b/docs/sk-lim19f/2024-02-10.md index bf88855..af81e87 100644 --- a/docs/sk-lim19f/2024-02-10.md +++ b/docs/sk-lim19f/2024-02-10.md @@ -1,14 +1,14 @@ -5. 라우터/L3 스위치: 3계층 장비 +# 5. 라우터/L3 스위치: 3계층 장비 - 라우터(Router)는 3계층에서 동작하는 여러 네트워크 장비의 대표격으로 경로를 지정해주는 장비 - 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 경로 정보를 이용해 패킷을 최적의 경로로 포워딩 - 5.1 라우터의 동작 방식과 역할 +## 5.1 라우터의 동작 방식과 역할 - 라우터는 다양한 경로 정보를 수집해 최적의 경로를 라우팅 테이블에 저장한 후 패킷이 라우터로 들어오면 도착지 IP 주소와 라우팅 테이블을 비교해 최선의 경로로 패킷을 내보냄 - 스위치와 반대로 라우터는 들어온 패킷의 목적지 주소가 라우팅 테이블에 없으면 패킷을 버림 - 5.1.1 경로 지정 +### 5.1.1 경로 지정 - 라우터의 가장 중요한 역할은 경로 지정 - 경로 정보를 모아 라우팅 테이블을 만들고 패킷이 라우터로 들어오면 패킷의 도착지 IP 주소를 확인해 경로를 지정하고 패킷을 포워딩 @@ -22,7 +22,7 @@ - 라우터끼리 서로 경로 정보를 자동으로 교환하는 방법 - 경로 정보를 확인하고 포워딩하는 역할 - 5.1.2 브로드캐스트 컨트롤(Broadcast Control) +### 5.1.2 브로드캐스트 컨트롤(Broadcast Control) - 라우터는 패킷을 원격지로 보내는 것을 목표로 개발되어 3계층에서 동작하고 분명한 도착지 정보가 있을 때만 통신을 허락 - 쓸모없는 통신이 네트워크를 차지하는 것을 최대한 막으려고 노력 @@ -31,7 +31,7 @@ - 라우터의 이 기능을 이용해 브로드캐스트가 다른 네트워크로 전파되는 것을 막을 수 있음 - 이 기능을 "브로드캐스트 컨트롤/멀티캐스트 컨트롤"이라고 함 - 5.1.3 프로토콜 변환 +### 5.1.3 프로토콜 변환 - 라우터의 또 다른 역할은 서로 다른 프로토콜로 구성된 네트워크를 연결하는 것 - LAN 기술이 WAN 기술로 변환되어야만 인터넷과 같이 원격지 네트워크와의 통신이 가능했고 이 역할을 라우터가 담당 @@ -39,7 +39,7 @@ - 라우터에 패킷이 들어오면 2계층까지의 헤더 정보를 벗겨내고 3계층 주소를 확인한 후 2계층 헤더 정보를 새로 만들어 외부로 내보냄 - 그래서 라우터에 들어올 때 패킷 2계층 헤더 정보와 나갈 때 패킷의 2계층 헤더 정보가 다름 - 5.2 경로 지정 - 라우팅/스위칭 +### 5.2 경로 지정 - 라우팅/스위칭 - 라우터가 패킷을 처리할 때는 크게 두 가지 작업을 수행 - 경로 정보를 얻어 경로 정보를 정리하는 역할 @@ -47,7 +47,7 @@ - 라우터는 자신이 분명히 알고 있는 주소가 아닌 목적지를 가진 패킷이 들어오면 해당 패킷을 버리므로 패킷이 들어오기 전에 경로 정보를 충분히 수집하고 있어야 라우터가 정상적으로 동작 - 라우터는 서브넷 단위로 라우팅 정보를 습득하고 라우팅 정보를 최적화하기 위해 서머리 작업을 통해 여러 개의 서브넷 정보를 뭉쳐 전달 - 5.2.1 라우팅 동작과 라우팅 테이블 +### 5.2.1 라우팅 동작과 라우팅 테이블 - 단말부터 목적지까지의 경로를 모두 책임지는 것이 아니라 인접한 라우터까지만 경로를 지정하면 인접 라우터에서 최적의 경로를 다시 파악한 후 라우터로 패킷을 포워딩 - 네트워크를 한 단계씩 뛰어넘는다는 의미로 이 기법을 홉-바이-홉(Hop-by-Hop) 라우팅이라고 부름 diff --git a/docs/sk-lim19f/2024-02-11.JPEG b/docs/sk-lim19f/2024-02-11.JPEG new file mode 100644 index 0000000..72cc888 Binary files /dev/null and b/docs/sk-lim19f/2024-02-11.JPEG differ diff --git a/docs/sk-lim19f/2024-02-11.md b/docs/sk-lim19f/2024-02-11.md new file mode 100644 index 0000000..c7b5177 --- /dev/null +++ b/docs/sk-lim19f/2024-02-11.md @@ -0,0 +1,58 @@ +### 5.2.2 라우팅(라우터가 경로 정보를 얻는 방법) + +- 라우터가 경로 정보를 얻는 방법은 3가지로 크게 구분 + - 다이렉트 커넥티드 + - 스태틱 라우팅 + - 다이나믹 라우팅 + +#### 5.2.2.1 다이렉트 커넥티드 + +- IP 주소를 입력할 때 사용된 IP 주소와 서브넷 마스크로 해당 IP 주소가 속한 네트워크 주소 정보를 알 수 있음 +- 라우터나 PC에서는 이 정보로 해당 네트워크에 대한 라우팅 테이블을 자동으로 만듬 +- 이 경로 정보를 다이렉트 커넥티드라고 부름 + +#### 5.2.2.2 스태틱 라우팅 + +- 관리자가 목적지 네트워크와 넥스트 홉을 라우터에게 직접 지정해 경로 정보를 입력하는 것 +- 관리자가 경로를 직접 지정하므로 라우팅 정보를 매우 직관적으로 설정, 관리할 수 있음 + +#### 5.2.2.3 다이나믹 라우팅 + +- 스태틱 라우팅은 관리자가 변화가 적은 네트워크에서 네트워크를 손쉽게 관리할 수 있는 좋은 방법이지만 큰 네트워크는 스태틱 라우팅만으로는 관리가 어려움 +- 다이나믹 라우팅은 라우터끼리 자신이 알고 있는 경로 정보나 링크 상태 정보를 교환해 전체 네트워크 정보를 학습 +- 주기적으로 또는 상태 정보가 변경될 때 라우터끼리 경로 정보가 교환되므로 라우터를 연결하는 회선이나 라우터 자체에 장애가 발생하면 이 상황을 인지해 대체 경로로 패킷을 포워딩 + +### 5.2.3 스위칭(라우터가 경로를 지정하는 방법) + +- 패킷이 들어와 라우팅 테이블을 참조하고 최적의 경로를 찾아 라우터 외부로 포워딩하는 작업을 스위칭이라고 함 +- 한번 스위칭 작업을 수행한 정보는 캐시에 저장하고 뒤에 들어오는 패킷은 라우팅 테이블을 확인하는 것이 아니라 캐시를 먼저 확인 +- 단순히 목적지 IP만 캐시하는 경우와 출발지와 목적지 IP 모두 캐시하는 경우, 포트 번호 정보까지 포함해 플로를 모두 저장하는 경우로 구분 +- 넥스트 홉 L2 정보까지 캐시해 스위칭 시간을 줄이는 기법도 사용 + +### 5.2.4 라우팅 스위칭 우선순위 + +- 목적지 네트워크 정보가 동일한 서브넷을 사용하는 경우, 정보를 얻은 소스에 따라 가중치를 정함 + - 내가 갖고 있는 네트워크(다이렉트 커넥트) + - 내가 경로를 직접 지정한 네트워크(스태틱 라우팅) + - 경로를 전달받은 네트워크(다이나믹 라우팅) +- 3가지 경로 수집 방법 중 우선순위가 가장 높은 것은 라우터에 바로 연결된 네트워크 +- 다음은 관리자가 목적지 네트워크에 대한 경로를 직접 지정하는 스태틱 라우팅 +- 마지막으로 라우팅 프로토콜로부터 경로를 전달받은 네트워크 +- 패킷을 스위칭할 때는 롱기스트 프리픽스 매치 기법으로 우선수위를 정함 +- 롱기스트 프리픽스 매치는 가려는 목적지와 가장 유사한 라우팅 경로를 선택하는 알고리짐 + +## 5.3 라우팅 설정 방법 + +### 5.3.1 다이렉트 커넥티드 + +- 라우터나 PC에 IP 주소, 서브넷 마스크를 입력하면 다이렉트 커넥티드 라우팅 테이블이 생성 +- 커넥티드 라우팅 정보만 있는 경우 뿐만 아니라 외부 네트워크에 대한 라우팅 정보가 있더라도 다이렉트 커넥티드 정보를 잘못 입력하면 외부 네트워크와 통신할 수 없음 +- 외부 네트워크로 나가는 첫 번째 길목이 다이렉트 커넥트이기 때문 + +### 5.3.2 스태틱 라우팅 + +- 네트워크 정보를 쉽게 추가하고 경로를 직접 제어할 수 있는 가장 강력한 방법 + +### 5.3.3 다이나믹 라우팅 + +- 다이나믹 라우팅 프로토콜을 사용하면 관리자의 직접적인 개입 없이 라우터끼리 정보를 교환해 경로 정보를 최신으로 유지 diff --git a/docs/sk-lim19f/2024-02-12.JPEG b/docs/sk-lim19f/2024-02-12.JPEG new file mode 100644 index 0000000..589fad1 Binary files /dev/null and b/docs/sk-lim19f/2024-02-12.JPEG differ diff --git a/docs/sk-lim19f/2024-02-12.md b/docs/sk-lim19f/2024-02-12.md new file mode 100644 index 0000000..0ff399d --- /dev/null +++ b/docs/sk-lim19f/2024-02-12.md @@ -0,0 +1,76 @@ +# 6. 로드 밸런서 / 방화벽: 4계층 장비(세션 장비) + +- 2, 3계층 장비에서 고려하지 않았던 통신의 방향성이나 순서와 같은 통신 전반에 대한 관리가 필요하며 이런 정보를 세션 테이블(Session Table)이라는 공간에 담아 관리 + +## 6.1 4계층 장비의 특징 + +- 4계층 장비는 TCP와 같은 4계층 헤더에 있는 정보를 이해하고 이 정보들을 기반으로 동작 +- 기존 네트워크 장비와 다른 점을 이해해야 하는데 세션 테이블과 그 안에서 관리하는 세션 정보가 가장 중요 +- 그래서 4계층 이상에서 동작하는 로드 밸런서, 방화벽과 같은 장비를 '세션 장비'라고 부름 +- 세션 테이블 + - 세션 장비는 세션 테이블을 기반으로 운영 + - 세션 정보를 저장, 확인하는 작업 전반에 대한 이해가 필요 + - 세션 정보는 세션 테이블에 남아 있는 라이프타임이 존재 +- Symmetric(대칭)경로 요구 + - Inbound와 Outbound 경로가 일치 +- 정보 변경(로드 밸런서의 경우) + - IP 주소가 변경되며 확장된 L7 로드 밸런서(ADC)는 애플리케이션 프로토콜 정보도 변경 + +## 6.2 로드 밸런서 + +- 서버나 장비의 부하를 분산하기 위해 사용하는 장비를 흔히 로드 밸런서라고 부름 +- 트래픽을 분배해주는 기능 때문인데 4계층 이상에서 동작하면서 IP 주소나 4계층 정보, 애플리케이션 정보를 확인, 수정하는 기능이 있음 +- 가장 많이 쓰이는 분야는 웹 서버 부하 분산 +- 내부 부품을 이중화하거나 용량이 더 큰 부품을 사용하면 가격이 크게 올라가므로 작은 장비 여러대를 묶어 사용하는 방법을 선호 +- 이런 시스템 확장 방법을 스케일 아웃이라고 함 + +> 시스템 확장 방법: 스케일 업과 스케일 아웃 + +- 스케일 업은 기존 시스템에 CPU, 메모리, 디스크와 같은 내부 컴포넌트 용량을 키우거나 이것이 불가능 할 경우, 새로 더 큰 용량의 시스템을 구매해 서비스로 옮기는 방법 +- 스케일 아웃은 같은 용량의 시스템을 여러 대 배치 + +- 작은 시스템 여러대를 운영하더라도 사용자는 서버 배치와 상관없이 하나의 서비스로 보여야 함 +- 로드 밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 서비스에 사용되는 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해 요청을 보냄 +- 로드 밸런서는 동작하는 계층에 따라 4계층과 7계층으로 나누어짐 + - L4 로드 밸런싱 + - 일반적인 로드 밸런서가 동작하는 방식 + - TCP, UDP 정보(특히 포트 넘버)를 기반으로 로드 밸런싱을 수행 + - L7 로드 밸런싱 + - HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행 + - HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산할 수 있음 + - 일반적으로 이런 장비를 ADC(Application Delivery Controller)라고 부르며 프록시(Proxy) 역할을 수행 + - 스퀴드(Squid)나 Nginx에서 수행하는 리버스 프록시(Reverse Proxy)와 유사한 기능을 가지고 있음 + +> AWS에서는 NLB가 L4 로드 밸런싱, ALB가 L7 로드 밸런싱용 전용 컴포넌트 + +### 6.2.1 L4 스위치 + +- L4 스위치는 용어 그대로 4계층에서 동작하면서 로드 밸런서 기능이 있는 스위치 +- L4 스위치는 부하 분산, 성능 최적화, 리다이렉션 기능을 제공 +- L4 스위치가 동작하려면 가상 서버(Virtual Server), 가상 IP(Virtual IP), 리얼 서버(Real Server)와 리얼 IP(Real IP)를 설정해야 함 +- 가상 서버는 사용자가 바라보는 실제 서비스이고 가상 IP는 사용자가 접근해야 하는 서비스 IP 주소 +- 리얼 서버는 실제 서비스를 수행하는 서버이고 리얼 IP는 실제 서버의 IP +- L4 스위치는 가상 IP를 리얼 IP로 변경해주는 역할을 수행 + +### 6.2.2 ADC + +- ADC는 애플리케이션 계층에서 동작하는 로드 밸런서 +- 4계층에서 동작하는 L4 스위치와 달리 애플리케이션 프로토콜의 헤더와 내용을 이해하고 동작하므로 다양한 부하 분산, 정보 수정, 필터링이 가능 +- ADC는 이런 상세한 동작을 위해 프락시로 동작 +- 대부분의 ADC는 L4 스위치의 기능을 포함하고 있음 +- 4계층에서 애플리케이션 계층까지 로드 밸런싱 기능을 제공하고 페일오버(Failover), 리다이렉션(Redirection) 기능도 함께 수행 +- 이 외에도 애플리케이션 프로토콜을 이해하고 최적화하는 다양한 기능을 제공 +- 캐싱(Caching), 압축(Compression), 콘텐츠 변환 및 재작성, 인코딩 변환 등이 가능하고 애플리케이션 프로토콜 최적화 기능도 제공 +- 플러그인 형태로 보안 강화 기능을 추가로 제공해 WAF(Web Application Firewall) 기능이나 HTML, XML 검증과 변환을 수행 + +### 6.2.3 L4 스위치 vs ADC + +- L4 스위치는 4계층에서 동작하면서 TCP, UDP 정보를 기반으로 부하를 분산 +- 부하 분산 뿐만 아니라 TCP 계층에서의 최적화와 보안 기능도 함께 제공 +- TCP 레벨의 간단한 DoS(Denial of Service) 공격을 방어하거나 서버 부하를 줄이기 위해 TCP 세션 재사용과 같이 보안과 성능을 높여주는 기능도 함께 제공 +- ADC는 애플리케이션 프로토콜을 이해하고 애플리케이션 내용에 대한 분산, 리다이렉션, 최적화를 제공해 L4 스위치보다 더 다향한 기능을 사용 +- ADC는 성능 최적화를 위해 서버에서 수행하는 작업 중 부하가 많이 걸리는 작업을 별도로 수행 +- 그 중 하나가 이미지나 정적 콘텐츠 캐싱 기능 +- 웹 서버에는 컨텐츠 압축 기능이 있지만 ADC에서 이 역할을 수행해 웹 서버의 부하를 줄일 수 있음 +- ADC는 하드웨어 가속이나 소프트웨어 최적화를 통해 이런 부하가 걸리는 작업을 최적화 하는 기능이 있음 +- ADC에서는 SSL의 엔드 포인트로 동작해 클라이언트에서 ADC까지의 구간을 SSL로 처리해주고 ADC와 웹 서버 사이를 일반 HTTP를 이용해 통신