2.3 네트워크 기기
2.3.1 네트워크 기기의 처리 범위
- 애플리케이션 계층: L7 스위치
- 인터넷 계층: 라우터, L3 스위치
- 데이터 링크 계층: 브리지, L2 스위치
- 물리 계층: NIP, 리피터, AP
2.3.2 애플리케이션 계층을 처리하는 기기
스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지를 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비다.
L7 스위치(=로드밸런서)는 서버의 부하를 분산하는 기기이다. 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 하며 시스템을 처리할 수 있는 트래픽 증가를 목표로 한다.
정기적으로 헬스 체크 (health check)를 하면서 장애 여부를 판단
*L4 스위치 vs L7 스위치
로드밸런서러는 L4 스위치도 있다.
L4 스위치는 전송 계층을 처리하는 기기로 스트리밍 관련 서비스에사는 사용할 수 없으며 메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로 트래픽을 분산한다.
L7 로드밸런서는 IP, 포트 외에도 URL, HTTP 헤더, 쿠기 등을 기반으로 트래픽을 분산한다.
e.g. L4 스위치: NLB 컴포넌트, L7 스위치: 클라우드 서비스, ALB 컴포넌트
*로드밸런서를 이용한 서버 이중화
로드밸런서의 대표적인 기능: 서버 이중화
2개 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적으로 서비스를 제공
2.3.3 인터넷 계층을 처리하는 기기
라우터
여러 개의 네트워크를 연결, 분할, 구분시켜주는 역할을 하며 ‘다른 네트워크에 존재하는 장치끼리 서로 데이터를 주고받을 때 패킷 소모를 최소화하고 경로를 최소화하여 최소 경로로 패킷을 포워딩’하는 라우딩을 하는 장비다.
L3 스위치
L3 스위치는 L2 스위치의 기능과 라우팅 기능을 갖춘 장비다.
라우터는 소프트웨어 기반의 라우팅과 하드웨어 기반의 라우팅을 하는 것으로 나눠지는데 하드웨어 기반의 라우팅을 담당하는 장치를 L3 스위치라고 한다.
2.3.4 데이터 링크 계층을 처리하는 기기
L2 스위치는 장치들의 MAC 주소를 MAC 주소 테이블을 통해 관리하며, 연결된 장치로부터 패킷이 왔을 때 패킷 전송을 담당한다.
*브리지
두개의 근거리 통신망(LAN)을 상호 접속할 수 있도록 하는 통신망 연결 장치
포트와 포트 사이의 다리 역할을 하며 장치에서 받아온 MAC 주소를 MAC 주소 테이블로 관리한다
브리지는 통신망 범위를 확장하고 서로 다른 LAN 등으로 이루어진 하나의 통신망을 구축할 때 쓰임
2.3.5 물리 계층을 처리하는 기기
물리 계층을 처리하는 기기로는 NIC, 리피터, AP가 있다.
*NIC
LAN 카드라고 하는 네트워크 인터페이스 카드는 2대 이상의 컴퓨터 네트워크를 구성하는 데 사용
네트워크와 빠른 속도로 데이터를 송수신할 수 있도록 컴퓨터 내에 설치하는 확장 카드
각 LAN 카드에는 고유 식별번호인 MAC 주소 존재
*리피터
들어오는 약해진 신호 정도를 증폭하여 다른 쪽에 전달하는 장치
이를 통해 패팃이 더 멀리 갈 수 있다.
현재는 광케이블이 보급됨에 따라 잘 사용하지 않는다.
*AP
패킷을 복사하는 기기
AP에 유선 LAN을 연결한 후 다른 장치에서 무선 LAN 기술을 사용하여 무선 네트워크에 연결할 수 있다.
2.4 IP 주소
2.4.1 ARP
컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 기반으로 이루어진다.
ARP (Address Resolution Protocol)란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소 사이의 다리 역할을 하는 프로토콜이다.
* 브로드캐스트
송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식
*유니캐스트
고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식
2.4.2 홉바이홉 통신
홉바이홉 통신은 IP 주소를 통해 통신하는 과정이다.
여기서 홉은 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것이다.
통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달한다
*라우팅 테이블
라우팅 테이블은 송신지에서 수신지까지 도달하기 위해 사용되며 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 뜻한다.
라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있다.
*게이트웨이
게이트웨이는 설로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능학 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 뜻한다.
게이트웨이는 서로 다른 네트워트상의 통신 프로토콜을 변환해주는 역할을 한다.
게이트웨이는 라우팅 테이블을 통해 볼 수 있으며, 라우팅 테이블은 윈도우의 명령 프롬프트에서 netstat -r 명령어를 실행하여 확인할 수 있다.
2.4.3 IP 주소 체계
IP 주소는 IPv4와 IPv6로 나뉜다.
IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며, IPv6는 64비트를 16비트 단위로 점을 찍어 표기한다.
*클래스 기반 할당 방식
IP 주소 체계는 과거를 거쳐 발전해오고 있으며 처음에는 5개의 클래스로 구분하는 크래스 기반 할당 방식 (classful network addressing)을 썼다.
앞에 있는 부분은 네트워크 주소, 그 뒤는 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.
클래스 A,B,C는 일대일 통신으로 사용되고 클래스 D는 멀티캐스트 통신, 클래스 E는 앞으로 사용할 예비용으로 쓰는 방식이다.
네트워크의 첫번째 주소는 네트워크 주소로 사용되고 가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용된다.
하지만 이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있었고 이를 해소하기 위해 DHCP와 IPv6, NAT가 나온다.
*DHCP (Dynamic Host Configuration Protocol)
DHCP는 IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다. 이 기술을 통해 네트워크 장치의 IP 주소를 수동으로 설정할 필요없이 인터넷에 접속할때 자동으로 IP 주소를 할당할 수 있다. 주로 가정용 네트워크에서 사용
*NAT
NAT (Network Address Translation)는 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주솔로 매핑하는 방법이다.
NAT를 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter 등이 있다.
NAT 장치를 통해 사설 IP를 공인 IP로 변환하거나 공인 IP를 사설 IP로 변환하는 데 쓰인다.
*공유기와 NAT
NAT를 쓰는 이유는 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. 인터넷 공유기에도 NAT 기능이 탑재되어 있기에 여러 PC를 연결하여 사용할 수 있는 것이다.
*NAT를 이용한 보안
NAT를 이용하면 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
* NAT의 단점
NAT는 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 딸라 접속 속도가 느려질 수 있다.
2.4.4 IP 주소를 이용한 위치 정보
IP 주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 이를 통해 위치 추적이 가능하다.
2.5 HTTP
2.5.1 HTTP/1.0
HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다.
서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드세이크를 계속해서 열어야 하기 때문에 RTT 증가를 불러오게 된다.
이는 서버에 부담이 많이 가고 사용자 응답 시간이 길어지게 한다. 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 했다.
2.5.2 HTTP/1.1
매번 TCP 연결을 하는 것이 아니라 한번 TCP 초기활를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀌었다.
한번 TCP 3-웨이 핸드세이크가 발생하면 그 다음부터 발생하지 않는 것을 볼 수 있다. 하지만 문서 안에 포함된 다수의 리소스를 처리하려면 요청할 리소스 개수에 비례해서 대기 시간이 길어지는 단점이 있다.
또한, HTTP/1.1의 헤더에는 많은 메타데이터가 들어있고 압축이 되지 않아 무거웠다.
*HOL Blocking
HOL Blocking (Head Of Line Blocking)은 네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상을 말한다.
2.5.3 HTTP/2
HTTP/2는 SPDY 프로토콜에서 파생된 HTTP/1보다 지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프토콜이다.
*멀티플렉싱
멀티플렉싱이란, 여러 개의 스트림을 사용하여 송수신한다는 것이다. 이를 통해 특정 스트림의 패킷이 손실되었다고 하더라도 해당 스트림에만 영향을 미치고 나머지 스트림은 멀쩡하게 동작할 수 있다.
멀티플렉싱을 통해 단일 연결을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다. 이렇게 되면 HOL Blocking을 해결할 수 있다.
*헤더 압축
HTTP/2에서는 헤더 압축을 써서 문제를 해결하는데, 허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가진다.
허프망 코딩이란, 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 전체 데이터의 표현에 필요한 비트양을 줄이는 원리다.
2.5.4 HTTPS
HTTP/2는 HTTPS 위에서 작동한다.
HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다. 이를 통해 통신을 암호화한다.
*SSL/TLS
SSL (Secure Socket Layer)/TLS (Transport Layer Security Protocol)은 전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다.
그림처럼 SSL/TLS를 통해 공격자가 서버인 척 하며 사용자 정보를 가로채는 네트워크상의 인터셉터를 방지할 수 있다.
SSL/TLS는 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다.
* 보안 세션
보안이 시작되고 끝나는 동안 유지되는 세션
SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유
* 인증 메커니즘
CA에서 발급한 인증서를 기반으로 이루어짐.
CA에서 발급한 읹으서는 안전한 연결을 시작하는 데 있어 필요한 공개키를 클라이언트에 제공하고 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장. 인증서는 서비스 정보, 공개키, 지문, 디지털 서명 등으로 이루어져 있다.
* 암호화 알고리즘
키 교환 암호화 알고리즘으로는 대수곡선 기반의 ECDHE 또는 모듈식 기반의 DHE를 사용한다.
둘 다 디피-헬만 방식을 근간으로 만들어진다.
디피-헬만 키 교환 암호화 알고리즘
앞의 그림처럼 처음에 공개 값을 공유하고 각자의 비밀 값과 혼합한 후 혼합 값을 공유. 그 다음 각자의 비밀 값과 또 혼합. 그 이후에 공통의 암호기인 PSK가 생성됨.
이렇게 클라이언트와 서버 모두 개인키와 공개키를 생성하고, 서로에게 공개키를 보내고 공개키와 개인키를 결합하려 PSK가 생성된다면, 악의적인 공격자가 개인키 또는 공개키를 가지고도 PSK가 없기 때문에 아무것도 할 수 없다. 이를 통해 키를 암호화할 수 있는 것이다.
* 해싱 알고리즘
데이터를 추정하기 힘든 더 작고, 섞여 있는 조각으로 만드는 알고리즘
SSL/TLS는 해싱 알고리즘으로 SHA-256 알고리즘과 SHA-384 알고리즘을 쓰며, SHA-256을 더 많이 쓴다.
SHA-256
해시 함수의 결괏값이 256비트인 알고리즘. 비트 코인을 비롯한 많은 블록체인 시스템에서도 쓴다.
SHA-256 알고리즘은 해싱을 해야할 메시지에 1을 추가하는 등 전처리를 하고 전처리된 메시지를 기반으로 해시 반환한다.
* SEO에도 도움이 되는 HTTPS
SEO(Search Engine Optimization) : 검색엔진 최적화. 사용자들이 검색엔진으로 웹사이트를 검색했을 때 그 결과를 페이지 상단에 노출시켜 많은 사람들이 볼 수 있도록 최적화하는 방법.
SEO 관리를 위한 방법으로는 캐노니컬 설정, 메타 설정, 페이지 속도 개선, 사이트맵 관리 등이 있다.
* HTTPS 구축 방법
- 직접 CA에서 구매한 인증키를 기반으로 HTTPS 서비스 구축
- 서버 앞단의 HTTPS를 제공하는 로드밸런서 두기
- 서버 앞단에 HTTPS를 제공하는 CDN을 둬서 구축
2.5.5 HTTP/3
HTTP/3은 World Wide Web에서 정보를 교환하는데 사용되는 HTTP의 세번째 버전이다.
HTTP/3은 QUIC이라는 계층 위에서 돌아가며, TCP 기반이 아닌 UDP 기반으로 돌아간다.
또한, HTTP/2에서 장점이었던 멀티플렉싱을 가지고 있으며 초기 연결 설정 시 지연 시간 감소라는 장점이 있다.
* 초기 연결 설정 시 지연 시간 감소
QUIC은 TCP를 사용하지 않기 때문에 3-way 핸드셰이크 과정을 거치지 않아도 된다.
QUIC은 첫 연결 설정에 1-RTT 만 소요된다. 클라이언트가 서버에 어떤 신호를 한 번 주고, 서버도 거기에 응답하기만 하면 바로 본 통신을 시작할 수 있다.
참고로 QUIC은 순방향 오류 수정 메커니즘(FEC, Foword Error Correction)이 적용되어 있다. 이는 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식. 열악한 네트워크 환경에서도 낮은 패킷 손실률을 자랑한다.
글에서 나오는 내용은 책 '면접을 위한 CS 전공지식 노트' 에서 가져온 것을 알립니다.
'📚CS > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
[면접을 위한 CS 전공지식 노트] 5장 자료 구조 (0) | 2023.12.04 |
---|---|
[면접을 위한 CS 전공지식 노트] 4장 데이터베이스 (0) | 2023.11.25 |
[면접을 위한 CS 전공지식 노트] 3장 운영체제 (2) | 2023.11.21 |
[면접을 위한 CS 전공지식 노트] 2장 네트워크 (1) (0) | 2023.09.22 |
[면접을 위한 CS 전공지식 노트] 1장 디자인 패턴과 프로그래밍 패러다임 (0) | 2023.09.20 |