본문으로 건너뛰기
입문20

네트워크 기초: DNS, TCP/IP, 포트가 테스트에 미치는 영향

"연결할 수 없습니다"라는 오류 뒤에는 DNS 문제일 수도, 포트가 막힌 것일 수도, 방화벽 문제일 수도 있다. 네트워크 기초 개념으로 이 가능성들을 구분한다.

  • #네트워크
  • #DNS
  • #TCPIP
  • #포트

개념

도메인 이름은 진짜 주소가 아니다

www.example.com을 브라우저에 입력하면, 실제로는 그 서버의 IP 주소(예: 93.184.216.34)로 연결된다. 사람이 외우기 쉬운 도메인 이름을 실제 IP 주소로 바꿔주는 시스템이 **DNS(Domain Name System)**다.

www.example.com 입력
  → DNS 서버에게 "이 도메인의 IP 주소가 뭐야?" 질의
    → IP 주소 응답 받음
      → 그 IP 주소로 실제 연결

"사이트에 접속이 안 된다"는 문제가 DNS 설정 문제(도메인이 엉뚱한 IP를 가리킴)인 경우가 있다 — 이땐 서버 자체는 멀쩡히 잘 돌고 있어도 사용자는 접속할 수 없다.

TCP/IP — 데이터가 실제로 전달되는 방식

IP 주소를 알았다고 끝이 아니다. 데이터가 인터넷을 거쳐 실제로 전달되려면 규칙이 필요한데, 이게 TCP/IP다. TCP는 데이터를 조각내서 순서대로, 빠짐없이 전달되도록 보장하는 역할을 한다. 이 강의에서는 "TCP/IP가 인터넷 통신의 기본 규약"이라는 정도만 알면 충분하다 — 세부 동작은 네트워크 엔지니어의 영역이다.

포트(Port) — 같은 주소 안의 여러 창구

한 서버(하나의 IP 주소) 안에서도 여러 서비스가 동시에 돌 수 있다. 웹 서버는 보통 80번(HTTP)이나 443번(HTTPS) 포트를, 데이터베이스는 따로 다른 포트(예: PostgreSQL은 5432번)를 쓴다. 포트는 "같은 건물 안의 여러 개 문"이라고 생각하면 된다.

개발 환경에서 localhost:3100처럼 URL 뒤에 콜론과 숫자가 붙는 것을 본 적이 있을 것이다 — 3100이 바로 포트 번호다.

방화벽(Firewall)

특정 포트로 들어오는 연결을 허용하거나 차단하는 장치·설정이다. "스테이징 서버에서는 API가 되는데, 외부에서는 접속이 안 된다"는 문제가 방화벽이 그 포트를 막고 있어서인 경우가 흔하다 — 이건 코드나 애플리케이션 문제가 아니라 네트워크 인프라 설정 문제다.

"연결할 수 없습니다" 오류의 원인 후보

증상가능한 원인
도메인 자체가 안 열림DNS 설정 문제
도메인은 열리는데 특정 기능(API)만 실패특정 포트가 방화벽에 막힘
사내망에서는 되는데 외부에서는 안 됨방화벽이 특정 네트워크만 허용
며칠간 잘 되다가 갑자기 접속 불가DNS 설정이 바뀌었거나 서버 자체가 죽음(레슨 4의 프로세스 문제)

실무에서 왜 필요한가

"연결이 안 됩니다"라는 한 문장짜리 증상 뒤에는 DNS, 포트, 방화벽, 서버 프로세스(레슨 4)까지 여러 계층의 원인이 있을 수 있다. 이 계층을 구분할 수 있는 QA는, 결함 리포트에 "DNS는 정상 응답하나 443 포트로의 연결이 타임아웃됨"처럼 훨씬 구체적인 정보를 담을 수 있고, 이건 인프라 담당자가 원인을 훨씬 빠르게 찾도록 돕는다. 모듈 5(레슨 9)에서 배운 생태계·신뢰 경계 개념도 결국 이 네트워크 연결 위에서 이뤄진다.

실습 과제

과제 1 — 증상 원인 분류하기 (10분)

다음 세 증상을 DNS/포트·방화벽/서버 프로세스 중 가장 관련 깊은 원인 범주와 짝지어본다.

  1. "사이트 주소를 입력하면 아예 '서버를 찾을 수 없습니다'라고 뜬다"
  2. "사이트는 열리는데, 특정 API 호출만 계속 타임아웃된다"
  3. "어제까지 잘 되던 서비스가 오늘 갑자기 아예 응답이 없다"

과제 2 — 포트 개념 적용하기 (10분)

"운영 서버에서는 웹(80/443)과 API(8080) 포트가 열려있지만, 데이터베이스 포트(5432)는 외부에 열려있지 않다"는 설정을 보고, 이게 왜 보안상 바람직한 설정인지 한 문단으로 설명한다.

자가 체크리스트

  • DNS가 도메인 이름을 IP 주소로 바꿔주는 역할을 한다는 것을 설명할 수 있다
  • 포트가 왜 필요한지, 같은 서버에서 여러 서비스를 구분하는 방법임을 설명할 수 있다
  • 방화벽이 특정 포트로의 접근을 막을 수 있다는 것을 설명할 수 있다
  • "연결할 수 없습니다"라는 증상의 여러 원인 후보를 구분할 수 있다

흔한 실수

  • 모든 접속 오류를 "서버가 죽었다"로 단정한다. DNS나 방화벽 설정 문제일 수도 있고, 서버 자체는 멀쩡할 수 있다.
  • 포트 번호를 URL의 이상한 숫자로만 여기고 의미를 신경 쓰지 않는다. 어떤 서비스가 어떤 포트를 쓰는지 알면 문제를 좁히는 데 도움이 된다.
  • "사내망에서는 되는데 외부에서는 안 된다"는 증상을 코드 버그로 의심한다. 방화벽이 특정 네트워크만 허용하는 설정일 가능성을 먼저 점검해야 한다.

참고 자료