2 계층까지의 관심사는 하나의 네트워크 안에서의 데이터 전송이었다. 2계층에서는 이를 위해 컴퓨터의 물리 주소를 이용해서 데이터를 보낼 컴퓨터를 특정하였다.
그렇다면 네트워크 간의 데이터 전송은 어떨까? 물리주소를 계속 이용할까? 지구상 모든 컴퓨터의 물리주소를 간직하고 조회할 수 있는 기관이라도 있어야 할까? 그보다는 주소를 네트워크 단위로 나누고 네트워크에 기반한 주소 시스템을 활용하는 것이 좋을 것이다. 이러한 주소시스템을 활용하면 다른 네트워크를 특정하여 데이터를 전송할 수 있게 된다. 이러한 주소시스템이 잘 작동하기 위해서는 어떤 네트워크인지 알려주기 위한 주소와 해당 주소에 도달하기 위한 경로 탐색 과정이 필요하다.
위에서 어떤 네트워크의 어느 컴퓨터를 찾아가면 되는지 알려주는 주소를 IP 어드레스라고 한다. 그리고 주소를 찾아가기 위한 경로 탐색과정을 라우팅이라고 한다. 3 계층의 주요 관심사는 바로 이 두가지이다.
여기에서는 IP 어드레싱에 대해 알아보자.
물리주소를 통해 데이터를 전송하는 것으로 네트워크의 목적은 달성된다. 하지만 컴퓨터의 대수가 많아지면 문제가 발생한다. 바로 회선에 너무 많은 데이터가 흐르는 문제이다. 컴퓨터가 많을때는 기본적으로 허브를 사용해서 플러딩을 하고, 스위치를 통해서 주소 필터링을 하게 된다. 매우 많은 컴퓨터를 관리하는 네트워크의 경우 스위치의 주소 필터링 작업의 부하가 심하게 될 것이고, 따라서 데이터의 충돌 가능성이 높아질 것이다.
데이터 전송을 네트워크로 관리하면 이러한 부하를 줄여줄 수 있다. 플러딩이 네트워크 안에서만 도달하도록 하고 외부에 나가지 못하게 하면, 회선의 부하를 네트워크 안의 범위로 통제할 수 있게 된다. 이것이 네트워크 단위로 관리하는 또 하나의 이유 이다.
IP 주소는 논리주소이다. 논리주소는 물리주소인 MAC 주소와 다르게 위치정보를 포함하고 있는 주소이다. 위치정보를 포함하는 이유는, 네트워크 안에서는 플러딩이 이루어지지만 네트워크 안으로 한정되기 때문에, 밖으로 전송하기 위해서는 해당 네트워크를 특정 가능한 주소가 필요하기 때문이다.
논리주소이기 때문에, 접속할때마다 논리주소를 할당 받게 되며 물리주소와 관계 없이 움직이게 된다.
IP 주소는 네트워크 주소와 컴퓨터 주소로 구성된다. 네트워크 주소는 전체 네트워크 집합에서 유일해야 하며 컴퓨터 주소는 단일 네트워크에서 유일해야 한다.
방대한 IP 주소를 관리하기 위해서 클래스
를 사용했었다. 클래스
는 IP 주소의 네트워크 주소와 컴퓨터의 주소를 규모에 따라 다르게 가져가는 것이다. 규모가 큰 네트워크의 경우 네트워크 주소가 작고 작은 네트워크의 경우 반대이다.
규모가 큰 네트워크에서는 내부 주소를 쪼개서 관리할 필요성이 생긴다. 이를 위한 것이 서브네팅이다. 서브네팅은 IP 주소 중 네트워크 주소의 일부를 서브넷 주소로 할당하는 방법을 말한다. IP 주소 중 어디까지가 서브넷 주소인지 알 수 있는 방버이 필요한데, 이것이 서브넷 마스크다.
한편, 클래스로 주소를 관리하면, 네트워크 주소가 낭비되는 일이 발생한다. 현실적으로 네트워크의 규모는 매우 다양하게 주어지므로, 몇개의 클래스로 나누어 관리하면 맞지 않는 경우가 매우 많고, 따라서 클래스리스 라는 개념으로 관리하게 된다.
네트워크에서 주소를 할당받는 방법은 두가지가 있다. 직접입력하는 것과 DHCP 를 통해 동적 할당하는 것이다. 관리자가 DHCP 에 할당해도 좋은 IP 주소의 범위를 설정하면 서버에서는 이를 이용하여 네트워크 상에서 유일한 IP 주소를 클라이언트 들에게 할당하게 된다.
클라이언트가 기동하면 어디에 주소할당 요청을 보낼지 모르기 때문에, 브로드 캐스팅 방식으로 서버에 요청을 보내게 된다. 서버에서는 할당된 주소와 기타 설정정보들을 담아서 반환하게 된다.
송신하는 쪽에서는 IP 주소보다 특정한 이름을 지정해서 송신하는 쪽이 더 편리할 것이다. 이러한 이름을 Domain Name 이라고 한다. 하지만, 통신을 위해서는 IP 주소가 필요하다.
이 문제는 DNS 서버를 통해서 해결한다. 인터넷 상에는 도메인 이름과 IP 주소를 연결지어 저장한 데이터베이스 역할을 하는 서버가 분산되어 있다. 이 서버를 통해서 IP 주소를 얻고 보내고 싶은 대상에 송신할 수 있게 된다.