[네트워크] IP(인터넷 프로토콜)

artp·2025년 9월 11일

cs

목록 보기
14/16
post-thumbnail

인터넷 프로토콜(IP)

네트워크에서 수많은 컴퓨터들이 서로 데이터를 주고받기 위해서는 규칙(프로토콜, Protocol)이 필요합니다. 그중에서 가장 기본이 되는 것이 바로 IP(Internet Protocol)입니다.

IP는 인터넷 상에서 패킷(Packet)이라는 작은 데이터 조각을 목적지까지 전달하는 역할을 합니다. 하지만 IP만으로는 완벽한 통신이 불가능하기 때문에 다른 프로토콜들과의 조합이 필요합니다.

IP의 동작 원리

1. 클라이언트에서 서버로 패킷 전달

클라이언트가 서버에 메시지를 보낼 때, 데이터는 패킷으로 나누어집니다.
예를 들어 Hello, world!라는 메시지를 보낸다고 하면, 패킷은 출발지와 목적지 정보를 포함하여 네트워크를 거쳐 서버로 전달됩니다.

데이터를 패킷(Packet)이라는 작은 조각으로 나누고, 각 패킷에 주소 정보(출발지, 목적지 IP)를 붙여 목적지까지 전달하는 것입니다. 이 과정을 라우팅(Routing)이라고 부르며, 중간에 있는 여러 라우터(Router)들이 이정표 역할을 합니다. 패킷은 여러 개의 노드(라우터)를 거쳐 최종 목적지 서버에 도착합니다.

  1. 데이터 패킷화: 브라우저가 보내려는 요청 메시지("웹페이지 보여줘!")는 여러 개의 패킷으로 쪼개집니다.
  2. IP 헤더 추가: 각 패킷 앞부분(헤더)에는 다음과 같은 주소 정보가 기록됩니다.
    • 출발지 IP: 100.100.100.1 (내 컴퓨터)
    • 목적지 IP: 200.200.200.2 (웹사이트 서버)
    • 데이터: "웹페이지 보여줘!"등의 데이터
  3. 라우팅: 패킷은 인터넷 망의 여러 라우터를 거치게 됩니다. 각 라우터는 패킷의 목적지 IP를 보고, 가장 효율적인 다음 경로로 패킷을 전달합니다. 마치 우체국에서 주소를 보고 편지를 분류하는 것과 같습니다.
  4. 서버 도착: 수많은 라우터를 거친 패킷들이 최종 목적지인 웹 서버에 도착합니다.

2. 서버에서 클라이언트로 응답 패킷 전달

서버는 받은 요청을 처리한 후, 응답 데이터를 다시 패킷으로 만들어 클라이언트에게 보냅니다. 이때는 출발지와 목적지 IP가 반대가 됩니다.

  • 출발지 IP: 200.200.200.2 (웹사이트 서버)
  • 목적지 IP: 100.100.100.1 (내 컴퓨터)
  • 데이터: 웹페이지 내용의 일부 등

이 과정을 통해 양방향 통신이 이루어집니다.

IP 프로토콜의 한계

IP는 데이터를 보내는 역할에만 집중하도록 설계되었기 때문에, 그 자체만으로는 완벽한 통신을 보장하지 못하는 몇 가지 명확한 한계를 가집니다.

1. 비연결성

IP는 데이터를 보내기 전에 상대방이 받을 준비가 되었는지, 또는 네트워크 상태가 양호한지 확인하지 않습니다. 그냥 목적지 주소만 보고 패킷을 전송할 뿐입니다.

편지를 부칠 때 상대방이 집에 있는지, 이사를 갔는지 확인하지 않고 부치는 것과 같습니다. 서버 컴퓨터가 꺼져 있거나 네트워크에 연결되어 있지 않아도, 클라이언트는 일단 패킷을 보냅니다.

  • IP는 상대방이 실제로 패킷을 받을 수 있는 상태인지 확인하지 않습니다.
  • 서버가 꺼져 있어도 패킷은 전송됩니다.

