클라우드 엔지니어 면접 질문 정리 - 네트워크 편

2023. 9. 9. 00:10Career/Interview

OSI 7 Layer

서로 다른 시스템 또는 장치간의 네트워크 통신을 위한 표준 모델

1. Physical: 통신 채널을 위한 원시 비트 전송 / 케이블, 무선 신호, 광섬유 등의 물리적 매체

- Ethernet, USB, Bluetooth

2. Data Link: 네트워크상에 인접한 두 노드 간에 오류없는 데이터 전송 제공, 흐름제어, 오류감지, 오류수정을 위한 프로토콜

- ARP, VLAN

3. Network: 데이터 패킷의 경로를 설정하고 라우팅을 수행

- IP, ICMP

4. Transport: 데이터 전송을 관리, 오류 복구 및 흐름 제어

- TCP, UDP

5. Session: 통신 세션 설정, 관리, 종료 처리

- NetBIOS

6. Presentation: 데이터 변환, 암호화, 압축

- SSL/TLS, JPEG, GIF, MPEG, ASCII, ...

7. Application: 애플리케이션과 네트워크 간 인터페이스 제공

- HTTP, FTP, SMTP, POP3, DNS, DHCP, ...


대표적인 프로토콜

1. Ethernet
계층: 물리 계층 (Physical Layer) 및 데이터 링크 계층 (Data Link Layer)
설명: 네트워크 장치 간의 데이터 프레임 전송을 위한 기술로, 대부분의 LAN에서 사용됩니다.


2. ARP (Address Resolution Protocol)
계층: 데이터 링크 계층 (Data Link Layer)
설명: IP 주소를 해당 네트워크의 MAC 주소로 변환하는 프로토콜입니다.


3. VLAN (Virtual Local Area Network)
계층: 데이터 링크 계층 (Data Link Layer)
설명: 물리적 네트워크 내에서 논리적으로 분리된 네트워크 그룹을 생성하는 기술입니다.

 

4. IP (Internet Protocol)
계층: 네트워크 계층 (Network Layer)
설명: 데이터 패킷을 소스에서 목적지로 라우팅하는 프로토콜입니다.

 

5. ICMP (Internet Control Message Protocol)
계층: 네트워크 계층 (Network Layer)
설명: 네트워크 통신 중 오류 메시지나 다른 정보를 전송하는 데 사용되는 프로토콜입니다.

 

6. TCP (Transmission Control Protocol)
계층: 전송 계층 (Transport Layer)
설명: 연결 지향적이며 신뢰성 있는 데이터 전송을 제공하는 프로토콜입니다.

 

7. UDP (User Datagram Protocol)
계층: 전송 계층 (Transport Layer)
설명: 연결을 설정하지 않고 데이터를 전송하는 프로토콜로, 빠른 전송을 위해 사용됩니다.

 

8. gRPC (Remote Procedure Call)
계층: 응용 계층 (Application Layer)
설명: Google에서 개발한 RPC 프로토콜로, Protocol Buffers를 사용하여 효율적인 통신을 제공합니다.

네트워크 상의 다른 컴퓨터에서 프로시저나 함수를 호출하기 위한 프로토콜입니다.


9. gRPC vs HTTP
설명: Binary vs JSON

 

10. SSL/TLS (Secure Sockets Layer/Transport Layer Security)
계층: 표현 계층 (Presentation Layer) 및 응용 계층 (Application Layer)
설명: 네트워크 통신의 보안을 제공하는 암호화 프로토콜입니다.

 

11. HTTP (HyperText Transfer Protocol)
계층: 응용 계층 (Application Layer)
설명: 웹 브라우저와 서버 간의 문서 전송을 위한 프로토콜입니다.

 

12. FTP (File Transfer Protocol)
계층: 응용 계층 (Application Layer)
설명: 파일을 전송하기 위한 프로토콜입니다.

 

13.DNS (Domain Name System)
계층: 응용 계층 (Application Layer)
설명: 도메인 이름을 IP 주소로 변환하거나 그 반대의 작업을 수행하는 시스템입니다.

 

14. DHCP (Dynamic Host Configuration Protocol)
계층: 응용 계층 (Application Layer)
설명: 네트워크에 연결된 장치에 자동으로 IP 주소를 할당하는 프로토콜입니다.


Ipv4 vs Ipv6

