네트워크 계층(IP)

개요

◦ What are the network layers


What are the network layers

네트워크 계층은 source 부터 destination까지로 패킷이 도달하는 데 중점을 둔다. 목적지에 도달하기 위해서는 경로를 따라 중간 라우터들에서 많은 전송을 해야한다.

이를 위해서 네트워크 계층은 통신 서브넷의 형태(라우터의 설치 형태)를 알아야하고 그것을 통과할 때 과부하가 오지 않도록 적당한 경로를 결정한다.

이를 위해 라우팅 알고리즘을 이용하는데 네트워크 계층의 소프트웨어 부분으로 들어온 패킷이 어느 회선으로 전송되어야 할지를 결정하는 것이다.

라우팅 알고리즘은 정확성, 단순성, 견고성, 안전성, 공정성, 최적성을 고려하여 설계된다.

라우팅 알고리즘은 두 가지 주 클래스로 그룹화 될 수 있다. nonadaptive algorithm과 adaptive algorithm인데 이름에서 유추할 수 있듯이

비적응적 알고리즘은 현재 트래픽과 형태의 측정 및 평가에 따라서 설정되는 것이 아니라 경로는 미리 선택되고 네트워크가 부팅될 때 라우터로 다운로드한다.

정적 라우팅(static routing)이라고도 부른다.

반대로 적응적 알고리즘은 형태와 트래픽의 변화를 반영하여 라우팅을 결정한다.


정적 알고리즘


최단 경로 라우팅(Shortest Path Routing)

최단 경로 라우팅은 목적지까지의 홉의 수를 계산하여 가장 짧은 경로로 패킷을 보내는 것이다.

다익스트라 알고리즘과 같다.


플러딩(Flooding)

들어온 모든 패킷을 들어온 회선을 제외하고 모든 출력 회선으로 보내는 것을 플러딩이라고 한다.


동적 알고리즘


거리 벡터 라우팅(Distance vector routing)

이 알고리즘은 각 목적지에 대해 라우팅 테이블을 유지하고 주변의 라우터들과 정보 교환을 통해 갱신하여 가장 짧은 거리를 가지고 있는 목적지로 전송하여 최종 목적지에 전달하는 것이다.

거리 벡터 라우팅은 무한 카운트 문제가 있다.


현재 인터넷은 링크 상태 라우팅 알고리즘을 채택하여 사용중이다.

링크 상태 라우팅의 시작은 인접한 라우터들에 대한 학습을 진행하는 것이다.

그 다음에 인접한 라우터에 도달하기 위한 비용을 측정한다.

교환에 필요한 정보들이 모아지면 다음 단계는 각 라우터가 그 모든 데이터를 포함한 패킷을 만드는 것이다. 이것을 링크 상태 패킷을 만든다고 칭한다.

그 패킷을 분배 알고리즘에 따라 신뢰성있게 분배한다. 라우터가 링크 상태 패킷을 모두 모으면 새로운 경로를 계산한다.


계층적 라우팅(hierarchical routing)

라우터를 지역(region)단위로 나누어지고 모든 라우터는 자신의 지역에 대해서만 어떻게 전달할지만 알고 다른 지역의 내부구조는 모르게 된다.

네트워크가 연결되면 지역의 특정 라우터는 다른 지역으로 트래픽을 처리할 수 있게 되고 같은 지역의 라우터들은 그 라우터를 이용하여 다른 지역에 패킷을 전송한다.


브로드캐스트 라우팅(Broadcast routing)

강의나 방송처럼 불특정 다수에게 패킷을 전송하는 알고리즘이다.


멀티캐스트 라우팅(Multicasting routing)

불특정 다수중에서 그룹화를 하여 특정 그룹에게만 패킷을 전송하는 알고리즘이다.


이동 호스트를 위한 라우팅(Mobile Host routing)

Mobile과 Portable의 개념을 생각해볼 필요가 있다.

Mobile은 휴대성을 가지고 있으며 계속해서 통신을 주고 받는 것을 의미한다.

Portable은 휴대성만을 의미한다.

모바일 기기의 home address가 있을 것이고 현재 위치의 foriegn address가 있을 것이다.

예를 들어서 설명을 해보겠다.

나의 집은 서울이다. 서울에 나의 모바일 기기는 home agent로부터 부여받은 home address가 있을 것이다.

그런데 내가 부산으로 가면 모바일 기기는 foriegn agent로부터 해당 지역의 local address를 부여받는다.

그렇다면 모바일 호스트는 이 주소를 home agent에게 알려준다. 나 여기 있을 거니깐 나한테 오는 패킷을 이 주소로 보내줘라는 메시지를 보낸다.

그런 상태에서 제주도에 있는 송신자가 가지고 있는 나의 목적지 주소로 데이터 패킷을 보낸다. 이 때 주소는 home address이다.

그렇다면 home agent는 자신이 알고있는 모바일 호스트의 주소를 담고있는 헤더를 붙여 전송한다 이것을 터널링이라고 부른다.

이제 모바일 호스트는 제주도에서 보낸 송신자의 주소로 나 서울에 없고 부산에 있어요라고 주소를 알려준다. 그렇게 송신자와 모바일 호스트는 지속적인 통신을 할 수 있다.