2023년 4월 11일 95p~113p
2.3 네트워크 기기
네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 상위 계층을 처리할 수 있는 기기는 하위 계층을 처리할 수 있지만 반대는 불가하다.
애플리케이션 계층 : L7 스위치
전송 계층 : L4 스위치
인터넷 계층 : 라우터, L3 스위치
데이터 링크 계층 : L2 스위치, 브리지
물리 계층 : NIC, 리피터, AP
2.3.2 애플리케이션 계층을 처리하는 기기
- L7 스위치
스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며, 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송
L7 스위치는 로드밸런서라고도 하며 서버의 부하를 분산하는 기기다. 클라이언트로부터 오는 요청들을 뒤쪽에 여러 서버로 나누는 역할을 하며, 시스템이 처리할 수 있는 트래픽의 증가를 목표로 한다. URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산하며 바이러스, 불 필요한 외부 데이터를 걸러내는 필터링 기능, 응용 프로그램 수준의 트래픽 모니터링도 가능하다. 장애가 발생한 서버가 있다면 이를 트래픽 분산 대상에서 제외해야 하는데, 이는 정기적으로 헬스 체크를 이용하여 감시하면서 이루어진다.
헬스체크 : 정상적인 서버 또는 비정상적인 서버를 판별. 전송 주기, 재전송 횟수 등을 설정한 이후 반복적으로 서버에 요청을 보냄
로드 밸런싱(Load Balancing) : 둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것
로드 밸런서
요즘 시대에는 웹사이트에 접속하는 인원이 급격히 늘어나게 되었다. 따라서 이 사람들에 대해 모든 트래픽을 감당하기엔 한 대의 서버로는 부족하다. 대응 방안으로 하드웨어의 성능을 올리거나(Scale-up) 여러대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러 대 있으면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적이다.
이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱이다.
로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(Load)를 나누어주는 역할을 한다. 로드밸런서를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜준다. 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다.
로드밸런서의 대표적인 기능은 서버 이중화이다. 서비스를 안정적으로 운용하기 위해서는 두 대 이상의 서버는 필수적이다. 로드밸런서는 두 대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스를 제공한다.
* 로드 밸런서가 서버를 선택하는 방식
- 라운드 로빈(Round Robin) : 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합하다.
- 가중 라운드로빈 방식(Weighted Round Robin Method) : 각각의 서버마다 가중치를 매기고, 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분한다. 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식이다. 예를 들어 A라는 서버가 5라는 가중치를 갖고 B라는 서버가 2라는 가중치를 갖는다면, 로드밸런서는 라운드로빈 방식으로 A 서버에 5개 B 서버에 2개의 요청을 전달한다.
- IP 해시 방식(IP Hash Method) : 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱해(Hashing, 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것, 또는 그러한 함수) 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.
- 최소 연결 방식(Least Connection Method) : 요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 우선적으로 트래픽을 배분한다. 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식이다.
- 최소 리스폰타임(Least Response Time Method) : 서버의 현재 연결 상태와 응답시간(Response Time, 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간)을 모두 고려하여 트래픽을 배분한다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이다.
* 로드 밸런서 장애 대비
서버를 분배하는 로드 밸런서에게 문제가 생길 수 있기 때문에 로드 밸런서를 이중화하여 대비한다 (Active 상태, Passive 상태).
- 두 로드 밸런서들은 서로를 Health Check한다.
- 메인 로드 밸런서가 동작하지 않으면 가상 IP(VIP, Virtual IP)는 여분의 Load Balancer로 변경된다.
- 여분의 로드 밸런서로 운영하게 된다.
- L4 스위치
L4 스위치는 전송 계층을 처리하는 기기로 IP, 포트를 기반으로 트래픽을 분산한다.
네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산한다. IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능하다.
패킷 : 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해서 전송되는 데이터 조각
https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
2.3.3 인터넷 계층을 처리하는 기기
- 라우터
라우터는 여러 개의 네트워크를 연결, 분할, 구분시킨다. 다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때, 패킷 소모를 최소화하고 경로를 최적화하여 최소 경로로 패킷을 포워딩하는 라우팅을 하는 장비다.
- L3 스위치
L3 스위치란 L2 스위치의 기능과 라우팅 기능을 갖춘 장비다. L3 스위치를 라우터라고 해도 무방하다. 라우터는 소프트웨어 기반의 라우팅, 하드웨어 기반의 라우팅이 있는데 L3 스위치는 하드웨어 기반의 라우팅을 담당한다.
2.3.4 데이터 링크 계층을 처리하는 기기
- L2 스위치
장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당한다. IP 주소를 이해하지 못해 단순히 패킷의 MAC 주소를 읽어 스위칭하는 역할을 한다.
- 브리지
두 개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치로, 포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리한다.
2.3.5 물리 계층을 처리하는 기기
- NIC
LAN 카드라고도 하며 2대 이상의 컴퓨터 네트워크를 구성하는데 사용한다. 네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드다. 각 LAN 카드에는 MAC 주소가 있다.
- 리피터
들어오는 약해진 신호 정도를 증폭하여 다른 쪽으로 전달하는 장치다.
- AP
패킷을 복사하는 기기다. AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술을 사용하여 무선 네트워크 연결을 할 수 있다.
2.4 IP 주소
컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP(IP주소로부터 MAC주소를 구하는 다리 역할을 하는 프로토콜)를 통해 MAC 주소를 찾아 찾은 MAC 주소를 기반으로 이루어진다. ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다. 반대로 RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 한다.
어떤 장치가 ARP Request 브로드캐스트를 보내서 IP 주소가 120.70.80.3에 해당하는 MAC 주소를 찾으면, 해당 주소에 맞는 장치가 ARP Replay 유니캐스트를 통해 MAC 주소를 반환하는 과정을 통해 IP 주소가 맞는 MAC 주소를 찾게된다.
* 브로드캐스트 : 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
* 유니캐스트: 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식
2.4.2 홉바이홉 통신
IP 주소를 통해 통신하는 과정을 홉바이홉 통신이라고 하며 각 패킷이 여러 개의 라우터를 건너가는 모습을 표현한 것이다. 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 라우팅(IP주소를 찾아가는 과정)을 거쳐 패킷이 최종 목적지까지 도달하는 통신을 말한다.
송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어있는 리스트다. 게이트웨이와 모든 목적지에 대해 해당 목적지까지 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있다.
- 게이트웨이
게이트웨이는 다른 말로 '프로토콜 변환기' 라고도 하는데, 서로 다른 프로토콜을 사용하는 네트워크를 연결할 때 사용하기 때문이다. 게이트웨이는 기본적으로 라우터의 기능을 포함하고 있으며, 거기에 추가적으로 각 네트워크에서 사용되는 프로토콜이 다르면 프로토콜을 변환하는 역할까지 담당한다.
프로토콜에는 TCP/IP, AppleTalk, ATM, PPP 등 많은 종류가 있다. 프로토콜의 종류가 다양한 이유는 전송매체나 NIC의 종류가 다양하고 각각의 특성이 다르므로 매체의 특성에 맞는 프로토콜이 개발되었기 때문이다.
2.4.3 IP 주소 체계
IP는 IPv4, IPv6으로 나뉜다. IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며 123.45.67.89 같은 방식이다. IPv6은 64비트를 16비트 단위로 점을 찍어 표기하며 2001:db8::ff00:42:8239 같은 방식으로 IP 주소를 나타낸다.
- 클래스 기반 할당 방식
처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식을 썼다. 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.
A,B,C는 일대일 통신으로 사용되고 D는 멀티캐스트, E는 예비용으로 사용한다.
예를 들어 클래스 A의 범위는 0.0.0.0~125.255.255.255이다.
맨 왼쪽에 있는 비트를 구분 비트라고 하며 이를 통해 클래스간 IP가 나눠진다.
네트워크의 첫 번째 주소(12.0.0.0)는 네트워크 주소로 사용되고 가장 마지막 주소(12.255.255.255)는 브로드 캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용된다. 하지만 이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있었고 이를 해결하기 위해 DHCP, IPv6, NAT가 나왔다.
- CIDR
CIDR(Classless Inter-Domain Routing)는 클래스 없는 도메인 간 라우팅 기법으로, 쉽게 말해 클래스가 없이도 IP 주소를 할당할 수 있는 새로운 방식이다. CIDR에서는 네트워크 부분과 호스트 부분의 구분 점을 2진수의 한 자릿수, 즉 1비트 단위까지 가능케 해 호스트 주소를 더 유연하게 할당할 수 있게 하였다.
원래대로라면 이 IP 주소는 맨 앞 옥텟이 192이기 때문에 클래스 C에 해당하며, 따라서 클래스 C의 규칙에 따라 3 옥텟만큼인 192.168.10까지가 네트워크 부분, 나머지 1이 호스트 부분이라고 유추할 수 있다. 하지만 CIDR 방식이라면 클래스를 무시하고 비트 단위로 네트워크 부분과 호스트 부분을 구분하기 때문에 0001까지 또는 1010.00000001까지가 호스트 부분일 수도 있다.
이렇게 CIDR를 도입한 뒤 기존 클래스 할당 방식보다 더 잘게 IP 주소를 쪼개 사용함으로써 사용자들은 필요한 호스트 개수만큼만 사용할 수 있게 되었고 부족한 IP 주소도 더 효율적으로 활용할 수 있게 되었다.
CIDR에서는 서브넷 마스크를 사용해 네트워크 부분과 호스트 부분을 구분한다. 서브넷 마스크의 표기 방식은 IPv4 주소와 같게 32비트로 표현한다. 서브넷 마스크와 IP 주소를 2진수로 바꾸고 나란히 놓았을 때, 서브넷 마스크의 1이 연속한 자릿수를 IP 주소의 네트워크 부분, 나머지 0이 있는 자릿수를 호스트 부분으로 구분할 수 있다.
중요한 건 서브넷 마스크의 1은 연속되어 있어야 한다는 점이다. 만약 11110011 이런 식으로 1과 0이 섞여 있다면 어디까지가 네트워크 부분인지 정확히 알 수 없기 때문이다.
CIDR는 아래와 같이 IP 주소와 서브넷 마스크를 함께 적는 특별한 표기법을 사용하고 있다.
이렇게 CIDR 표기법을 이용하면 IP 주소와 서브넷 마스크를 한눈에 파악할 수 있다는 장점이 있다.
https://brunch.co.kr/@swimjiy/44
- DHCP
IP주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다. 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다. 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며, 이를 통해 대부분의 가정용 네트워크에서 IP주소를 할당한다.
- NAT
패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법이다. IPv4 주소 체계만으로는 많은 주소들을 감당하지 못하는 단점이 있는데, NAT를 사용하여 공인IP와 사설IP로 나눠서 많은 주소를 처리한다.
NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. 내부 네트워크에서 사용하는 IP주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다. 하지만 여러 명이 동시에 인터넷을 접속하면 접속하는 호스트 숫자가 많아지므로 접속 속도가 느려질 수 있다.
'CS > 면접을 위한 CS 전공노트' 카테고리의 다른 글
[네트워크] 브라우저에 URL을 입력하고 일어나는 일 (0) | 2023.04.20 |
---|---|
[네트워크] HTTP/HTTPS (0) | 2023.04.19 |
[네트워크] 네트워크의 기초/OSI 7계층 & TCP/IP 4계층 (0) | 2023.04.17 |
[디자인패턴 & 프로그래밍 패러다임] 프록시/이터레이터/노출모듈/MVC/MVP/MVVM & 선언형/함수형/객체지향/절차지향 (0) | 2023.04.08 |
[디자인 패턴] 싱글톤/팩토리/전략/옵저버 (0) | 2023.04.07 |