8bit x 4

16bit x 8

네트워크 주소 개수의 한계를 해결하기 위해 도입됐지만, 사설 IP와 NAT가 등장하면서 Ipv4로도 가능.


정적 프로토콜 vs 동적 프로토콜

네트워크 관리자의 개입 여부에 따라서 나뉜다.

정적 프로토콜의 경우에는 정적 라우팅처럼 직접 관리자가 경로를 설정


라우팅 프로토콜 vs 라우티드 프로토콜

라우팅 프로토콜은 라우터 간에 경로 정보를 교환하고, 최적의 경로를 동적으로 학습하기 위해 사용되는 프로토콜

라우티드 프로토콜은 사용자의 데이터를 인터넷에 연결하여 전송하기 위해 사용되는 프로토콜


CIDR(Classless Inter-Domain Routing)

클래스 기반의 IP 주소 체계를 버리고 서브넷마스크를 이용한 서브네팅 기술로

IP 주소를 환경에 따라 효율적으로 사용할 수 있게 해주는 IP 주소 체계


Subnet

큰 IP 주소를 여러개의 작은 IP 주소 그룹으로 나누어 효율적으로 IP 주소를 관리하는 것을 의미


3 way handshake & 4 way handshake

3 way handshake는 TCP 연결 설정 과정에서 신뢰성 있는 연결을 위해 사용되는 매커니즘

SYN: 서버에 연결 요청(클라이언트의 초기 시퀀스 번호)

SYN(서버의 초기 시퀀스 번호) + ACK(클라이언트의 초기 시퀀스 번호 + 1)

ACK(서버의 초기 시퀀스 번호 + 1)

이 과정을 통해서 양쪽 모두 연결 준비가 되었음을 확인하고, 초기 시퀀스 번호를 동기화합니다.


Proxy

1. Forward Proxy

보안: 클라이언트와 인터넷 사이에 위치하는 프록시로 내부 서버가 직접 외부와 통신하지 않게 하는 역할을 합니다.

캐싱: 자주 접근하는 콘텐츠를 캐싱하여 리소스 사용을 줄입니다.

익명성: 실제 클라이언트의 IP 주소를 숨기고 프록시 IP 주소를 사용하여 통신합니다.

 

2. Reverse Proxy

로드밸런싱: 들어오는 요청을 여러 서버에 분산시킵니다.

SSL/TLS 종료: SSL/TLS 연결을 종료하고 내부에서느 암호화되지 않은 형태로 수행 가능

캐싱, 보안, 익명성

 

Forward Proxy는 클라이언트 측에서 작동하여 클라이언트의 요청을 대리로 처리하며, 주로 사용자의 요청을 제어하거나 수정하는 데 사용됩니다. 반면, Reverse Proxy는 서버 측에서 작동하여 서버의 응답을 대리로 처리하며, 주로 서버의 부하 분산, 보안, 성능 최적화 등의 목적으로 사용됩니다.


Load Balancer

Layer 4 (전송 계층) 
특징: 주로 TCP 및 UDP 트래픽을 기반으로 로드 밸런싱을 수행합니다. 클라이언트의 IP 주소, 대상 IP 주소, 포트 번호 등의 정보를 사용하여 트래픽을 분산시킵니다.
장점: 처리 속도가 빠르며, 오버헤드가 적습니다.
단점: 응용 프로그램의 상태나 데이터의 내용을 고려하지 않기 때문에, 더 세밀한 로드 밸런싱이 필요한 경우에는 적합하지 않을 수 있습니다.

 

Layer 4 스위치:
기능: 전송 계층의 정보 (예: 포트 번호)를 기반으로 트래픽을 전달합니다. 일반적으로 Layer 4 스위치는 고성능의 로드 밸런서로 사용되기도 합니다.
특징: 빠른 처리 속도와 효율적인 트래픽 분산이 가능합니다.


Layer 7 (응용 계층) 로드 밸런싱:
특징: HTTP/HTTPS 헤더, URL, 쿠키, SSL 세션 ID 등의 응용 계층 데이터를 기반으로 로드 밸런싱을 수행합니다.
장점: 사용자 요청의 내용을 기반으로 트래픽을 분산시킬 수 있어, 더 세밀하고 지능적인 로드 밸런싱이 가능합니다.
단점: 처리 속도가 Layer 4 로드 밸런싱에 비해 느릴 수 있으며, 오버헤드가 더 클 수 있습니다.
스위치:

 

