답변에 포함해야 할 키워드
- HTTP vs HTTPS: 보안이 적용된 통신 방식
- TCP vs UDP: 신뢰성 있는 데이터 전송(TCP)과 빠른 전송(UDP)의 차이
- 로드 밸런싱: 서버 부하를 여러 대의 서버로 분산
- 웹소켓(WebSocket): 실시간 양방향 통신 프로토콜
- CORS: 다른 도메인 간의 자원 요청을 관리하는 보안 정책
- IP 주소와 DNS의 관계를 설명해주세요
- NAT이란 무엇이며, 이를 사용하는 이유를 설명해 주세요
- HTTP Keep-Alive의 역할과 성능에 미치는 영향을 설명해주세요
- TLS와 SSL의 차이점을 설명해주세요
- 서버 부하 분산 방식 중 라운드로빈 방식과 IP 해시 방식의 차이점을 설명해주세요
IP주소와 DNS
IP 주소와 DNS의 관계를 설명해주세요
IP 주소 (Internet Protocol Address)
- 네트워크 상에서 장치들을 식별하기 위한 고유한 숫자 주소
- 네트워크에 연결된 각 장치를 정확하게 식별하고 통신할 수 있음
- IPv4, IPv6 (IPv6는 보다 많은 고유 주소를 제공하기 위해 도입)
DNS (Domain Name System)
- 사용자가 웹사이트의 도메인 이름을 입력하면 이를 해당 서버의 IP주소로 변환해주는 시스템
IP주소와 DNS의 관계
- DNS = 도메인 이름과 IP 주소를 매핑하는 시스템
- 사람이 읽을수 있는 도메인 이름을 컴퓨터가 이해할 수 있는 IP주소로 변환
2. NAT (Network Address Translation)
NAT이란 무엇이며, 이를 사용하는 이유를 설명해 주세요
NAT
- 하나의 공인 IP 주소를 사용하여 내부 네트워크의 여러 장치들이 외부 네트워크와 통신할 수 있도록 하는 기술
- 라우터나 방화벽과 같은 네트워크 장치에서 동작하며 내부 사설 IP주소를 공인 IP 주소로 변환하거나 그 반대의 변환 수행
종류
- 정적 NAT : 내부의 하나의 고정된 사설 아이피 주소를 공인 아이피 주소와 일대일 변환
- 동적 NAT : 내부의 사설 아이피 주소를 공인 아이피 주소풀에서 임시로 할당받아 변환
- 포트 주소 변환 (PAT) : 여러개의 내부 장치가 하나의 공인 아이피 주소를 공유하면서 각 장치에 고유한 포트번호를 할당하여 구분, 가장 흔히 사용되는 방식
NAT를 사용하는 이유
- IP 주소 부족 문제 해결 : IPv4는 주소가 한정적이기 때문에 NAT를 사용하면 공인 IP주소가 부족해도 여러 내부 장치들이 동일한 공인 IP 주소를 공유하여 인터넷에 접속할 수 있음
- 보안 강화 : 내부 네트워크를 외부로부터 숨기기 때문에 외부에서 내부 네트워크로의 직접적인 접근 차단
- 네트워크 관리 용이 : 내부 네트워크 IP 주소는 변경할 필요 없이 NAT 장치에서만 공인 IP 주소를 관리하면 되므로 대규모 네트워크에서 IP 주소를 효율적으로 관리할 수 있음
예시
- 가정이나 사무실 네트워크에서는 여러대의 장치가 인터넷에 연결되지만 하나의 공인 IP 주소만을 공유하여 인터넷에 접속함
- NAT는 이 공인 IP 주소와 각 장치의 사설 IP주소를 변환하여 각 장치가 독립적으로 통신할 수 있도록 해줌
3. HTTP Keep-Alive
HTTP Keep-Alive의 역할과 성능에 미치는 영향을 설명해주세요
- HTTP 프로토콜의 성능을 향상시킬 수 있는 기능
- 클라이언트와 서버 간의 연결을 여러 요청에 걸쳐 유지하여 성능을 향상시키는 역할
- 기본적으로 HTTP는 각 요청마다 새로운 연결을 설정하고 데이터를 전송하는데 Keep-Alive를 사용하면 같은 연결을 재사용할 수 있음
역할
- 연결 재사용 : 한번 열린 연결을 여러 요청에 걸쳐 재사용 가능
- 응답 속도 향상 : 여러개의 HTTP요청을 처리할 때 매번 새로운 연결을 설정할 필요가 없어 통신 속도 향상
- 리소스 절약 : 연결을 반복해서 여닫는 대신 하나의 연결 재사용 → 자원을 효율적으로 사용 가능
성능에 미치는 영향
- 긍정적인 영향
- 성능 향상 : 연결 설정에 필요한 시간과 리소스를 줄여주기 때문에 네트워크 효율을 높일 수 있음
- 서버 부하 감소 : 새로운 연결을 설정하고 관리하는 비용을 줄일 수 있음
- 네트워크 효율성 향상 : 연결을 재사용함으로써 네트워크 상에서 데이터가 이동하는 빈도를 줄일 수 있음
- 부정적인 영향
- 연결 유지 한계 : 일정 시간동안 유지하기 때문에 너무 오랜 시간 연결을 유지하면 서버 자원을 낭비할 수 있음
Keep-Alive 설정
- HTTP 요청과 응답에서 Connection : keep-alive 헤더를 통해 활성화 할 수 있음
- 최대 유지 시간을 설정하거나 요청 최대 개수를 지정할 수 있음
Connection: keep-alive
Keep-Alive: timeout=5, max=100
4. TLS / SSL
TLS와 SSL의 차이점을 설명해주세요
- TLS와 SSL 모두 인터넷 통신에서 데이터를 암호화하여 보안을 강화하는 프로토콜
SSL (Secure Sockets Layer)
- 보안 소켓 계층
- 웹 브라우저와 웹 서버 간의 통신을 암호화 하기 위해 설계
- 시간이 지나면서 보안상의 결점이 발견됨
TLS (Transport Layer Security)
- SSL의 후속 프로토콜
- SSL 3.0을 기반으로 보안 강화
- SSL의 보안 취약점을 해결하고 암호화 및 인증방법 개선
주요 차이점
- 보안성 : TLS는 SSL에서 발견된 여러 보안 취약점들을 해결하고 암호화 알고리즘을 강력하게 적용한 강력한 프로토콜
- 암호화 알고리즘 : TLS는 더 현대적이고 강력한 암호화 알고리즘 사용
- 핸드셰이크 과정 : 둘 다 핸드셰이크 프로세스를 가지지만 TLS는 핸드셰이크 프로세스를 더 안전하고 효율적으로 개선하여 성능 향상
- 버전 : SSL은 더이상 사용되지 않음
5. 라운드로빈, IP 해시 방식
서버 부하 분산 방식 중 라운드로빈 방식과 IP 해시 방식의 차이점을 설명해주세요
서버 부하 분산 (Load Balancing)
- 클라이언트의 요청을 여러 서버에 고르게 분배하여 시스템의 성능을 최적화하고 서버에 과부하를 방지하는 역할
라운드로빈 (Round Robin)
- 가장 간단하고 널리 사용되는 부하 분산 방식
- 클라이언트의 요청을 서버들 사이에 순차적으로 분배
- 각 요청이 오면 첫번째 서버에 요청을 전달하고 두번째, 세번째 서버 순으로 반복하여 요청 분배
- 순차적으로 서버들흘 하나씩 돌며 요청 분배
- 특징
- 간단함 : 구현이 간단, 서버들이 동일한 성능을 가지고 있을 때 효율적
- 공평한 분배 : 서버들의 성능에 관계 없이 각 서버에 순차적으로 요청 분재
IP 해시 방식
- 클라이언트의 IP주소를 기반으로 해시 값을 계산하여 그 해시값에 따라 요청을 특정 서버에 전달하는 방식
- 클라이언트의 IP 주소에 대한 해시값이 동일하면 동일한 서버에 요청을 보냄
- 특정 클라이언트의 요청을 항상 같은 서버로 전달할 수 있음
- 특징
- 고정된 서버 할당 : 클라이언트가 매번 같은 서버에 요청을 보낼 수 있게 하여 세션이 유지되는 애플리케이션에서 유리 (사용자 인증이나 세션 정보가 필요한 서비스)
- 서버 부하 불균형 가능성 : 일부 서버에 요청이 집중될 수 있음
- 세션 지속성
차이점
| 구분 | 라운드로빈 방식 | IP 해시 방식 |
|---|---|---|
| 요청 분배 방식 | 요청을 서버에 순차적으로 분배 | 클라이언트의 IP 주소를 해시하여 특정 서버로 분배 |
| 세션 지속성 | 세션 지속성 보장하지 않음 | 클라이언트의 IP에 따라 동일 서버에 요청을 전달하여 세션 유지 가능 |
| 부하 분산 | 성능이 동일한 서버에서 효과적 | IP 분포가 고르지 않으면 부하 불균형이 발생할 수 있음 |
| 복잡성 | 구현이 간단하고 직관적 | 해시 함수와 같은 추가적인 처리가 필요 |
| 적합한 환경 | 성능이 유사한 서버들에서, 요청이 균등하게 분배되어야 할 때 | 세션 정보를 유지해야 하는 서비스에서 (예: 로그인, 쇼핑몰 등) |