IP에 대해 알아보자

IP(Internet Protocol)

IP의 기본 개념과 어떻게 동작하고 있는지에 대해 알아보고자 한다.

IP란?

IP란 인터넷 프로토콜, 이름 그대로 인터넷에서 데이터를 주고 받는 방법을 제어하는 규칙이다. 인터넷에 연결되어 있는 모든 장치들은 식별을 위해서 고유한 IP 주소를 갖는다.

데이터 패킷이 네트워크를 타고 이동할 때 올바른 대상에 도착할 수 있도록 규칙을 정한 것이 바로 IP, 인터넷 프로토콜이다. 그렇다면, 패킷이란 무엇일까?

패킷 (Packet)

패킷이란?

인터넷으로 상대방에게 사진을 전송할 때, 사진은 어떻게 전송될까? 사진은 하나로 바로 전송되는 것이 아니라 패킷 단위로 나눠진 다음 인터넷을 통해 전송된다. 그리고 상대방은 해당 패킷들이 조합된 상태의 사진을 받게 되는 것이다.

패킷을 왜 사용해야할까?

그럼, 패킷은 왜 사용해야할까?

인터넷에는 대역폭이라는 것이다. 대역폭이란, 신호를 전송할 수 있는 주파수 범위 혹은 폭을 말한다. 예를 들어서, 도로가 4차선인데 한 차가 2차선을 차지하고 달리면 정체가 일어날 수 있다. 이렇듯, 대역폭에 맞추지 않고 통째로 보내게 되면, 대역폭을 너무 많이 차지하게 되어 데이터 흐름이 원활하게 이루어지지 않을 수 있다. 이런 것을 방지하기 위해 패킷을 사용하는 것이다.

패킷의 구조

패킷은 헤더와 페이로드로 이루어져있다. 페이로드에 데이터가 들어있다. 사진으로 예시를 들자면 한 사진은 수천개의 패킷으로 이루어져있고, 각 패킷의 페이로드에는 사진의 조각이 들어있는 것이다.

패킷의 헤더에는 원본과 많은 필드를 포함하고 있는데, 구성 요소는 다음과 같다.

  • 헤더 길이: 페이로드가 시작하는 위치를 알기 위해, 헤더의 길이를 지정해 준다.
  • 버전: 현재 사용 중인 IP 버전
  • TTL(Time To Live): 이 패킷이 네트워크에서 남아있을 수 있는 시간, 패킷이 네트워크 상에서 영원히 순회하는 것을 방지하기 위해 사용한다.
  • 프로토콜: 패킷의 데이터 부분이 전달되는 전송 계층 프로토콜 (TCP or UDP)
  • 소스주소: 패킷을 보내는 장치의 IP 주소
  • 대상주소: 패킷이 전송되는 장치의 IP 주소

패킷 vs 데이터그램

네트워크에 대해 공부하다보면 데이터그램이라는 개념이 많이 등장한다.

패킷은 네트워크를 통해 전송되는 데이터의 단위를 말한다. 데이터그램은 패킷의 한 형태로 데이터그램만의 특징을 가지고 있는데 이는 다음에 더 자세히 공부해보고자 한다.

IP의 특징: 비신뢰성 / 비연결성

IP의 주된 역할은 패킷을 정해진 목적지까지 전달하는 것이다. 외부에 패킷이 들어오면 내 IP 주소와 맞는지 비교하고, 일치하지 않으면 다른 호스트로 전달한다.

IP는 패킷의 전달을 책임지는 프로토콜이지만, 패킷의 손실이나 중복과 같은 문제는 확인하지 않는다. 그렇기 때문에 IP는 비신뢰성비연결성이라는 특징을 가진다.

비연결성

해당 데이터를 받을 사람이 있는지 고려하지 않는 것

IPv4 vs IPv6

IP 주소에는 IPv4, IPv6 두 가지의 종류가 있다. 대부분 기본적인 IP 주소는 IPv4를 말한다.