Layer 7 스위치:
기능: 응용 계층의 정보 (예: HTTP 헤더, URL)를 기반으로 트래픽을 전달합니다. 이를 통해 특정 URL 또는 서비스 요청을 특정 서버로 라우팅하는 등의 고급 기능을 수행할 수 있습니다.
특징: 응용 프로그램의 상태나 요청의 내용을 기반으로 트래픽을 라우팅할 수 있습니다.
결론적으로, Layer 4와 Layer 7에서의 로드 밸런싱 및 스위치의 주요 차이점은 처리하는 데이터의 깊이와 그에 따른 세밀함에 있습니다. Layer 7은 더 고급 기능을 제공할 수 있지만, 처리 속도와 오버헤드 측면에서는 Layer 4가 더 효율적일 수 있습니다.


NAT(Network Address Translation)

IP 주소를 변환하는 것을 의미하고 대표적으로 공인 IP를 사설 IP 주소로 변환하여 하나의 공인 IP로도 다수의 시스템과 통신할 수 있도록 함


Bastion Host

보안을 목적으로 DMZ 영역의 특정 서비스에 대한 접근을 허용하거나 제한하기 위해

외부와 서비스 사이에 위치하여 통신을 제어합니다.


DNS 레코드 유형

A (Address) 레코드:
IPv4 주소를 도메인 이름에 매핑합니다.
예: example.com -> 192.168.1.1


AAAA (Quad-A) 레코드:
IPv6 주소를 도메인 이름에 매핑합니다.
예: example.com -> 2001:0db8:85a3:0000:0000:8a2e:0370:7334


CNAME (Canonical Name) 레코드:
한 도메인 이름을 다른 도메인 이름에 매핑합니다. 주로 별칭이나 서브도메인을 메인 도메인에 연결할 때 사용됩니다.
예: www.example.com -> example.com


MX (Mail Exchange) 레코드:
도메인의 이메일 서비스를 처리하는 서버를 지정합니다.
예: example.com mail server -> mail.example.com


NS (Name Server) 레코드:
도메인의 DNS 정보를 제공하는 네임서버를 지정합니다.
예: example.com name server -> ns1.examplehosting.com


SOA (Start of Authority) 레코드:
도메인에 대한 권한을 가진 주 네임서버와 관련된 정보를 제공합니다. 또한, 존의 다른 레코드에 대한 기본 정보와 존 전송에 사용되는 타이밍 정보를 포함합니다.


TXT (Text) 레코드:
도메인에 대한 텍스트 정보를 제공합니다. 다양한 목적으로 사용되며, 종종 인증 정보나 정책을 저장하는 데 사용됩니다.


SPF (Sender Policy Framework) 레코드
도메인에서 이메일을 보낼 수 있는 서버를 지정하는 데 사용됩니다. 이는 이메일 스푸핑을 방지하는 데 도움을 줍니다.

 

TLD(Top-Level Domain) 혹은 최상위 도메인은 DNS 이름에서 마지막 점(".")뒤에 오는 도메인 이름을 의미한다. TLD는 인터넷에서 가장 높은 수준의 도메인 이름을 나타낸다. 예를 들어 "example.com"에서 TLD는 ".com" 이다. ".org", ".co.kr", ".io", ".gov" 등이 TLD 이다.

 

DNS 구성 요소
DNS는 아래의 3가지 요소로 구성된다.

  • 도메인 네임 스페이스(Domain Name Space)
  • 네임 서버(Name Server) : 권한 있는 DNS
  • 리졸버(Resolver) : 권한 없는 DNS

VPC

Virtual Private Cloud로 클라우드 컴퓨팅 환경에서 제공되는 가상의 사설 네트워크 영역입니다.

물리적인 가용영역에 서브넷을 생성하고 IP주소를 지정하여 VPC로 묶어 사용자의 커스터마이징 된 네트워크 환경을 구성할 수 있습니다.


VPN

Virtual Private Network로 사설 네트워크 간의 통신이 공용 네트워크를 통하더라도 데이터를 암호화하여 전송하므로

안전하게 통신할 수 있게 해주는 기술입니다.

1. Site-to-Site VPN: 두 개 이상의 네트워크를 안전하게 연결하는 데 사용

