1. 쿠키와 세션의 차이에 대해 설명해 주세요.
기본 답변
쿠키는 클라이언트 브라우저에 저장되는 작은 데이터이고, 세션은 서버가 사용자 상태를 저장하고 클라이언트는 세션 ID만 쿠키 등으로 들고 있는 방식입니다.
HTTP는 stateless이기 때문에 로그인 상태처럼 요청 간 유지해야 하는 정보를 쿠키나 세션으로 보완합니다.
쿠키는 클라이언트에 저장되므로 변조와 탈취를 고려해야 하고, 세션은 서버가 상태를 관리하므로 서버 확장 시 세션 저장소 공유나 sticky session 같은 전략이 필요합니다.
핵심 키워드
- Cookie
- Session
- Session ID
- Stateless
- HttpOnly
- SameSite
꼬리질문
질문 세션 방식의 로그인 과정에 대해 설명해 주세요.
답변 포인트 사용자가 로그인하면 서버가 인증 후 세션을 생성하고 세션 ID를 쿠키로 내려줍니다.
이후 요청마다 쿠키의 세션 ID로 서버 세션 저장소에서 사용자 정보를 조회합니다.
질문 HTTP의 특성인 Stateless에 대해 설명해 주세요.
답변 포인트 서버가 이전 요청 상태를 기본적으로 기억하지 않는다는 뜻입니다.
각 요청은 독립적으로 처리됩니다.
질문 Stateless의 의미를 살펴보면, 세션은 적절하지 않은 인증 방법 아닌가요?
답변 포인트 세션은 HTTP 위에 상태를 추가하는 방식입니다.
HTTP 자체는 stateless지만 애플리케이션 요구에 따라 서버 측 상태를 관리할 수 있습니다.
질문 규모가 커져 서버가 여러 개가 된다면, 세션을 어떻게 관리할 수 있을까요?
답변 포인트 Redis 같은 중앙 세션 저장소를 사용하거나, sticky session으로 같은 서버에 요청을 보내거나, stateless token 방식으로 전환할 수 있습니다.
주의할 점
- 쿠키와 세션은 대립 개념이라기보다 함께 쓰이는 경우가 많습니다. 세션 ID를 쿠키에 저장하는 방식이 대표적입니다.
2. HTTP 응답코드에 대해 설명해 주세요.
기본 답변
HTTP 응답코드는 서버가 클라이언트 요청을 어떻게 처리했는지 알려주는 세 자리 상태 코드입니다.
1xx는 정보, 2xx는 성공, 3xx는 리다이렉션, 4xx는 클라이언트 오류, 5xx는 서버 오류를 의미합니다.
적절한 상태 코드를 사용하면 클라이언트가 성공, 실패, 재시도, 인증 필요 여부를 명확히 판단할 수 있습니다.
핵심 키워드
- 2xx
- 3xx
- 4xx
- 5xx
- 401
- 403
꼬리질문
질문 401 (Unauthorized) 와 403 (Forbidden)은 의미적으로 어떤 차이가 있나요?
답변 포인트 401은 유효한 인증 자격 증명이 없어서 인증이 필요한 상태입니다. 403은 서버가 요청을 이해했지만 처리를 거부한 상태로, 권한 부족이 대표적이지만 반드시 인증이 완료됐다는 뜻은 아닙니다.
질문 200 (ok) 와 201 (created) 의 차이에 대해 설명해 주세요.
답변 포인트 200은 요청 성공 일반 응답이고, 201은 요청 결과로 새로운 리소스가 생성됐다는 의미입니다.
질문 필요하다면 저희가 직접 응답코드를 정의해서 사용할 수 있을까요? 예를 들어 285번 처럼요.
답변 포인트 사설적으로 쓸 수는 있지만 표준 클라이언트와 프록시, 모니터링 도구의 호환성을 해칠 수 있습니다.
가능하면 표준 상태 코드와 응답 body의 에러 코드를 함께 사용합니다.
주의할 점
- 모든 실패를 200으로 내려주고 body에만 실패를 담으면 HTTP 의미와 캐시/프록시/클라이언트 처리가 어긋날 수 있습니다.
3. HTTP Method 에 대해 설명해 주세요.
기본 답변
HTTP Method는 클라이언트가 리소스에 대해 어떤 행위를 원하는지 표현합니다.
GET은 조회, POST는 생성이나 처리 요청, PUT은 전체 교체, PATCH는 부분 수정, DELETE는 삭제에 주로 사용합니다.
메서드는 안전성, 멱등성, 캐시 가능성 같은 의미를 가집니다.
이 의미를 지키면 API를 예측 가능하게 만들 수 있습니다.
핵심 키워드
- GET
- POST
- PUT
- PATCH
- DELETE
- Idempotency
꼬리질문
질문 HTTP Method의 멱등성에 대해 설명해 주세요.
답변 포인트 같은 요청을 여러 번 보내도 서버 상태가 한 번 보낸 것과 같으면 멱등입니다.
GET, PUT, DELETE는 보통 멱등이고 POST는 일반적으로 멱등이 아닙니다.
질문 GET과 POST의 차이는 무엇인가요?
답변 포인트 GET은 리소스 조회에 사용하고 안전하며 캐시될 수 있습니다.
POST는 서버에 데이터를 제출해 생성이나 처리를 요청할 때 사용하며 서버 상태를 변경할 수 있습니다.
질문 POST와 PUT, PATCH의 차이는 무엇인가요?
답변 포인트 POST는 생성이나 명령성 처리, PUT은 특정 리소스 전체 교체, PATCH는 부분 수정에 가깝습니다.
질문 GET 요청에 Body를 넣는 방식을 일반적으로 지양하는 이유는 무엇인가요?
답변 포인트 HTTP 메시지 framing은 메서드와 독립적이지만 GET 요청 콘텐츠에는 일반적으로 정의된 의미가 없습니다. 일부 서버나 중간 장비가 요청을 거부할 수도 있어 호환성과 보안 문제가 생길 수 있습니다.
서버가 명시적으로 지원하기로 합의한 특수한 경우가 아니라면 조회 조건은 query string을 쓰는 것이 일반적입니다.
주의할 점
- REST API에서 메서드는 단순 URL 이름보다 리소스 행위 의미를 표현하는 핵심입니다.
4. HTTP와 HTTPS에 대해 설명해 주세요.
기본 답변
HTTP는 클라이언트와 서버가 요청과 응답을 주고받기 위한 애플리케이션 계층 프로토콜입니다.
기본 HTTP는 평문이기 때문에 중간에서 내용을 볼 수 있고 변조될 수 있습니다.
HTTPS는 HTTP를 TLS 위에서 사용하는 방식입니다.
TLS는 암호화, 무결성, 서버 인증을 제공해 중간자 공격과 도청 위험을 줄입니다.
핵심 키워드
- HTTP
- HTTPS
- TLS
- symmetric key
- public key
- certificate
꼬리질문
질문 공개키와 대칭키에 대해 설명해 주세요.
답변 포인트 대칭키는 같은 키로 암호화와 복호화를 수행해 빠르지만 키 공유가 어렵습니다.
공개키 방식은 공개키로 암호화하거나 서명을 검증하고 개인키로 복호화하거나 서명해 키 교환과 인증에 유리하지만 느립니다.
질문 왜 HTTPS Handshake 과정에서는 인증서를 사용하는 것 일까요?
답변 포인트 클라이언트가 접속한 서버가 진짜인지 검증하기 위해서입니다.
인증서는 CA가 서버의 공개키와 도메인 정보를 보증합니다.
질문 SSL과 TLS의 차이는 무엇인가요?
답변 포인트 SSL은 과거 프로토콜이고 보안상 더 이상 사용하지 않습니다.
TLS가 SSL의 후속 표준이며 현재 HTTPS는 TLS를 사용합니다.
주의할 점
- HTTPS는 “공개키로 모든 데이터를 암호화한다”가 아니라, 핸드셰이크로 세션 키를 합의하고 이후 대칭키로 통신합니다.
5. 웹소켓과 소켓 통신의 차이에 대해 설명해 주세요.
기본 답변
소켓은 네트워크 통신을 위한 OS 수준의 추상화입니다.
TCP나 UDP 기반 통신을 프로그램에서 사용할 수 있게 해주는 인터페이스입니다.
웹소켓은 HTTP 핸드셰이크로 시작해 연결을 업그레이드한 뒤 하나의 TCP 연결에서 양방향 통신을 지속하는 애플리케이션 계층 프로토콜입니다.
브라우저와 서버 간 실시간 통신에 많이 사용됩니다.
핵심 키워드
- Socket
- WebSocket
- TCP
- full-duplex
- HTTP Upgrade
- port
꼬리질문
질문 소켓과 포트의 차이가 무엇인가요?
답변 포인트 포트는 호스트 내 애플리케이션을 구분하는 번호이고, 소켓은 IP, 포트, 프로토콜 등으로 표현되는 통신 끝점입니다.
질문 여러 소켓이 있다고 할 때, 그 소켓의 포트 번호는 모두 다른가요?
답변 포인트 서버는 같은 로컬 포트로 여러 연결을 가질 수 있습니다.
연결은 보통 source IP/port, destination IP/port, protocol 조합으로 구분됩니다.
질문 사용자의 요청이 무수히 많아지면, 소켓도 무수히 생성되나요?
답변 포인트 연결형 통신에서는 연결마다 소켓 상태가 생깁니다.
그래서 connection pool, keep-alive, 이벤트 기반 처리, 파일 디스크립터 한계 등을 고려해야 합니다.
주의할 점
- 웹소켓은 일반 소켓 자체가 아니라 브라우저 친화적인 프로토콜입니다.
6. HTTP/1.1과 HTTP/2의 차이점은 무엇인가요?
기본 답변
HTTP/1.1은 텍스트 기반 프로토콜이고 한 연결에서 요청/응답이 순차적으로 처리되는 경향이 있어 head-of-line blocking 문제가 생길 수 있습니다.
keep-alive와 pipelining이 있지만 한계가 있습니다.
HTTP/2는 바이너리 프레이밍, 멀티플렉싱, 헤더 압축, 스트림 우선순위 등을 지원합니다.
하나의 TCP 연결에서 여러 요청과 응답을 동시에 주고받을 수 있어 HTTP/1.1의 여러 비효율을 줄였습니다.
핵심 키워드
- HTTP/1.1
- HTTP/2
- multiplexing
- binary frame
- HPACK
- HOL blocking
꼬리질문
질문 HOL Blocking 에 대해 설명해 주세요.
답변 포인트 앞선 작업이 막혀 뒤 작업도 진행하지 못하는 현상입니다.
HTTP/2는 애플리케이션 계층 HOL은 줄였지만 TCP 위에서 동작하므로 패킷 손실 시 TCP 계층 HOL은 남습니다.
질문 HTTP/3.0의 주요 특징에 대해 설명해 주세요.
답변 포인트 HTTP/3는 TCP 대신 QUIC 위에서 동작합니다.
QUIC은 UDP 기반이며 연결 설정 지연 감소, 스트림별 독립 처리, TLS 1.3 통합 등을 제공합니다.
주의할 점
- HTTP/2가 TCP HOL 문제까지 완전히 없앤 것은 아닙니다. 이 지점이 HTTP/3의 등장 이유 중 하나입니다.
7. TCP와 UDP의 차이에 대해 설명해 주세요.
기본 답변
TCP는 연결 지향, 신뢰성, 순서 보장, 흐름 제어, 혼잡 제어를 제공하는 전송 계층 프로토콜입니다.
데이터가 정확하고 순서대로 도착해야 하는 웹, 파일 전송 등에 적합합니다.
UDP는 비연결형 프로토콜로 신뢰성과 순서 보장을 제공하지 않지만 오버헤드가 작고 지연이 낮습니다.
실시간 스트리밍, 게임, DNS, QUIC 같은 곳에서 활용됩니다.
핵심 키워드
- TCP
- UDP
- reliability
- ordering
- flow control
- congestion control
꼬리질문
질문 Checksum이 무엇인가요?
답변 포인트 전송 중 데이터 오류를 검출하기 위한 값입니다.
송신자가 계산한 checksum과 수신자가 계산한 값이 다르면 오류로 판단합니다.
질문 TCP와 UDP 중 어느 프로토콜이 Checksum을 수행할까요?
답변 포인트 둘 다 checksum 필드가 있습니다.
IPv4에서 UDP checksum은 0으로 생략할 수 있지만, IPv6에서는 기본적으로 필수입니다. 다만 표준이 별도로 허용한 제한적인 터널링 예외가 있습니다.
질문 Checksum을 통해 오류를 정정할 수 있나요?
답변 포인트 일반적인 checksum은 오류 검출만 하고 정정은 하지 않습니다.
TCP는 오류가 있으면 재전송으로 복구합니다.
질문 TCP가 신뢰성을 보장하는 방법에 대해 설명해 주세요.
답변 포인트 sequence number, ACK, 재전송, timeout, 흐름 제어, 혼잡 제어를 사용합니다.
질문 TCP의 혼잡 제어 처리 방법에 대해 설명해 주세요.
답변 포인트 slow start, congestion avoidance, fast retransmit, fast recovery 등을 통해 네트워크 혼잡을 감지하고 전송량을 조절합니다.
질문 왜 HTTP는 TCP를 사용하나요?
답변 포인트 웹 문서는 정확성과 순서 보장이 중요하기 때문에 TCP의 신뢰성 있는 바이트 스트림이 적합했습니다.
질문 왜 HTTP/3 에서는 UDP를 사용하나요? UDP의 문제가 해결되었나요?
답변 포인트 HTTP/3는 UDP 위에 QUIC을 올려 신뢰성, 암호화, 흐름/혼잡 제어를 애플리케이션 계층에서 구현합니다.
UDP 자체가 해결한 것이 아니라 QUIC이 필요한 기능을 제공합니다.
질문 브라우저는 어떤 서버가 TCP를 쓰는지 UDP를 쓰는지 어떻게 알 수 있나요?
답변 포인트 HTTPS 접속 후 서버가 Alt-Svc 헤더 등으로 HTTP/3 지원을 알려줄 수 있고, 브라우저는 QUIC 연결을 시도합니다.
실패하면 HTTP/2/TCP로 fallback할 수 있습니다.
질문 새로운 통신 프로토콜을 TCP나 UDP로 구현한다면 어떤 기준으로 선택하시겠어요?
답변 포인트 신뢰성, 순서 보장, 지연 시간, 실시간성, 혼잡 제어 필요성, 직접 제어 수준을 기준으로 선택합니다.
주의할 점
- UDP는 “불안정해서 쓸모없다”가 아니라 필요한 기능을 애플리케이션에서 선택적으로 구현할 수 있는 단순한 전송 수단입니다.
8. DHCP가 무엇인지 설명해 주세요.
기본 답변
DHCP는 Dynamic Host Configuration Protocol로, 네트워크에 접속한 장치에게 IP 주소와 네트워크 설정을 자동으로 할당하는 프로토콜입니다.
사용자는 수동으로 IP, 게이트웨이, DNS 서버를 설정하지 않아도 됩니다.
DHCP는 보통 Discover, Offer, Request, Acknowledge 과정으로 동작하며 UDP를 사용합니다.
핵심 키워드
- DHCP
- DORA
- lease
- UDP
- gateway
- DNS server
꼬리질문
질문 DHCP는 몇 계층 프로토콜인가요?
답변 포인트 애플리케이션 계층 프로토콜입니다.
전송 계층으로 UDP를 사용합니다.
질문 DHCP는 어떻게 동작하나요?
답변 포인트 클라이언트가 Discover를 브로드캐스트하고, 서버가 Offer를 보냅니다.
클라이언트가 Request로 선택하고, 서버가 ACK로 확정합니다.
질문 DHCP에서 UDP를 사용하는 이유가 무엇인가요?
답변 포인트 클라이언트가 아직 IP를 갖지 않은 상태에서 간단한 브로드캐스트 기반 통신이 필요하기 때문입니다.
질문 DHCP에서, IP 주소 말고 추가로 제공해주는 정보가 있나요?
답변 포인트 subnet mask, default gateway, DNS server, lease time 등을 제공합니다.
질문 DHCP의 유효기간은 얼마나 긴가요?
답변 포인트 lease time은 네트워크 관리자가 설정합니다.
클라이언트는 만료 전 갱신을 시도합니다.
주의할 점
- DHCP는 IP를 영구히 주는 것이 아니라 lease 기반으로 임대합니다.
9. IP 주소는 무엇이며, 어떤 기능을 하고 있나요?
기본 답변
IP 주소는 네트워크 계층에서 호스트나 인터페이스를 식별하고 패킷을 목적지까지 라우팅하기 위한 논리 주소입니다.
IPv4는 32비트, IPv6는 128비트 주소 체계를 사용합니다.
IP는 최선형 전달을 제공하며, 패킷의 도착, 순서, 중복 제거를 보장하지 않습니다.
이런 신뢰성은 TCP나 애플리케이션 계층에서 보완합니다.
핵심 키워드
- IPv4
- IPv6
- routing
- NAT
- TTL
- MAC address
꼬리질문
질문 IPv4 주소 고갈 문제를 어떻게 해결할 수 있을까요?
답변 포인트 NAT, CIDR, 사설 IP, IPv6 전환 등을 사용합니다.
질문 IPv4와 IPv6의 차이에 대해 설명해 주세요.
답변 포인트 IPv4는 32비트, IPv6는 128비트입니다.
IPv6는 훨씬 큰 주소 공간과 단순화된 헤더, 자동 설정 등을 제공합니다.
질문 유동 IP 환경에서 공유기는 고정 주소를 어떻게 제공하나요?
답변 포인트 공유기 내부 네트워크에서 DHCP reservation이나 static mapping으로 사설 IP를 고정해 줄 수 있습니다.
외부 공인 IP가 고정이라는 뜻은 아닙니다.
질문 IPv4 장비와 IPv6 장비가 같은 네트워크 내에서 통신 가능한가요?
답변 포인트 직접 호환되지는 않습니다.
양쪽이 dual stack이면 공통으로 지원하는 IP 버전을 선택할 수 있습니다. 한쪽이 IPv4-only이고 다른 쪽이 IPv6-only라면 NAT64·SIIT 같은 protocol translation과 경우에 따라 DNS64·464XLAT 같은 보조 기술이 필요합니다.
터널링은 IPv6 패킷을 IPv4망 위로 운반하는 것처럼 같은 IP 버전의 통신 영역을 연결하는 기술이며, 그 자체가 IPv4와 IPv6의 의미를 변환하는 것은 아닙니다.
질문 IP가 송신자와 수신자를 정확하게 전송되는 것을 보장해 주나요?
답변 포인트 보장하지 않습니다.
IP는 best-effort이며 손실, 중복, 순서 변경이 있을 수 있습니다.
질문 IPv4에서 수행하는 Checksum과 TCP에서 수행하는 Checksum은 어떤 차이가 있나요?
답변 포인트 IPv4 header checksum은 IP 헤더 오류만 검출합니다.
TCP checksum은 TCP 헤더와 데이터, pseudo header 일부를 포함해 검증합니다.
질문 TTL(Hop Limit)이란 무엇인가요?
답변 포인트 패킷이 지나갈 수 있는 최대 홉 수입니다.
라우터를 지날 때마다 감소하며 0이 되면 폐기되어 루프를 방지합니다.
질문 IP 주소와 MAC 주소의 차이에 대해 설명해 주세요.
답변 포인트 IP는 네트워크 계층의 논리 주소이고 라우팅에 사용됩니다.
MAC은 데이터 링크 계층의 물리 주소로 같은 링크 안에서 프레임 전달에 사용됩니다.
주의할 점
- IP 주소는 보통 장치 자체보다 네트워크 인터페이스에 할당된다고 보는 것이 정확합니다.
10. OSI 7계층에 대해 설명해 주세요.
기본 답변
OSI 7계층은 네트워크 통신 기능을 계층별로 나눈 모델입니다.
물리, 데이터 링크, 네트워크, 전송, 세션, 표현, 애플리케이션 계층으로 구성됩니다.
실제 인터넷은 TCP/IP 모델로 설명하는 경우가 많지만, OSI 모델은 각 계층의 역할과 책임을 구분해 문제를 이해하는 데 유용합니다.
핵심 키워드
- Physical
- Data Link
- Network
- Transport
- Application
- encapsulation
꼬리질문
질문 Transport Layer와, Network Layer의 차이에 대해 설명해 주세요.
답변 포인트 Network Layer는 호스트 간 패킷 전달과 라우팅을 담당하고, Transport Layer는 프로세스 간 통신, 포트, 신뢰성, 흐름 제어를 담당합니다.
질문 L3 Switch와 Router의 차이에 대해 설명해 주세요.
답변 포인트 둘 다 3계층 라우팅을 수행할 수 있습니다.
L3 스위치는 LAN 내부 고속 라우팅에 특화되고, 라우터는 WAN 연결, 다양한 라우팅 정책, NAT 등 경계 장비 역할이 큽니다.
질문 각 Layer는 패킷을 어떻게 명칭하나요?
답변 포인트 데이터 링크 계층은 frame, 네트워크 계층은 packet/datagram, 전송 계층은 TCP segment 또는 UDP datagram이라고 부릅니다.
질문 각각의 Header의 Packing Order에 대해 설명해 주세요.
답변 포인트 송신 시 상위 계층 데이터에 TCP/UDP 헤더, IP 헤더, Ethernet 헤더가 순서대로 붙는 캡슐화가 일어납니다.
수신 시 역순으로 제거합니다.
질문 ARP에 대해 설명해 주세요.
답변 포인트 같은 네트워크에서 IP 주소에 해당하는 MAC 주소를 알아내기 위한 프로토콜입니다.
주의할 점
- OSI 7계층은 개념 모델이고 실제 프로토콜 스택과 1:1로 완벽히 대응하지 않을 수 있습니다.
11. 3-Way Handshake에 대해 설명해 주세요.
기본 답변
3-Way Handshake는 TCP 연결을 설정하는 과정입니다.
클라이언트가 SYN을 보내고, 서버가 SYN+ACK로 응답하며, 클라이언트가 ACK를 보내 연결이 성립합니다.
이 과정을 통해 양쪽은 서로 송수신 가능함을 확인하고 초기 sequence number를 동기화합니다.
핵심 키워드
- SYN
- ACK
- sequence number
- TCP connection
- half-open
- SYN flood
꼬리질문
질문 ACK, SYN 같은 정보는 어떻게 전달하는 것 일까요?
답변 포인트 TCP 헤더의 control flag 비트로 전달됩니다.
질문 2-Way Handshaking 를 하지않는 이유에 대해 설명해 주세요.
답변 포인트 양방향 통신 가능성과 양쪽 sequence number 동기화를 모두 확인해야 하기 때문입니다.
2-way로는 오래된 연결 요청 처리 등 문제가 생길 수 있습니다.
질문 두 호스트가 동시에 연결을 시도하면, 연결이 가능한가요?
답변 포인트 TCP simultaneous open이 가능하며 양쪽이 SYN을 보내고 SYN+ACK/ACK 흐름으로 연결될 수 있습니다.
질문 SYN Flooding 에 대해 설명해 주세요.
답변 포인트 공격자가 SYN을 대량으로 보내 half-open 연결을 쌓아 서버 자원을 고갈시키는 공격입니다.
SYN cookie 등으로 완화합니다.
질문 0-RTT 기법은 어떤 방식으로 가능한 걸까요?
답변 포인트 이전 연결 정보를 재사용해 핸드셰이크 완료 전 데이터를 보내 지연을 줄입니다.
TLS 1.3/QUIC에서 사용되지만 replay attack 위험을 고려해야 합니다.
주의할 점
- TCP 3-way handshake와 TLS handshake는 다른 계층의 과정입니다.
12. 4-Way Handshake에 대해 설명해 주세요.
기본 답변
4-Way Handshake는 TCP 연결을 정상 종료하는 과정입니다.
한쪽이 FIN을 보내면 상대가 ACK로 확인하고, 상대도 보낼 데이터가 끝나면 FIN을 보내며, 처음 쪽이 ACK를 보내 종료합니다.
TCP는 양방향 스트림이므로 한쪽 송신 종료와 반대쪽 송신 종료가 독립적으로 처리됩니다.
그래서 연결 설정보다 종료가 더 단계적으로 보입니다.
핵심 키워드
- FIN
- ACK
- half-close
- TIME_WAIT
- RST
- keepalive
꼬리질문
질문 패킷이 4-way handshake 목적인지 어떻게 파악할 수 있을까요?
답변 포인트 TCP 헤더의 FIN, ACK flag와 sequence/ack number, 상태 전이를 보고 판단합니다.
질문 빨리 끊어야 할 경우엔 어떻게 종료할 수 있을까요?
답변 포인트 RST 패킷으로 연결을 즉시 재설정할 수 있습니다.
다만 정상 종료가 아니므로 데이터 손실 가능성이 있습니다.
질문 4-Way Handshake 과정에서 중간에 한쪽 네트워크가 강제로 종료된다면, 반대쪽은 이를 어떻게 인식할 수 있을까요?
답변 포인트 즉시 알지 못할 수 있습니다.
timeout, keepalive, 애플리케이션 heartbeat, 재전송 실패 등을 통해 감지합니다.
질문 왜 종료 후에 바로 끝나지 않고, TIME_WAIT 상태로 대기하는 것 일까요?
답변 포인트 마지막 ACK가 유실됐을 때 재전송되는 FIN에 응답하고, 이전 연결의 지연 패킷이 새 연결에 섞이는 것을 방지하기 위해서입니다.
주의할 점
- FIN은 “더 보낼 데이터가 없다”는 의미이고, 반대 방향 데이터 수신은 가능할 수 있습니다.
13. www.github.com을 브라우저에 입력하고 엔터를 쳤을 때, 네트워크 상 어떤 일이 일어나는지 최대한 자세하게 설명해 주세요.
기본 답변
브라우저는 먼저 URL을 파싱하고 캐시, hosts 파일, DNS를 통해 도메인의 IP 주소를 찾습니다.
이후 목적지까지 라우팅되며 TCP 연결을 맺고, HTTPS라면 TLS 핸드셰이크로 서버 인증과 세션 키 협상을 합니다.
연결이 준비되면 HTTP 요청을 보내고 서버 또는 CDN, 로드밸런서, 웹 서버, 애플리케이션 서버를 거쳐 응답을 받습니다.
브라우저는 HTML을 파싱하고 CSS, JS, 이미지 같은 추가 리소스를 요청해 화면을 렌더링합니다.
핵심 키워드
- URL parsing
- DNS
- TCP handshake
- TLS handshake
- HTTP request
- rendering
꼬리질문
질문 DNS 쿼리를 통해 얻어진 IP는 어디를 가리키고 있나요?
답변 포인트 실제 origin 서버일 수도 있고, CDN edge, load balancer, reverse proxy일 수도 있습니다.
질문 Web Server와 Web Application Server의 차이에 대해 설명해 주세요.
답변 포인트 웹 서버는 정적 리소스 처리, TLS 종료, reverse proxy 역할을 주로 하고, WAS는 동적 비즈니스 로직과 애플리케이션 실행을 담당합니다.
실제로는 역할이 겹칠 수 있습니다.
질문 URL, URI, URN은 어떤 차이가 있나요?
답변 포인트 URI는 리소스를 식별하는 전체 개념이고, URL은 위치로 식별하는 URI입니다.
URN은 이름으로 식별하는 URI입니다.
주의할 점
- 이 질문은 DNS, TCP, TLS, HTTP, 브라우저 렌더링을 순서대로 연결해 설명하는 것이 중요합니다.
14. DNS에 대해 설명해 주세요.
기본 답변
DNS는 사람이 읽기 쉬운 도메인 이름을 IP 주소 같은 네트워크 주소로 변환하는 분산 계층형 시스템입니다.
브라우저나 OS는 resolver를 통해 캐시를 확인하고, 필요하면 recursive resolver가 root, TLD, authoritative name server를 따라 조회합니다.
DNS는 주로 UDP 53번 포트를 사용하지만, 큰 응답이나 zone transfer 등에서는 TCP도 사용합니다.
핵심 키워드
- DNS
- recursive resolver
- authoritative server
- A record
- CNAME
- TTL
꼬리질문
질문 DNS는 몇 계층 프로토콜인가요?
답변 포인트 애플리케이션 계층 프로토콜입니다.
질문 UDP와 TCP 중 어떤 것을 사용하나요?
답변 포인트 일반 조회는 주로 UDP를 사용하고, 응답이 크거나 zone transfer 등에서는 TCP를 사용합니다.
질문 DNS Recursive Query, Iterative Query가 무엇인가요?
답변 포인트 recursive query는 resolver가 최종 답을 대신 찾아주는 방식이고, iterative query는 다음에 물어볼 서버 정보를 단계적으로 받는 방식입니다.
질문 DNS 쿼리 과정에서 손실이 발생한다면, 어떻게 처리하나요?
답변 포인트 UDP 기반이면 timeout 후 재시도하거나 다른 DNS 서버에 질의할 수 있습니다.
질문 캐싱된 DNS 쿼리가 잘못 될 수도 있습니다. 이 경우, 어떻게 에러를 보정할 수 있나요?
답변 포인트 TTL 만료를 기다리거나 캐시를 flush하고, 권한 있는 DNS 서버 설정을 수정합니다.
운영 시 TTL을 낮춰 전환 리스크를 줄일 수 있습니다.
질문 DNS 레코드 타입 중 A, CNAME, AAAA의 차이에 대해서 설명해주세요.
답변 포인트 A는 IPv4 주소, AAAA는 IPv6 주소, CNAME은 다른 도메인 이름에 대한 별칭입니다.
질문 hosts 파일은 어떤 역할을 하나요? DNS와 비교하였을 때 어떤 것이 우선순위가 더 높나요?
답변 포인트 hosts 파일은 로컬에서 도메인과 IP를 매핑합니다.
일반적으로 DNS 질의보다 먼저 확인됩니다.
주의할 점
- CNAME은 IP가 아니라 다른 이름을 가리킵니다.
15. SOP 정책에 대해 설명해 주세요.
기본 답변
SOP는 Same-Origin Policy로, 브라우저가 서로 다른 origin 간의 리소스 접근을 제한하는 보안 정책입니다.
origin은 scheme, host, port가 모두 같아야 동일 origin으로 봅니다.
이 정책은 악성 사이트가 사용자의 인증 정보를 이용해 다른 사이트의 민감한 데이터를 읽는 것을 막는 기본 방어선입니다.
핵심 키워드
- SOP
- origin
- CORS
- preflight
- Access-Control-Allow-Origin
- browser security
꼬리질문
질문 CORS 정책이 무엇인가요?
답변 포인트 Cross-Origin Resource Sharing으로, 서버가 특정 origin의 cross-origin 요청을 허용한다는 HTTP 헤더를 내려 브라우저 제한을 완화하는 메커니즘입니다.
질문 Preflight에 대해 설명해 주세요.
답변 포인트 실제 요청 전에 브라우저가 OPTIONS 요청을 보내 서버가 해당 메서드와 헤더를 허용하는지 확인하는 과정입니다.
단순 요청이 아닌 경우 발생합니다.
주의할 점
- CORS는 서버 간 통신을 막는 정책이 아니라 브라우저가 적용하는 보안 정책입니다.
16. Stateless와 Connectionless에 대해 설명해 주세요.
기본 답변
Stateless는 서버가 이전 요청의 상태를 기본적으로 기억하지 않는다는 의미입니다.
Connectionless는 요청/응답 후 연결을 유지하지 않는다는 의미입니다.
HTTP는 원래 stateless한 특성을 가지며, HTTP/1.0에서는 connectionless 성격이 강했습니다.
하지만 HTTP/1.1 이후 keep-alive로 연결을 재사용할 수 있어 물리 연결 관점의 connectionless는 완화되었습니다.
핵심 키워드
- stateless
- connectionless
- keep-alive
- session
- scalability
- TCP connection
꼬리질문
질문 왜 HTTP는 Stateless 구조를 채택하고 있을까요?
답변 포인트 서버가 클라이언트 상태를 유지하지 않아 확장성과 단순성이 좋아지고, 요청을 독립적으로 처리하기 쉽기 때문입니다.
질문 Connectionless의 논리대로면 성능이 좋지 않을 것으로 보이는데, 해결 방법이 있을까요?
답변 포인트 keep-alive, connection pooling, HTTP/2 multiplexing 등을 통해 연결 생성 비용을 줄입니다.
질문 TCP의 keep-alive와 HTTP의 keep-alive의 차이는 무엇인가요?
답변 포인트 TCP keep-alive는 죽은 연결 감지를 위한 전송 계층 기능이고, HTTP keep-alive는 여러 HTTP 요청에 같은 TCP 연결을 재사용하는 애플리케이션 계층 개념입니다.
주의할 점
- stateless와 connectionless는 같은 뜻이 아닙니다.
17. 라우터 내의 포워딩 과정에 대해 설명해 주세요.
기본 답변
라우터는 들어온 IP 패킷의 목적지 주소를 보고 forwarding table을 조회해 다음 hop과 출력 인터페이스를 결정합니다.
IPv4에서는 TTL을 감소시키고 그 변경을 반영해 IP 헤더 checksum을 갱신합니다. IPv6에서는 TTL 대신 Hop Limit을 감소시키며 IPv6 기본 헤더에는 헤더 checksum이 없습니다.
라우팅은 경로를 계산하는 제어 평면의 작업이고, 포워딩은 실제 패킷을 해당 경로로 보내는 데이터 평면의 작업입니다.
핵심 키워드
- router
- forwarding
- routing
- forwarding table
- longest prefix match
- next hop
꼬리질문
질문 라우팅과 포워딩의 차이는 무엇인가요?
답변 포인트 라우팅은 경로를 찾고 테이블을 만드는 과정이고, 포워딩은 패킷을 테이블에 따라 실제로 전달하는 과정입니다.
질문 라우팅 알고리즘에 대해 설명해 주세요.
답변 포인트 distance vector, link state, path vector 방식이 있습니다.
RIP, OSPF, BGP가 대표 프로토콜입니다.
질문 포워딩 테이블의 구조에 대해 설명해 주세요.
답변 포인트 목적지 prefix, next hop, 출력 인터페이스, metric 등을 포함하며, longest prefix match로 가장 구체적인 경로를 선택합니다.
주의할 점
- 라우터는 전체 URL이 아니라 IP 패킷의 네트워크 계층 정보를 기준으로 전달합니다.
18. 로드밸런서가 무엇인가요?
기본 답변
로드밸런서는 여러 서버에 트래픽을 분산해 가용성과 확장성을 높이는 장치나 소프트웨어입니다.
특정 서버에 부하가 몰리는 것을 막고, 장애 서버를 제외해 서비스 안정성을 높입니다.
L4 로드밸런서는 IP와 포트 같은 전송 계층 정보를 보고 분산하고, L7 로드밸런서는 HTTP 헤더, URL, 쿠키 같은 애플리케이션 계층 정보를 보고 분산할 수 있습니다.
핵심 키워드
- load balancer
- L4
- L7
- health check
- round robin
- least connection
꼬리질문
질문 L4 로드밸런서와, L7 로드밸런서의 차이에 대해 설명해 주세요.
답변 포인트 L4는 TCP/UDP 레벨에서 빠르게 분산하고, L7은 HTTP 내용을 해석해 경로 기반 라우팅, 쿠키 기반 세션 유지 등을 할 수 있습니다.
질문 로드밸런서 알고리즘에 대해 설명해 주세요.
답변 포인트 round robin, weighted round robin, least connection, least response time, IP hash 등이 있습니다.
질문 일부 장치가 접속 불가능할 때 요청을 보내지 않도록 하려면 어떻게 해야 할까요?
답변 포인트 health check로 서버 상태를 주기적으로 확인하고, 실패한 인스턴스를 target pool에서 제외합니다.
질문 로드밸런서 장치를 사용하지 않고, DNS를 활용해서 유사하게 로드밸런싱을 하는 방법에 대해 설명해 주세요.
답변 포인트 DNS round robin으로 여러 IP를 반환할 수 있습니다.
다만 클라이언트/ISP 캐시와 TTL 때문에 장애 대응과 세밀한 제어가 어렵습니다.
주의할 점
- 로드밸런싱은 분산만이 아니라 health check와 장애 격리가 중요합니다.
19. 서브넷 마스크와, 게이트웨이에 대해 설명해 주세요.
기본 답변
서브넷 마스크는 IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 값입니다.
같은 서브넷에 있는 대상은 직접 통신하고, 다른 네트워크로 나갈 때는 기본 게이트웨이를 통해 패킷을 보냅니다.
게이트웨이는 현재 네트워크에서 다른 네트워크로 나가기 위한 출구 역할을 하는 라우터입니다.
핵심 키워드
- subnet mask
- CIDR
- gateway
- network prefix
- NAT
- routing
꼬리질문
질문 NAT에 대해 설명해 주세요.
답변 포인트 Network Address Translation으로 사설 IP와 공인 IP를 변환하는 기술입니다.
공유기에서 여러 내부 장치가 하나의 공인 IP를 공유할 때 주로 사용됩니다.
질문 서브넷 마스크의 표현 방식에 대해 설명해 주세요.
답변 포인트
255.255.255.0 같은 dotted decimal 방식이나
/24 같은 CIDR prefix length로 표현합니다.
질문 그렇다면, 255.0.255.0 같은 꼴의 서브넷 마스크도 가능한가요?
답변 포인트 일반적인 CIDR
서브넷 마스크는 1비트가 연속되고 이후 0비트가 연속되어야 하므로
255.0.255.0처럼 비연속적인 마스크는 일반적으로 유효하지
않습니다.
주의할 점
- 같은 IP 대역처럼 보여도 subnet mask에 따라 같은 네트워크인지 달라집니다.
20. 멀티플렉싱과 디멀티플렉싱에 대해 설명해 주세요.
기본 답변
멀티플렉싱은 여러 애플리케이션의 데이터를 하나의 네트워크 계층으로 내려보낼 때 식별 정보를 붙여 함께 전송할 수 있게 하는 과정입니다.
디멀티플렉싱은 수신 측에서 포트 번호 등을 보고 적절한 프로세스나 소켓으로 데이터를 전달하는 과정입니다.
전송 계층에서는 포트 번호가 핵심 역할을 합니다.
TCP는 4-tuple을 이용해 연결을 구분하고, UDP는 목적지 포트 중심으로 소켓을 찾습니다.
핵심 키워드
- multiplexing
- demultiplexing
- port
- socket
- TCP 4-tuple
- UDP
꼬리질문
질문 디멀티플렉싱의 과정에 대해 설명해 주세요.
답변 포인트 수신 패킷의 IP, 프로토콜, 포트 정보를 확인하고, OS가 해당 정보를 기준으로 맞는 소켓을 찾아 데이터를 전달합니다.
주의할 점
- 포트는 프로세스 ID가 아니라 통신 endpoint를 구분하는 번호입니다.
21. XSS에 대해서 설명해 주세요.
기본 답변
XSS는 Cross-Site Scripting으로, 공격자가 웹 페이지에 악성 스크립트를 삽입해 다른 사용자의 브라우저에서 실행되게 하는 공격입니다.
쿠키 탈취, 세션 하이재킹, 피싱, 사용자 동작 위조 등이 가능해질 수 있습니다.
Stored XSS, Reflected XSS, DOM-based XSS가 대표 유형입니다.
방어에는 출력 인코딩, 입력 검증, CSP, HttpOnly 쿠키, 위험한 HTML 삽입 제한 등이 필요합니다.
핵심 키워드
- XSS
- Stored XSS
- Reflected XSS
- DOM XSS
- output encoding
- CSP
꼬리질문
질문 CSRF랑 XSS는 어떤 차이가 있나요?
답변 포인트 XSS는 악성 스크립트를 피해자 브라우저에서 실행시키는 공격이고, CSRF는 사용자가 인증된 상태를 이용해 원치 않는 요청을 보내게 하는 공격입니다.
질문 XSS는 프론트엔드에서만 막을 수 있나요?
답변 포인트 아닙니다.
서버의 출력 인코딩, 템플릿 escaping, 입력 검증, CSP, 쿠키 보안 속성 등 프론트와 백엔드 모두에서 방어해야 합니다.
주의할 점
- 입력을 저장할 때만 막는다고 충분하지 않습니다. 실제 HTML/JS/URL/CSS 컨텍스트에 출력될 때 적절한 escaping이 중요합니다.
22. MTU와 IP 단편화, Path MTU Discovery에 대해 설명해 주세요.
기본 답변
MTU는 한 링크가 하나의 프레임에 실어 보낼 수 있는 네트워크 계층 패킷의 최대 크기입니다. 경로 전체에서 사용할 수 있는 Path MTU는 각 홉 MTU의 최솟값이며, Ethernet에서는 1,500바이트가 흔하지만 VPN이나 터널 헤더가 추가되면 실제 경로 MTU는 더 작아질 수 있습니다.
IPv4 패킷이 다음 링크 MTU보다 클 때 DF가 꺼져 있으면 라우터가 패킷을 여러 조각으로 단편화할 수 있고, 최종 목적지가 이를 재조립합니다. DF가 켜져 있으면 라우터는 패킷을 버리고 ICMP Destination Unreachable의 Fragmentation Needed 정보를 송신지로 돌려보냅니다.
IPv6 라우터는 경로 중간에서 단편화하지 않습니다. 패킷이 너무 크면 버리고 ICMPv6 Packet Too Big 메시지를 보내며, 필요한 경우 송신지가 Fragment Header를 사용해 단편화합니다. 따라서 IPv4와 IPv6 모두 송신지가 경로에 맞는 크기를 선택하도록 설계하는 것이 중요합니다.
Path MTU Discovery는 이런 ICMP 정보를 이용해 단편화 없이 전달할 수 있는 크기를 찾고, PLPMTUD는 전송 계층이나 UDP 기반 애플리케이션 같은 packetization layer가 probe를 보낸 뒤 해당 프로토콜이 정의한 전달 확인이나 손실 판단으로 ICMP 차단 환경에서도 크기를 조정합니다. UDP 자체에는 ACK가 없으므로 UDP 기반 애플리케이션은 probe 확인과 재시도 규칙을 애플리케이션 프로토콜에 직접 정의해야 합니다. TCP MSS는 TCP 헤더를 제외한 수신 가능한 세그먼트 payload 크기를 알리는 값으로, PMTU와 함께 실제 전송 크기를 정하는 데 사용됩니다. 단편화는 조각 하나만 잃어도 원본 패킷 전체 전달이 실패하고 처리 비용도 늘기 때문에 가능하면 피하는 편이 좋습니다.
핵심 키워드
- MTU
- IP Fragmentation
- Path MTU Discovery
- DF 플래그
- TCP MSS
꼬리질문
질문 ICMP가 차단되어 PMTUD가 실패하면 어떤 현상이 생기나요?
답변 포인트 작은 패킷은 전달되지만 큰 패킷은 사라지는 PMTU black hole이 발생할 수 있습니다. 필요한 ICMP 메시지를 허용하거나 PLPMTUD를 사용할 수 있습니다.
질문 MTU와 MSS는 어떻게 다른가요?
답변 포인트 MTU는 IP 헤더를 포함한 네트워크 계층 패킷 전체 크기에 대한 링크의 제한입니다. MSS는 TCP 연결에서 상대에게 알리는 TCP payload의 최대 크기로 IP와 TCP 헤더는 포함하지 않습니다.
기본 옵션이 없는 일반적인 IPv4/TCP에서는 MTU에서 최소 IP·TCP 헤더 40바이트를 뺀 값이 흔한 출발점이지만, 옵션과 터널 헤더, 실제 PMTU 때문에 전송 중 사용하는 크기는 달라질 수 있습니다.
질문 IP 단편화가 성능과 안정성에 불리한 이유는 무엇인가요?
답변 포인트 각 조각에 별도 IP 헤더가 붙고 라우터와 수신자가 조각 상태를 처리해야 합니다. 조각 하나가 손실되면 원본 데이터그램을 완성할 수 없어 상위 계층에서 전체 데이터를 다시 보내야 할 수 있습니다.
방화벽과 NAT가 조각을 다루기 어렵고 비정상적인 조각을 이용한 공격 가능성도 있어, 애플리케이션이나 전송 계층에서 경로 크기에 맞게 나누는 방식이 일반적으로 더 안전합니다.
질문 UDP로 Path MTU보다 큰 데이터를 보내야 한다면 어떻게 설계하시겠어요?
답변 포인트 IP 단편화에 의존하기보다 애플리케이션 메시지를 안전한 크기의 조각으로 나누고 조각 번호, 전체 개수, message ID와 무결성 정보를 함께 보냅니다. 수신 측에는 재조립 timeout과 메모리 한도를 둡니다.
가능하면 PLPMTUD로 사용할 수 있는 datagram 크기를 확인하되, UDP 자체에는 전달 확인이 없으므로 probe ACK나 그에 준하는 확인 규칙을 애플리케이션 프로토콜에 정의합니다. 손실 복구가 필요하다면 재전송 단위와 순서 보장 정책도 요구사항에 맞게 정합니다.
주의할 점
- 큰 패킷의 처리 방식은 IP 버전과 DF 설정에 따라 달라집니다.
- VPN과 터널 헤더는 실제 사용 가능한 경로 MTU를 줄입니다.
23. VLAN이 무엇이며 Access Port와 Trunk Port는 어떻게 다른가요?
기본 답변
VLAN은 하나의 물리적 스위치 인프라를 여러 논리적 Layer 2 네트워크로 나누는 기술입니다. VLAN마다 브로드캐스트 도메인이 분리되므로 부서나 서비스별로 브로드캐스트 범위와 네트워크 정책을 나눌 수 있습니다. Ethernet 프레임에는 IEEE 802.1Q 태그의 VLAN ID를 사용해 소속을 표시합니다.
Access Port는 보통 하나의 access VLAN에 단말을 연결합니다. 단말이 보낸 태그 없는 프레임은 포트의 PVID 또는 access VLAN에 소속되고, 단말로 나가는 프레임은 태그를 제거해 일반 단말이 VLAN을 몰라도 통신할 수 있게 합니다.
Trunk Port는 스위치 간 연결이나 스위치와 VLAN-aware 장비 사이에서 여러 VLAN의 프레임을 운반합니다. 허용된 VLAN의 프레임에 802.1Q 태그를 붙여 구분하며, 설정에 따라 native VLAN 프레임은 태그 없이 전달될 수 있습니다. 양쪽 native VLAN이나 allowed VLAN 설정이 다르면 트래픽 누출, 연결 장애와 보안 문제가 생길 수 있습니다.
서로 다른 VLAN은 Layer 2에서 직접 통신할 수 없으므로 라우터나 Layer 3 스위치의 SVI를 통한 inter-VLAN routing이 필요합니다. VLAN과 IP 서브넷이 프로토콜상 반드시 1:1인 것은 아니지만, 브로드캐스트 경계와 라우팅 경계를 일치시키기 위해 실무에서는 보통 VLAN마다 별도 서브넷을 할당합니다.
핵심 키워드
- VLAN
- Broadcast Domain
- IEEE 802.1Q
- Access Port
- Trunk Port
꼬리질문
질문 같은 IP 서브넷의 장치가 서로 다른 VLAN에 있으면 바로 통신할 수 있나요?
답변 포인트 일반적으로 ARP 브로드캐스트가 VLAN 경계를 넘지 않아 직접 통신할 수 없습니다. 보통 VLAN마다 다른 IP 서브넷을 사용합니다.
질문 Trunk Link에서는 VLAN을 어떻게 구분하나요?
답변 포인트 Ethernet 프레임에 802.1Q 태그를 추가하고 그 안의 VLAN ID로 구분합니다. Trunk에는 통과를 허용할 VLAN 목록을 두어 불필요한 VLAN이 링크를 지나지 않게 할 수 있습니다.
Native VLAN은 설정에 따라 태그 없이 전달될 수 있으므로 링크 양쪽 설정이 일치해야 하며, 가능하면 사용하지 않는 VLAN으로 지정하고 사용자 트래픽과 분리합니다.
질문 VLAN과 IP 서브넷은 반드시 1:1이어야 하나요?
답변 포인트 표준이 반드시 1:1을 강제하지는 않으며 하나의 VLAN에 여러 IP 서브넷을 둘 수도 있습니다. 그러나 같은 IP 서브넷을 여러 독립 VLAN에 나누면 ARP 같은 Layer 2 통신이 경계를 넘지 못해 일반적인 호스트 동작과 맞지 않습니다.
운영과 장애 분석을 단순하게 하고 보안 정책과 라우팅 경계를 일치시키기 위해 보통 하나의 VLAN에 하나의 IP 서브넷을 대응시킵니다.
질문 Native VLAN 불일치나 VLAN hopping 위험은 어떻게 줄일 수 있나요?
답변 포인트 Trunk 양쪽의 native VLAN과 allowed VLAN을 명시적으로 일치시키고, 사용하지 않는 포트는 비활성화하거나 별도 VLAN에 둡니다. 단말 포트가 동적으로 trunk가 되지 않도록 access mode를 고정하는 것도 중요합니다.
Native VLAN에 사용자 트래픽을 두지 않고 가능하면 trunk의 모든 운영 VLAN을 태그하며, 허용 VLAN을 최소화해 double-tagging과 잘못된 trunk 협상으로 인한 노출 범위를 줄입니다.
주의할 점
- VLAN은 논리적 분리 기술이지 암호화 기술이 아닙니다.
- VLAN 간 접근 통제에는 ACL이나 방화벽 정책이 추가로 필요합니다.
24. ICMP의 역할과 ping, traceroute의 동작을 설명해 주세요.
기본 답변
ICMP와 ICMPv6는 IP 전달 과정의 오류와 제어 정보를 전달하는 네트워크 계층 프로토콜입니다. Echo Request·Reply, Destination Unreachable, Time Exceeded, IPv6의 Packet Too Big 같은 메시지가 있으며 TCP처럼 연결, 포트나 전달 신뢰성을 제공하지는 않습니다.
ping은 주로 Echo Request를 보내고 Echo Reply가 돌아오는
시간을 측정해 왕복 시간과 손실을 관찰합니다. 다만 방화벽이나 호스트가
Echo 응답만 제한할 수 있으므로 응답이 없다고 대상이나 실제 서비스가
반드시 중단됐다고 결론 내릴 수는 없습니다.
traceroute는 probe의 IPv4 TTL 또는 IPv6 Hop Limit을 1부터
늘려 보냅니다. 각 라우터는 값을 1씩 줄이고 0이 되면 패킷을 버린 뒤 Time
Exceeded를 반환하므로, 도구는 응답한 라우터 주소와 왕복 시간을 홉
순서대로 표시합니다.
목적지 도착을 판단하는 응답은 probe 방식에 따라 다릅니다. 전통적인 UDP 방식은 닫힌 포트의 ICMP Port Unreachable, ICMP 방식은 Echo Reply, TCP 방식은 SYN-ACK나 RST를 사용할 수 있습니다. 반환 경로가 다르거나 라우터가 ICMP를 rate limit하면 일부 홉이 별표로 보이더라도 실제 데이터 전달은 정상일 수 있습니다.
핵심 키워드
- ICMP
- Echo Request/Reply
- Time Exceeded
- TTL/Hop Limit
- traceroute
꼬리질문
질문 ping에 응답하지 않으면 서버가 반드시 다운된 것인가요?
답변 포인트 아닙니다. 방화벽이 ICMP Echo를 차단할 수 있으므로 서비스 포트 연결과 다른 관측 수단을 함께 확인해야 합니다.
질문 traceroute는 운영체제마다 같은 패킷을 사용하나요?
답변 포인트 아닙니다. 전통적인
Unix 계열 구현은 높은 번호의 UDP 포트를, Windows의
tracert는 ICMP Echo를 주로 사용하며 도구 옵션에 따라
TCP probe도 사용할 수 있습니다.
중간 라우터의 Time Exceeded로 홉을 찾는 원리는 같지만, 목적지에서 받는 최종 응답과 방화벽을 통과할 가능성은 probe 종류에 따라 달라집니다.
질문 traceroute 결과에서 중간 홉이 별표로 나오면 그 라우터가 패킷을 전달하지 못한 것인가요?
답변 포인트 반드시 그렇지는 않습니다. 라우터가 데이터 패킷은 정상 포워딩하면서 자신이 생성하는 ICMP 응답만 차단하거나 낮은 우선순위로 rate limit할 수 있습니다.
뒤쪽 홉이나 목적지가 계속 응답한다면 해당 중간 장비는 전달에는 참여했지만 진단 응답을 보내지 않은 것으로 해석할 수 있습니다.
질문 보안을 위해 ICMP를 전부 차단해도 될까요?
답변 포인트 권장하기 어렵습니다. 필요한 오류 메시지까지 차단하면 PMTUD가 실패해 큰 패킷만 사라지는 문제가 생기고 장애 원인 파악도 어려워집니다.
특히 IPv6에서는 Neighbor Discovery와 Packet Too Big 같은 핵심 기능이 ICMPv6에 의존합니다. 메시지 유형과 방향에 따라 필요한 트래픽을 허용하고 rate limit하는 정책이 더 적절합니다.
주의할 점
- ICMP는 포트 번호로 애플리케이션을 구분하는 전송 계층 프로토콜이 아닙니다.
- 모든 ICMP를 차단하면 PMTU 탐색과 장애 진단을 방해할 수 있습니다.