본문으로 건너뛰기
입문약 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의 이상한 숫자로만 여기고 의미를 신경 쓰지 않는다. 어떤 서비스가 어떤 포트를 쓰는지 알면 문제를 좁히는 데 도움이 된다.
  • "사내망에서는 되는데 외부에서는 안 된다"는 증상을 코드 버그로 의심한다. 방화벽이 특정 네트워크만 허용하는 설정일 가능성을 먼저 점검해야 한다.

참고 자료

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

IP — 아이피 주소
인터넷에 연결된 기기마다 붙는 번호.
DNS — 도메인 이름 체계
사람이 읽는 주소를 컴퓨터가 쓰는 번호로 바꿔 주는 전화번호부.
TCP — 전송 제어 규약
데이터를 빠뜨리지 않고 순서대로 보내는 약속. 웹도 이 위에서 돌아간다.
HTTP — 하이퍼텍스트 전송 규약
웹에서 요청과 응답을 주고받는 약속. "무엇을 달라"고 보내면 "여기 있다" 또는 "그런 건 없다"가 돌아온다.
HTTPS — 암호화된 웹 전송
웹 통신을 암호로 감싼 것. 중간에서 누가 들여다봐도 내용을 못 읽는다.
PostgreSQL — 포스트그레에스큐엘
널리 쓰이는 무료 데이터 저장소 제품 중 하나.
URL — 인터넷 주소
웹에서 무언가의 위치를 가리키는 주소 한 줄.
API — 응용 프로그램 인터페이스
프로그램끼리 주고받는 창구. 사람이 화면 버튼을 누르는 대신, 프로그램이 정해진 주소로 요청을 보내 답을 받는다.
QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.

용어집 전체 보기