2. Remote Access VPN: 개별 사용자가 사설 네트워크에 접속하는데 사용


SSL Handshake
  1. 먼저 TCP 3-Way Handshake 과정을 거친다.
  2. Client Hello: 클라이언트는 서버에 SSL/TLS 버전, 지원하는 cipher suites "ClientHello.random"이라고 부르는 랜덤값을 전송한다.
  3. Server Hello: 서버는 SSL/TLS 버전, 선택한 sipher suite, "ServerHello.random"이라고 부르는 랜덤 값, 암호화에 사용할 퍼블릭 키(public key), 디지털 서명 정보를 응답한다.
  4. Server Key Exchange: 경우에 따라 서버는 암호화 키를 설정하는데 사용할 Diffie-Hellman 공개키와 같은 추가 정보를 클라이언트에 전송한다.
  5. Certificate Request(인증서 요청): 서버가 클라이언트 인증을 요청하는 경우 클라이언트의 디지털 인증서를 요청한다.
  6. Server Hello Done: 서버가 Server Hello 프로세스가 완료되었음을 알리는 메시지를 전송한다.
  7. Client Key Exchange: 클라이언트는 shared secret key를 생성하는데 사용할 임의의 값을 생서앟고 서버의 공개키로 암호화 한다.
  8. Certificate Verification: 서버가 클라이언트의 인증서를 요청했다면 이를 서버로 전송한다. 인증서를 받은 서버는 인증서의 디지털 서명을 확인하고 신뢰할 수 있는 인증기관이 발급했는지를 확인한다.
  9. Change Cipher Spec: 클라이언트와 서버가 합으된 암호를 사용하여 암호화된 통신으로 전환할 것임을 나타내는 메시지를 보낸다.
  10. Finished : 클라이언트와 서버의 handshake 프로세스가 완료되고 암호화된 데이터를 교환할 준비가 되었음을 확인하는 메시지를 전송한다.

 

양쪽은 암호화된 통신을 위한 세션 키를 협상하게 됩니다. SSL Handshake의 주요 단계는 다음과 같습니다:

1. ClientHello:
클라이언트는 서버에 "ClientHello" 메시지를 전송합니다. 이 메시지에는 클라이언트가 지원하는 암호화 알고리즘 목록, 랜덤 데이터, 그리고 선택적으로 세션 ID가 포함됩니다.

 

2. ServerHello:
서버는 "ServerHello" 메시지로 응답합니다. 이 메시지에는 서버가 선택한 암호화 알고리즘, 랜덤 데이터, 그리고 인증서가 포함됩니다.

 

3. 인증서 검증:

클라이언트는 서버의 인증서를 검증합니다. 인증서는 신뢰할 수 있는 인증 기관(CA)에 의해 발급되며, 서버의 공개 키와 도메인 이름, 발급 기관 등의 정보를 포함하고 있습니다.

 

4. 키 교환:

클라이언트는 서버의 공개 키(인증서에 포함)를 사용하여 랜덤 데이터를 암호화하고 "ClientKeyExchange" 메시지로 전송합니다. 이 랜덤 데이터는 양쪽 모두에서 세션 키 생성에 사용됩니다.

 

5. 세션 키 생성:
클라이언트와 서버는 앞서 교환된 랜덤 데이터를 기반으로 세션 키를 독립적으로 생성합니다.

 

6. 암호화된 세션 시작:

클라이언트는 "Finished" 메시지를 서버에 전송하여 Handshake 과정이 완료되었음을 알립니다. 이 메시지는 이미 협상된 세션 키를 사용하여 암호화됩니다.


서버도 "Finished" 메시지로 응답하며, 이후의 모든 통신은 협상된 세션 키를 사용하여 암호화됩니다.
결론적으로, SSL Handshake는 클라이언트와 서버 간에 안전한 통신을 위한 암호화된 세션을 초기화하는 과정입니다. 이 과정을 통해 양쪽은 서로의 신원을 검증하고, 암호화된 통신을 위한 세션 키를 협상하게 됩니다.


CDN(Content Delivery Network)

분산된 서버 네트워크를 통해 캐싱, 지리에 따른 분산, 트래픽 부하 분산, 보안을 적용하여

사용자에게 웹 컨텐츠를 더 빠르고 안정적으로 제공합니다.