본문 바로가기

패킷과 포트 번호: 하나의 인터넷 회선으로 여러 서비스가 동시에 동작하는 비밀

📑 목차

    인터넷 회선 하나로 왜 이렇게 많은 일이 될까

    집이나 회사에서 사용하는 인터넷 회선은 보통 하나이다. 그런데 이 한 회선 위에서

    • 웹 서핑,
    • 유튜브 동영상 재생,
    • 메신저,
    • 화상 회의,
    • 클라우드 파일 동기화
      가 동시에 돌아가도 대체로 큰 문제 없이 동작한다.

    겉으로 보면 “선 하나”에 불과한데, 어떻게 서로 다른 네트워크 서비스들이 섞이지 않고 각자 제자리로 정확히 도착하는지 궁금해질 수 있다. 이 비밀을 이해하려면 패킷, 포트 번호, TCP/IP, 인터넷 회선이라는 키워드를 알아야 한다.

    이 글에서는 전산학 비전공자도 이해할 수 있도록

    • 인터넷에서 데이터를 잘게 나누는 단위인 패킷이 무엇인지,
    • 하나의 IP 주소 안에서 여러 포트 번호가 왜 필요한지,
    • 이 구조 덕분에 하나의 인터넷 회선으로 여러 서비스가 동시에 동작하는 원리가 무엇인지,
    • 실생활에서 포트 번호가 문제가 될 때 어떤 증상이 나타나는지
      를 전산학 입문서 수준으로 차근차근 설명한다.

    패킷과 포트 번호의 개념과 기본 원리

    1. 패킷(Packet): 인터넷에서 오가는 작은 데이터 상자

    인터넷에서는 데이터를 한 번에 길게 보내지 않는다. 대신 패킷(Packet)이라고 부르는 작은 조각으로 잘라서 보낸다.

    패킷은 크게 두 부분으로 구성된다.

    1. 헤더(Header):
      • 보내는 쪽 IP 주소, 받는 쪽 IP 주소, 포트 번호, 프로토콜 정보 등 “배달에 필요한 정보”가 들어 있는 부분이다.
    2. 데이터(Data, Payload):
      • 실제로 전달하려는 내용, 예를 들어 웹 페이지 조각, 채팅 메시지 일부, 동영상 조각 등이 들어 있다.

    택배 상자를 떠올리면 이해하기 쉽다.

    • 상자 겉에 적힌 주소, 받는 사람 이름, 연락처가 패킷의 헤더 역할을 한다.
    • 상자 안에 들어 있는 물건이 패킷의 데이터에 해당한다.

    인터넷 회선(물리적인 선) 위에서는 이런 패킷들이 순서대로, 혹은 섞여서 흘러간다. 중간의 라우터, 스위치 같은 네트워크 장비들은

    • 패킷의 헤더에 있는 IP 주소를 보고 “어느 방향으로 보내야 하는지”를 판단한다.

    이렇게 패킷 단위로 데이터를 나누면 다음과 같은 장점이 있다.

    • 여러 사람이 동시에 인터넷을 사용할 때, 패킷을 조금씩 번갈아 보내면서 회선을 공정하게 나눌 수 있다.
    • 중간에 어떤 패킷이 유실되더라도 해당 부분만 다시 보내면 되므로, 전체를 다시 보낼 필요가 없다.

    2. 포트 번호(Port Number): 같은 주소 안의 여러 서비스 구분자

    IP 주소는 “어느 컴퓨터인가”를 가리킨다. 하지만 실제로 한 컴퓨터 안에는

    • 웹 서버,
    • 메일 서버,
    • 파일 전송 서버,
    • 데이터베이스 서버
      등 여러 서비스(프로그램)가 동시에 돌아갈 수 있다.

    이때 필요한 것이 바로 포트 번호(Port Number)이다.

    포트 번호는 간단히 말해 “한 IP 주소 안에서 실행 중인 여러 서비스(프로그램)를 구분하기 위한 번호”이다.

    비유를 들어 보면 다음과 같다.

    • IP 주소: 아파트 동과 동의 주소(예: “서울시 ○○구 ○○아파트 101동”)
    • 포트 번호: 동 안에 있는 개별 호실 번호(예: 101호, 102호, 1503호)

    택배 기사 입장에서는

    • 아파트 주소를 알아야 어느 건물인지 알 수 있고,
    • 동과 호실 번호를 알아야 정확한 집 앞까지 갈 수 있다.

    인터넷에서도 마찬가지로,

    • IP 주소가 “어느 컴퓨터인지”를 알려 준다면,
    • 포트 번호는 “그 컴퓨터 안의 어느 서비스인지”를 알려 준다.

    대표적인 포트 번호 예시는 다음과 같다.

    • 80번 포트: HTTP 웹 서비스(암호화되지 않은 웹)
    • 443번 포트: HTTPS 웹 서비스(암호화된 웹)
    • 25번 포트: SMTP 메일 전송
    • 22번 포트: SSH 원격 접속

    운영체제는 포트 번호별로 프로그램을 연결해 두고,

    • 특정 포트로 들어오는 패킷은 해당 포트를 사용하는 프로그램에게 전달한다.
    패킷과 포트 번호: 하나의 인터넷 회선으로 여러 서비스가 동시에 동작하는 비밀
    하나의 IP 주소에서 여러 포트 번호로 서비스가 나뉘는 구조도

    3. TCP/IP와 포트 번호: 연결을 구분하는 실제 기준

    실제 인터넷 통신에서는 TCP/IP 또는 UDP/IP라는 프로토콜이 사용된다. 여기서는 복잡한 내부 구조 대신, 연결을 구분하는 기준만 이해하면 충분하다.

    TCP/IP에서 하나의 연결을 구분할 때는 다음 정보들을 함께 고려한다.

    • 출발지 IP 주소
    • 출발지 포트 번호
    • 도착지 IP 주소
    • 도착지 포트 번호
    • 사용 프로토콜(TCP 또는 UDP)

    이 조합을 통해 운영체제는

    • “이 패킷은 A 프로그램이 열어둔 연결에 속한다”
    • “이 패킷은 B 프로그램이 열어둔 연결에 속한다”
      를 정확히 판별할 수 있다.

    예를 들어, 같은 웹 브라우저가

    • 탭 1: 유튜브 동영상(서버 1, 443번 포트)
    • 탭 2: 뉴스 사이트(서버 2, 443번 포트)
    • 탭 3: 인터넷 뱅킹(서버 3, 443번 포트)
      를 동시에 열어 두었다고 하자.

    브라우저와 운영체제는 각 탭마다

    • 서로 다른 출발지 포트 번호,
    • 서로 다른 도착지 IP 주소
      를 사용하여 세 연결을 구분한다.

    따라서 같은 인터넷 회선 하나를 사용하더라도,

    • 패킷의 헤더에 있는 IP 주소와 포트 번호 조합을 기준으로
    • 수십, 수백 개의 연결을 동시에 유지하고 구분할 수 있다.

    하나의 인터넷 회선에서 여러 서비스가 동시에 동작하는 실제 모습

    1. 집에서 자주 보는 상황으로 이해하는 패킷과 포트 번호

    가정용 인터넷 환경을 떠올려 보자. 보통 다음과 같은 상황이 동시에 발생한다.

    • 누군가는 PC로 웹 서핑과 인터넷 뱅킹을 한다.
    • 다른 사람은 스마트폰으로 유튜브를 본다.
    • TV에서는 OTT 스트리밍 서비스로 드라마를 재생한다.
    • 백그라운드에서는 클라우드 동기화 프로그램이 파일을 업로드한다.

    겉으로 보면 “집 안에 인터넷 회선은 하나인데, 이렇게 많은 네트워크 서비스가 동시에 동작해도 괜찮을까”라는 의문이 생길 수 있다.

    실제로는 다음과 같은 일이 일어난다.

    1. 각 기기는 공유기를 통해 하나의 인터넷 회선에 연결된다.
    2. PC, 스마트폰, TV 등 각 기기에서 실행 중인 프로그램은 서로 다른 포트 번호를 사용해 서버와 통신한다.
    3. 모든 데이터는 작은 패킷 단위로 잘려, 시간 축에서 번갈아가며 같은 회선을 타고 나간다.
    4. 인터넷 망과 목적지 서버에서는 패킷 헤더에 적힌 IP 주소와 포트 번호를 보고,
      • 어떤 서버, 어떤 서비스로 보내야 하는지 구분하여 처리한다.

    이 과정은 매우 빠르게 반복되며, 사람 눈에는 단지 “동시에 여러 서비스를 쓰는 것처럼” 보일 뿐이다.

    2. 공유기와 NAT: 여러 기기 트래픽을 한 공인 IP로 모아 보내는 구조

    집에서는 보통 공유기(라우터)를 사용한다. 공유기는

    • 내부에서는 여러 기기에 사설 IP 주소(예: 192.168.0.x)를 나누어 주고,
    • 외부 인터넷에는 하나의 공인 IP 주소로 연결된다.

    이때 공유기는 NAT(Network Address Translation)라는 기능을 사용하여,

    • 내부 여러 기기가 보내는 패킷을
    • 하나의 공인 IP 주소 + 각기 다른 출발지 포트 번호 조합으로 바꾸어 인터넷으로 내보낸다.

    예를 들어,

    • 내부 PC A: 192.168.0.10:50000 → 외부 서버1: 443
    • 내부 스마트폰 B: 192.168.0.20:51000 → 외부 서버2: 443

    이렇게 두 기기가 동시에 통신하더라도, 공유기 바깥에서 보면

    • 공인 IP:203.0.113.5:40001 → 서버1:443
    • 공인 IP:203.0.113.5:40002 → 서버2:443
      처럼 공인 IP는 같지만 포트 번호가 다른 연결로 보인다.

    공유기는 내부에 NAT 테이블을 가지고 있어

    • “40001번 포트로 나간 연결은 원래 192.168.0.10:50000에서 온 것”
    • “40002번 포트로 나간 연결은 원래 192.168.0.20:51000에서 온 것”
      을 기록해 둔다.

    그래서 외부 서버에서 응답이 돌아오면, 공유기는

    • 도착한 패킷의 포트 번호를 보고
    • NAT 테이블을 참조하여
    • 원래의 내부 기기와 포트로 되돌려 준다.

    이 구조 덕분에

    • 하나의 인터넷 회선, 하나의 공인 IP 주소로도
    • 집 안 여러 기기가 동시에 다양한 네트워크 서비스를 사용할 수 있다.
    여러 내부 사설 IP를 가진 기기에서 나온 패킷이 공유기에서 서로 다른 포트 번호로 매핑되어 하나의 공인 IP로 나가고, 다시 내부 기기로 돌아오는 과정을 보여주는 NAT 다이어그램
    공유기에서 여러 내부 기기의 패킷을 포트 번호로 구분하여 하나의 공인 IP로 변환하는 흐름도

    3. 포트 번호 문제로 발생하는 대표적인 증상들

    포트 번호와 패킷 구조를 이해하면, 실제로 네트워크 문제가 발생했을 때 원인을 추측하는 데 도움이 된다. 대표적인 사례를 몇 가지 살펴본다.

    1. 웹은 되는데 특정 프로그램만 접속이 안 되는 경우
      • 웹 브라우저(80, 443 포트)는 잘 동작하지만,
      • 게임, 메신저, 원격 데스크톱은 접속이 되지 않는 경우가 있다.
      • 이 경우 해당 프로그램이 사용하는 포트 번호가 방화벽이나 공유기 설정에서 차단되어 있을 가능성이 크다.
    2. 외부에서 우리 집/회사 서버에 접속이 안 되는 경우
      • NAS, CCTV, 원격 데스크톱 서버 등을 집이나 회사에 두고 외부에서 접속하려면,
      • 공유기에서 포트 포워딩(Port Forwarding) 설정을 통해
        • 특정 포트로 들어오는 외부 패킷을 내부 IP로 전달하도록 해야 한다.
      • 이 설정이 없으면 패킷이 공유기에서 어디로 가야 할지 몰라 차단된다.
    3. 같은 네트워크인데 프로그램끼리 충돌하는 경우
      • 하나의 PC에서 이미 어떤 프로그램이 8080 포트를 사용 중인데,
      • 다른 프로그램이 같은 포트를 쓰려고 하면 “포트를 열 수 없다”는 오류가 발생한다.
      • 포트 번호는 한 기기 안에서 동일한 포트에 동시에 하나의 서버 프로그램만 바인딩할 수 있기 때문이다.
    4. 보안 관점에서의 포트 관리
      • 외부에서 접근할 필요가 없는 포트는 방화벽에서 막는 것이 일반적인 보안 정책이다.
      • 예를 들어, 데이터베이스 포트를 인터넷에 그대로 열어 두면 공격 대상이 될 수 있다.
      • 따라서 “어떤 서비스가 어떤 포트를 사용하는지”를 이해하는 것은 보안 설정을 할 때도 중요하다.

    패킷과 포트 번호를 이해하면 인터넷 구조가 단순해진다

    이 글에서는 패킷과 포트 번호를 중심으로, 하나의 인터넷 회선으로 여러 서비스가 동시에 동작하는 비밀을 살펴보았다. 핵심 내용을 정리하면 다음과 같다.

    1. 패킷은 인터넷에서 오가는 데이터의 기본 단위이다.
      • 헤더에는 IP 주소, 포트 번호 등 배달에 필요한 정보가 들어 있고,
      • 데이터 부분에는 실제 내용이 담긴다.
    2. 포트 번호는 한 IP 주소 안에서 여러 서비스를 구분하는 번호이다.
      • IP는 “어느 컴퓨터인가”, 포트 번호는 “그 컴퓨터의 어느 서비스인가”를 나타낸다.
      • 웹, 메일, 원격 접속 등 각 서비스는 서로 다른 포트를 사용한다.
    3. TCP/IP는 IP 주소와 포트 번호 조합을 사용해 여러 연결을 동시에 구분한다.
      • 출발지/도착지 IP와 포트 번호를 조합해,
      • 하나의 인터넷 회선 위에서 수많은 연결을 서로 섞이지 않게 유지한다.
    4. 공유기와 NAT 덕분에 여러 기기가 하나의 공인 IP와 인터넷 회선을 동시에 사용할 수 있다.
      • 공유기는 내부 사설 IP와 포트 번호를 공인 IP와 다른 포트 번호로 변환하여,
      • 외부에서 볼 때도 연결들을 정확히 구분할 수 있게 한다.
    5. 포트 번호를 이해하면 네트워크 문제와 보안을 더 논리적으로 다룰 수 있다.
      • 특정 서비스만 접속이 안 되는 문제,
      • 원격 접속이 되지 않는 문제,
      • 방화벽과 포트 포워딩 설정 등에서
      • “어떤 포트가 어디에서 막히고 있는지”를 기준으로 원인을 추적할 수 있다.

    이제 “왜 인터넷 선 하나로 이렇게 많은 서비스가 동시에 동작하는가”라는 질문에 대해,

    • 데이터가 패킷으로 잘게 나뉘어,
    • 포트 번호TCP/IP 조합으로 서로 다른 네트워크 서비스가 구분되기 때문에 가능하다는 설명을 할 수 있을 것이다.

    다음 단계에서 자연스럽게 이어질 수 있는 학습 주제는 예를 들면 다음과 같다.

    • “방화벽과 포트 필터링: 어떤 트래픽을 허용하고 막을지 결정하는 기준”
    • “포트 포워딩과 DMZ: 외부에서 내부 서버에 안전하게 접속하는 방법”

    이 주제들을 함께 살펴보면, 전산학에서 중요한 영역인 네트워크 구조와 보안 설계를 더 깊이 이해하는 데 도움이 될 것이다.