IPv4

IPv4는 IP Version 4 라는 뜻으로, 전 세계적으로 첫번째로 사용된 인터넷 프로토콜이다.

1
61.74.181.49

IPv4 주소는 위와 같이 표기가 된다. 8비트씩 4자리로 구성된다.

IPv4는 약 42억 9천개의 주소를 가질 수 있는데, 전 세계적으로 IP 주소를 많이 사용하다보니 IP 주소가 고갈될 위기에 처하여 등장한 것이 바로 IPv6이다.

IPv6

IPv6는 IP Version 6 라는 뜻으로, 16비트씩 8자리로 구성된다.

1
2001:0DB8:1000:0000:0000:0000:1111:2222

기존의 주소 체계를 변경하는 데 비용이 많이 들어서 아직 완전히 상용화되지는 않았다.

네트워크 주소, 호스트 주소

먼저, 네트워크란 데이터를 통신하는 과정에서 공유기를 사용하는 범위이며, 이 네트워크에 연결된 각각의 장치를 호스트라고 한다.

데이터를 통신할 때, 어떻게 특정 컴퓨터를 찾을까? 이는 IP 주소를 통해 알 수 있다.

199.168.123.231 라는 IP 주소에서 .132 가 호스트 부분이가 네트워크 부분이다.

즉, 해당 네트워크를 찾는 방법은 IP 주소의 맨 앞을 통해 알 수 있고, 그 안에서 IP 주소의 호스트 부분을 통해 해당 컴퓨터로 찾아갈 수 있는 것이다.

네트워크에서 사용할 수 있는 IP 주소 중 맨 첫 번째 주소인 0과 맨 마지막 주소인 255는 호스트 주소로 사용할 수 없다. 192.168.123.0은 네트워크 그 자체의 주소이고, 192.168.233.255는 브로드캐스트를 위한 주소이기 때문이다.

브로드캐스트 주소

특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야할 때 사용하는 주소

공인 IP vs 사설 IP

image

IP 주소는 부족 문제를 해결하기 위해 공인 IP와 사설 IP로 나누어 할당하고 있다.

IP 주소는 누군가가 임의로 부여하는 것이 아니라, ICANN이라는 기관이 국가별로 사용할 IP를 제공해주고, 우리나라에서는 한국인터넷진흥원에서 국내 IP 주소들을 관리하고 있다.

SKT, KT, LG 와 같은 통신업체들이 IP 주소를 부여받고, 우리는 해당 통신업체게 가입함으로써 IP 주소를 제공 받아 인터넷을 사용하게 되는 것이다.

공인 IP

공인 IP는 통신업체들이 사용자에게 할당하여 공유기가 인터넷과 통신하는 역할을 하는 외부 IP 주소이다.

공인 IP 주소는 사용자의 전체 네트워크에 적용되기 때문에 동일한 인터넷 연결을 사용하는 장치들은 같은 공인 IP 주소를 갖게 된다. 즉, 동일한 공유기를 통해 인터넷 연결을 하게 된다면, 해당 장치들은 모두 같은 공인 IP 주소를 사용하는 것이다.

사설 IP

공유기에 연결하고 있는 컴퓨터, TV 등에 공유기가 할당한 내부 IP를 사설 IP 라고 한다. 사설 IP는 로컬 네트워크에 적용되는 것이기 때문에 다른 IP 주소와 중복이 될 수도 있다.

예를 들면, A 아파트에 101동, 102동, 103동 / B 아파트에 101동, 102동, 103동이 있는 것처럼, 아파트 이름은 공인 IP이고 호수는 사설 IP인 것이다.

사설 IP는 자신의 네트워크에서만 사용되기 때문에 다른 기기의 IP 주소와 중복되더라도 문제가 없다.

