devlog.

네트워크 면접 질문 완벽 정리: HTTP, TCP/IP, DNS

·10분 읽기

네트워크는 백엔드, 프론트엔드 구분 없이 모든 개발자 면접에서 단골로 등장합니다. 특히 HTTP와 TCP/IP는 거의 필수 질문입니다. 핵심만 뽑아 정리했습니다.

TCP vs UDP#

가장 기본적인 질문입니다.

TCP (Transmission Control Protocol)#

연결 지향적 프로토콜로, 데이터 전달을 보장합니다.

3-Way Handshake (연결 수립):

클라이언트          서버
    │   SYN →        │
    │   ← SYN-ACK    │
    │   ACK →        │
    │   (연결 완료)    │

4-Way Handshake (연결 종료):

클라이언트          서버
    │   FIN →        │
    │   ← ACK        │
    │   ← FIN        │
    │   ACK →        │
    │   (연결 종료)    │

UDP (User Datagram Protocol)#

비연결형으로, 빠르지만 신뢰성을 보장하지 않습니다.

특성TCPUDP
연결 방식연결 지향비연결
신뢰성보장 (재전송)미보장
속도느림빠름
순서 보장있음없음
사용 예HTTP, 파일 전송, 이메일스트리밍, 게임, DNS

HTTP vs HTTPS#

HTTP: 평문 통신, 데이터 도청 가능 HTTPS: HTTP + TLS/SSL 암호화

TLS Handshake 과정#

  1. 클라이언트가 지원하는 암호화 방식 목록 전송
  2. 서버가 선택한 방식 + 인증서 전송
  3. 클라이언트가 인증서 검증
  4. 대칭키 교환
  5. 암호화 통신 시작

HTTP 버전별 차이#

버전특징
HTTP/1.0요청마다 새 연결
HTTP/1.1Keep-Alive (연결 재사용), 파이프라이닝
HTTP/2.0멀티플렉싱, 헤더 압축, 서버 푸시
HTTP/3.0UDP 기반 QUIC, 연결 설정 시간 단축

HTTP 메서드#

GET    - 리소스 조회 (멱등, 캐시 가능)
POST   - 리소스 생성 (비멱등)
PUT    - 리소스 전체 교체 (멱등)
PATCH  - 리소스 부분 수정 (비멱등)
DELETE - 리소스 삭제 (멱등)

멱등성: 같은 요청을 여러 번 해도 결과가 같은 성질

HTTP 상태 코드#

범위의미주요 코드
2xx성공200 OK, 201 Created, 204 No Content
3xx리다이렉션301 Moved Permanently, 302 Found, 304 Not Modified
4xx클라이언트 오류400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xx서버 오류500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

401 vs 403 차이#

  • 401 Unauthorized: 인증 안 됨 (로그인 필요)
  • 403 Forbidden: 인증은 됐지만 권한 없음 (접근 금지)

DNS (Domain Name System)#

www.google.com142.250.207.100 으로 변환하는 시스템입니다.

DNS 조회 과정#

1. 브라우저 캐시 확인
2. OS 캐시 확인 (/etc/hosts)
3. 로컬 DNS 서버에 질의
4. 루트 DNS 서버에 질의 → .com TLD 서버 주소 반환
5. .com TLD 서버에 질의 → google.com 네임서버 주소 반환
6. google.com 네임서버에 질의 → IP 주소 반환
7. IP 주소 캐시에 저장 후 반환

쿠키 vs 세션 vs JWT#

쿠키#

Set-Cookie: user_id=123; HttpOnly; Secure; SameSite=Strict; Max-Age=3600
  • 클라이언트에 저장
  • HttpOnly: JS에서 접근 불가 (XSS 방어)
  • Secure: HTTPS에서만 전송
  • SameSite: CSRF 방어

세션#

  • 서버에 상태 저장, 클라이언트에는 세션 ID만
  • 서버 재시작/스케일아웃 시 세션 공유 문제 (Redis 등으로 해결)

JWT (JSON Web Token)#

Header.Payload.Signature
  • Stateless: 서버에 저장 안 함
  • 장점: 서버 확장 용이
  • 단점: 토큰 탈취 시 만료 전까지 무효화 불가

CORS (Cross-Origin Resource Sharing)#

다른 출처(origin)의 리소스에 접근할 때 발생합니다.

출처(Origin) = 프로토콜 + 호스트 + 포트
https://example.com:443  ≠  http://example.com:80
브라우저               서버
  │ Preflight OPTIONS → │
  │ ← Access-Control-Allow-Origin: *
  │ 실제 요청 →          │
  │ ← 응답              │

서버 응답 헤더에 허용된 출처를 명시해야 합니다:

Access-Control-Allow-Origin: https://myapp.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization

면접 빈출 질문 요약#

  • TCP 3-Way Handshake란? SYN → SYN-ACK → ACK로 연결 수립
  • HTTP와 HTTPS의 차이? TLS 암호화 유무
  • GET vs POST 차이? GET은 URL에 데이터, POST는 Body에 데이터. GET은 캐시 가능
  • DNS란? 도메인을 IP로 변환하는 분산 데이터베이스 시스템
  • 쿠키와 세션 차이? 쿠키는 클라이언트 저장, 세션은 서버 저장
  • CORS란? 브라우저가 다른 출처 요청을 차단하는 보안 정책

관련 포스트