네트워크 간의 연결 구조   

 

 데이터링크 계층에서는 이더넷 규칙을 기반으로 데이터를 전송하지만 같은 네트워크에 있는 컴퓨터끼리만 가능했다. 인터넷이나 다른 네트워크에 있는 목적지로 데이터를 전달하려면 네트워크 계층의 기술이 필요하다. 아래 그림과 같이 데이터링크 계층의 기능만으로는 해당 네트워크 안에서만 통신이 가능하다는 것을 알 수 있다. 

 

 

 

 

 이렇게 네트워크 간의 통신을 가능하게 해주는 역할을 네트워크 계층에서 해준다. 데이터링크 계층에서 한 컴퓨터에서 다른 컴퓨터로 데이터를 전송하기 위해 스위치라는 장비가 필요했던 것처럼 네트워크 계층에서는 다른 네트워크로 데이터를 전송하기 위해 라우터(Router)라는 네트워크 장비가 필요하다.

 

 

이미지출처: 위키피디아

 

 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려주는 역할을 한다. 하지만, 데이터를 보내려는 목적지를 모르면 라우터도 경로를 알려주지 못한다. 데이터링크 계층에서에서는 MAC 주소만으로도 통신할 수 있었지만 MAC 주소만으로 다른 네트워크에 데이터를 보낼 수 없다. 따라서 네트워크를 식별할 수 있는 다른 주소가 필요한데 그 주소를 IP 주소(IP Address)라고 한다. 

 


   IP란?   

 

 IP 주소는 어떤 네트워크의 어떤 컴퓨터인지를 구분할 수 있도록 해주는 주소이다. 따라서, IP 주소만 있다면 다른 네트워크에 있는 목적지를 지정할 수 있다. 하지만, IP 주소로 목적지를 지정하는 것뿐만 아니라 데이터를 어떤 경로로 보낼지도 결정해야 한다. 이처럼 목적지 IP 주소까지 어떤 경로로 데이터를 보낼지 결정하는 것라우팅(Routing)이라고 한다. 이 결정을 라우터가 수행하는데 라우터에는 라우팅 테이블(Routing Table)이 있어서 경로 정보를 등록하고 관리한다. 

 

 네트워크 계층에는 IP(Internet Protocol)라는 프로토콜이 있는데 통신 규격인 TCP/IP의 그 IP이다. 데이터링크 계층에서 이더넷 헤더를 붙이는 캡슐화를 해서 프레임을 만든 것처럼 네트워크 계층에서는 IP 헤더를 붙여 캡슐화를 진행한다. 

 

 

IP 헤더를 붙여 캡슐화를 진행해 만든 것을 IP 패킷이라고 한다. IP 헤더에는 정말 많은 정보가 포함되어 있는데 중요한 점은 출발지 IP 주소와 목적지 IP 주소가 담겨져 있다는 것이다. 

 


   IP 주소의 버전  

 

 여기서 의문이 드는 것은 IP 주소는 누가 만들고 어떻게 제공받는 것인가이다. IP 주소는 바로 인터넷 서비스 제공자(ISP)가 제공한다. ISP는 통신사를 예로들 수 있는데 우리나라에선 KT, SKT, LG U+ 등에 해당한다. 

 

 IP는 IPv4IPv6라는 두 가지 버전이 존재한다. 원래는 IPv4만 사용했었는데 이는 32비트로 되어 있어서 IP 주소를 약 43억개를 만들 수 있어 충분하다고 생각했다. 하지만 인터넷이 널리 보급되면서 IP 주소가 부족해졌고 현대에는 128비트로 구성된 IPv6를 많이 사용한다. 

 

 그리고 IPv4 주소는 주소의 수가 고갈될 수 있기 때문에 인터넷에 직접 연결되는 컴퓨터나 라우터에는 ISP가 제공하는 공인 IP 주소를 할당하고 회사나 가정의 랜에 있는 컴퓨터에는 사설 IP 주소를 할당한다. 

 

 예를 들어 아래 그림과 같이 랜 안에 컴퓨터가 여러대 있지만 공인 IP 주소를 컴퓨터 한 대당 할당하면 한정되어 있는 주소가 빨리 소진될 것이다. 따라서, 공인 IP 주소는 라우터에만 할당하고 랜 안에 있는 컴퓨터들에는 랜의 네트워크 관리자가 사설 IP 주소를 할당하거나 라우터의 DHCP(Dynamic Host Configuration Protocol) 기능을 사용하여 IP 주소를 자동으로 할당한다. 이런 방식으로 공인 IP의 주소를 절약할 수 있다. 

 

 


   IP 주소의 구조  

 

  데이터 링크 계층에서 MAC 주소는 48비트 였고 16진수로 표현한다. 반면에, 공인 IP 주소와 사설 IP 주소는 모두 32비트이며 10진수로 표현한다.

 

 IP 주소가 32비트이기 때문에 사람이 한 눈에 보기에는 어렵다. 따라서 32비트를 8비트 단위로 나눠서 표현하는데 이 때 8비트를 옥텟(Octet)이라고 부른다. 32비트를 4개의 옥텟으로 나누고 좀 더 읽기 쉽도록 10진수로 변환한다.