인터넷에 연결된 모든 장치에는 공인 IP와 사설 IP 모두 부여된다. 즉, 네트워크에 연결하는 공유기의 공인 IP와 해당 공유기를 사용함으로써 공유기가 할당하는 사설 IP 주소를 가지는 것이다.

내 컴퓨터의 IP가 궁금하다면, 인터넷에 my ip를 검색하여 알 수 있다.

image

IP 주소가 위 사진 안에 있다면, 사설 IP이다.

사설 IP를 할당받은 기기들은 다른 공유기에 접근할 수 있지만, 공유기들은 사설 IP로 접근할 수 없다. 왜냐하면 101동 처럼 호수만 보고는 컴퓨터를 찾으러 갈 수 없기 때문이다.

IP는 절대 고유해야 외부에서 해당 IP를 찾아갈 수 있다. 그렇기 때문에 웹서비스를 하는 서버들은 공인 IP를 가지고 있다.

그렇다면 사설 IP로는 절대 접근할 수 없을까?

Port Forwarding

image

사설 IP로 접근하기 위한 방법은 존재한다. 그것은 바로 내부 IP를 Port로 연결하는 것이다. 공유기 설정으로 공인 IP에 포트들을 개방해서 내부 사설 IP마다 하나씩 연결할 수 있다.

위 사진처럼 :101, :102, :103 이런식으로 포트를 개방하는 것이다. 이런 방식을 Port Forwarding이라고 한다.

예를 들어, 공인 IP가 123.4.5.234 이고 포트가 101이라면 123.4.5.234:101 으로 외부에서 내 컴퓨터에 접근할 수 있다.

DMZ (Demilliterized Zone)

사설 IP에 접근하는 방법으로는 DMZ도 있다. 해당 방법은 공인 IP의 모든 포트를 내부의 특정 사설 IP로 몰아주는 것이다.

하지만 해당 방법은 모든 포트를 다 개방하는 것이기 때문에 보안상 위험이 있다.

고정 IP vs 유동 IP

IP는 또 다른 기준으로 나눌 수 있다. 공인 IP와 사설 IP 모두 고정 IP/유동 IP가 될 수 있다.

활용할 수 있는 IP에 제한이 있기 때문에 인터넷을 사용하는 모든 공유기에게 고유의 IP를 제공하기는 어려워, 변하지 않고 고정되는 IP와 변하는 IP로 나뉘어지는 것이다.

고정 IP

변하지 않고 컴퓨터에 고정적으로 부여되는 IP이다. 한 번 부여되면 반납할 때까지 다른 장비에 부여할 수 없는 IP로 보안성이 우수하여 보안이 필요한 업체나 기관에서 사용한다.

유동 IP

인터넷 사용자 모두에게 IP를 하나씩 다 제공해줄 수는 없기 때문에, 일정한 주기 또는 사용자들이 인터넷에 접속할 때마다 임시로 발급해주는 것이 유동 IP이다. 대부분 사용자들은 유동 IP를 사용한다.

유동 IP는 주기적으로 IP가 바뀌기 때문에, 해킹에 대하여 안전한 면이 있다고 할 수 있다.

그렇다면 포트 포워딩을 통해 외부에서 사설 IP로 접근할 수 있도록 했지만, 해당 사설 IP가 유동 IP라서 IP가 변경되면 어떻게 될까?

DDNS (Dynamic DNS)

먼저, DNS란 IP를 domain으로 연결해주는 것을 말한. 예를 들면, 184.51.104.190 이라는 IP 주소가 www.naver.com 으로 연결되는 것처럼 말이다! DNS에 대해 더 자세한 것은 여기에서 확인할 수 있다.

Dynamic DNS는 동적 DNS로 수시로 바뀌는 유동 IP를 감지해서 고정된 도메인에 연결시켜 주는 것이다. 따라서 DDNS를 사용하여 유동 IP일지라도, 특정 DNS로 연결시킬 수 있어 외부에서도 접근할 수 있다는 것이다.