2. 비신뢰성

IP는 전송한 패킷이 중간에 사라지거나, 순서가 뒤바뀌어 도착하더라도 책임지지 않습니다.

  • 패킷 소실: 네트워크가 혼잡하거나 라우터에 문제가 생기면 패킷이 그냥 사라져버릴 수 있습니다. IP는 패킷이 잘 도착했는지 확인하지 않으므로, 보낸 쪽에서는 이 사실을 알 수 없습니다.

  • 패킷 순서 보장 불가: 1, 2, 3 순서로 보낸 패킷들이 서로 다른 경로를 통해 전달될 수 있습니다. 이 경우, 서버에는 2, 1, 3처럼 뒤죽박죽 순서로 도착할 수 있습니다. IP는 원래 순서가 어땠는지 신경 쓰지 않습니다.

3. 프로그램 구분 불가

하나의 컴퓨터(하나의 IP 주소)에서는 웹 서버, 게임, 메신저 등 여러 프로그램이 동시에 실행될 수 있습니다. IP 주소만으로는 패킷이 이 중 어떤 프로그램에게 온 것인지 구분할 수 없습니다.

IP 주소는 집 주소와 같은데, 아파트로 비유했을 때 동호수 정보 없이 건물 주소만으로 편지를 보내면, 이 편지를 어느 집에 전달해야 할지 알 수 없는 것과 같습니다.

한계를 극복하기 위한 방법: TCP와 포트(PORT)

IP의 이러한 한계들은 상위 계층의 프로토콜, 특히 TCP(Transmission Control Protocol)와 포트(Port) 번호를 통해 보완됩니다.
데이터 패킷은 사실 [ IP 헤더 [ TCP 헤더 [ 데이터 ] ] ] 와 같은 계층적 구조로 감싸여 있습니다.

1. TCP의 역할 (신뢰성 담당)

  • 연결 지향: 데이터를 보내기 전, 3-way-handshake라는 과정을 통해 상대방과 통신 경로를 미리 설정합니다. (비연결성 문제 해결)
  • 순서 보장 및 오류 검증: 패킷에 순서 번호를 붙여서 뒤죽박죽 도착하면 바로잡고, 빠진 패킷이 있으면 재전송을 요청합니다. (비신뢰성 문제 해결)

2. 포트(Port)의 역할 (프로그램 구분)

IP 주소가 '아파트 건물 주소'라면, 포트 번호는 '동호수'입니다. 웹 서버는 80번 포트, 보안 웹 서버(HTTPS)는 443번 포트를 사용하는 것처럼 각 프로그램은 고유한 포트 번호를 가집니다.

TCP 헤더에 이 포트 번호가 포함되어 있어, 서버는 패킷을 정확한 프로그램에 전달할 수 있습니다. (프로그램 구분 문제 해결)

신뢰성보다 속도가 더 중요한 통신(실시간 영상 스트리밍, 온라인 게임 등)에서는 TCP 대신 UDP(User Datagram Protocol)가 사용되기도 합니다. UDP는 TCP의 신뢰성 기능 대부분을 생략하여 전송 속도를 높인 프로토콜입니다.

정리

  • IP는 인터넷 통신의 기본 주소 체계로, 패킷을 목적지 '컴퓨터'까지 전달하는 역할을 합니다.
  • 하지만 IP 자체는 비연결성, 비신뢰성이라는 명확한 한계를 가지고 있습니다.
  • 이러한 한계는 상위 프로토콜인 TCP가 연결 관리, 순서 보장, 오류 검증 등을 통해 보완해 줍니다.
  • 또한, 포트(Port) 번호를 사용해 IP 주소 내에서 실행 중인 특정 '프로그램'을 구분하여 데이터를 최종 전달합니다.
profile
donggyun_ee

0개의 댓글