본문 바로가기
학교/네트워크

네트워크 계층

by 킹차니 2022. 12. 6.

네트워크 계층은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 라우팅이다. 라우팅 과정에서 일어나는 문제(혼잡제어, 패킷 분할과 병합)도 네트워크 계층에서 처리한다.

 

네트워크 계층의 주요 기능은 아래와 같다.

 

1. 라우팅

네트워크 구성 형태의 정보는 라우팅 테이블에 저장됨. 이 테이블 정보를 활용하여 패킷이 목적지까지 도달하기 위한 경로를 선택한다. 송수신 호스트 사이의 패킷 전달 경로를 선택하느 과정을 라우팅이라고 한다.

 

2. 혼잡제어

네트워크 패킷 수가 과도하게 증가하는 현상을 혼잡(Congestion)이라고 하고, 혼잡 현상을 제거하는 기능을 혼잡 제어(Congestion Control)라고 한다. 네트워크의 특정 지역에 혼잡이 발생하면, 혼잡의 특성상 주위로 빠르게 확산될 수 있어 혼잡으로 인해 전송 속도 저하를 방지할 수 있도록 혼잡 제어를 사용하여 관리해줘야 한다.

 

3. 패킷의 분할과 병합

상위 계층에서 송신을 하려는 데이터는 MAC 계층의 프레임 구조에 정의된 형식으로 캡슐화되어 물리적으로 전송된다. 이때 전송 계층에서 보낸 데이터가 너무 크다면 여러 개의 패킷으로 작게 쪼개 전송해야 한다. 이와 같이 큰 데이터를 여러 패킷으로 나누는 과정을 패킷 분할이라고 하며, 반대로 분할된 패킷을 다시 모으는 과정을 병합이라고 한다. 

 

1. 연결형 서비스와 비연결형 서비스

연결형 서비스는 패킷 전송 전에 송수신 호스트 사이에 연결을 설정하는 연결형 서비스와 여결 설정 없이 데이터를 패킷 단위로 전송하는 비연결형 서비스가 있다.

 

비연결형 서비스(패킷 교환)

비연결형 서비스는 패킷의 전달 순서, 패킷 분실 여부에서 연결형 서비스보다 신뢰성이 떨어지는 전송 방식이다.

따라서 전송 계층에서 네트워크 계층의 비연결형 서비스를 사용할 때는 오류 제어와 흐름 제어 기능을 더 많이 수행해야 한다. 비연결형 서비스를 이용하면 패킷이 서로 다른 경로를 이용하기 때문에 패킷 도착 순서가 일정하지 않을 수 있다. 해서 상위인 전송 계층은 수신한 패킷의 순서를 재조정하는 역할을 수행해야 한다.

네트워크 계층의 IP 프로토콜은 비연결형 서비스의 대표적인 프로토콜이다. IP 프로토콜 위에서 동작하는 전송 계층의 프로토콜 TCP는 연결형 서비스를 지원하고, 전송 계층의 프로토콜 UDP는 비연결형 서비스를 제공한다.

 

연결형 서비스(가상 회선 교환)

연결형 서비스는 패킷을 전송하기 전에 연결을 미리 설정하기 때문에 신뢰성이 높음. 비연결형 서비스와 달리 전달되는 패킷들이 모두 동일한 경로를 이용하기 때문에 목적지에 도착하는 패킷의 순서가 송신된 순서와 동일하다.

 

 

 

2. 라우팅

패킷의 전송 경로를 지정하는 것. 라우팅은 들어온 패킷을 어느 출력 경로를 통해 다음 호스트로 전달해야 가장 효과적인지 결정하는 것. 

가상 회선 방식(연결형)은 연결 설정 후 경로가 고정되지만 비연결형 방식의 데이터 그램을 사용하면 연결 설정 과정이 없기 때문에 송수신 호스트 사이에 고정 경로가 존재하지 않음. 따라서 전송 패킷마다 독립적인 경로를 선택해야 한다.

 

정적 라우팅

패킷 전송이 이루어지기 전에 경로 정보를 미리 라우터에 저장하여 중개하는 방식. 패킷을 중개하기 위한 최적의 경로 정보는 라우터별로 저장. 하여 네트워크 구성에 변화생기면 이에 적절히 대처할 수 없음. 이는 특히 네트워크 내부의 혼잡도를 반영할 수 없다는 단점이 있다.

 

동적 라우팅 :

라우터에서 사용하는 경로 정보를 네트워크 상황에 따라 적절하게 변경하는 방식. 경로 정보의 변경 주기에 따라 계속 보완이 가능. 하지만 추가적으로 경로 정보를 수집하고 관리하는 등의 복잡한 작업이 추가적으로 필요하다.(이는 네트워크에 새로운 부하를 가할 수 있음)

해서 동적 라우팅을 사용하려면 현재 네트워크 링크 상태를 점검해 이를 새로운 경로 배정 시 적용해야 한다. 먼저 각 라우터는 이웃 라우터의 존재 유무, 전송 지연 시간 등을 확인할 수 있어야 하고 각각의 라우터가 획득한 경로 정보를 다른 라우터들에 통보함으로써, 네트워크의 최신 경로 정보를 신속하게 공유하고 갱신해야 한다.

*HELLO/ECHO 패킷
라우터의 초기 과정에서  이웃 라우터의 경로정보를 파악해야 한다. 각 라우터는 이웃에 연결된 라우터에 초기화를 위한 HELLO 패킷을 전송하여 주변 경로 정보를 파악한다.
또한 라우터 사이의 전송 지연을 측정하기 위해서는 ECHO 패킷을 전송한다. 이러한 과정을 반복하고, 측정값의 평균을 구해 해당 라우터까지의 전송 지연 시간을 유추할 수 있다.

 

라우팅 테이블 :

패킷 전송 과정에서 라우터들이 적절한 경로를 쉽게 찾도록 하기 위한 가장 기본적인 도구로 라우팅 테이블을 사용한다. 라우팅 테이블에 포함해야 하는 필수 정보는 목적지 호스트와 다음 홉이다. 다음 홉에는 목적지까지 패킷을 전달하기 위한 이웃 라우터를 지정한다. 즉 목적지까지 도달하는 여러 경로 중에서 효과적인 라우팅을 지원하는 경로가 있을 수 있는데, 이 경로에서 바로 다음 홉(Hoop)에 위치한 라우터의 주소를 기록하는 것이다. 아래 그림과 같다.

위와 같은 네트워크가 있다고 할 때, 1번 호스트를 관리하는 라우팅 테이블은 아래와 같다.

예로 호스트 1번에서 호스트 11이 목적지라면 호스트 1번은 먼저 4번 호스트로 가야하는 것이다.

 

 

3. 혼잡제어(Congestion Control)

네트워크에 존재하는 패킷의 수가 많아지질수록 네트워크의 성능은 자연스럽게 감소한다. 이와 같은 성능 감소 현상이 급격히 악화되는 것을 혼잡(congestion)이라 하고, 혼잡 문제를 해결하기 위한 방안을 혼잡제어(congestion control)이라 한다.

호름 제어는 송신 호스트와 수신 호스트 사이의 논리적인 점대점 전송 속도를 다루지만, 혼잡제어는 더 넓은 관점에서 호스트와 라우터를 포함한 서브넷에서 네트워크의 전송 능력 문제를 다룬다. 아래 그림은 흐름제어와 혼잡제어의 차이를 시각화 한다.

혼잡의 발생 이유는 다양하지만 일반적으로 지나치게 많은 패킷이 입력되면 발생하게 된다. 즉 개별 라우터가 라우터의 출력 선로를 통한 전송 용량이 부족해 아직 전송하지 못한 패킷이 버퍼에 저장되고, 입력 선로로 들어오는 패킷이 늘면서 버퍼 용량이 부족해지는 것이다.

결과적으로는 라우터의 내부 버퍼 용량 부족이 심화되면서 더는 패킷을 보관할 수 없어 버리게 된다. 또한 패킷을 버리면 송신 호스트는 타임아웃으로 보고 페킷을 재전송하게 된다. 이는 네트워크 혼잡도가 증가하는 악순환을 초래하게 된다.

혼잡의 원인
1. 초기 혼잡 과정에서 타임 아웃 시간이 작으면 혼잡도 급격히 증가
2. 패킷 도착 순서가 다른 상황에서 패킷을 분실처리하여 타임 아웃 증가
3. 의도적으로 피기 배킹을 사용하면 응답 시간이 느려져 타임아웃 증가
4. 패킷 생존 시간을 작게 하면 패킷이 강제로 제거되면서 타임아웃 증가
5. 라우팅 알고리즘의 작동

 

 

트래픽 성형

혼잡은 대부분 트래픽이 특정 시간에 집중되는 버스트(burst. 갑자기 특정 시간에 트래픽이 상승하는 현상) 현상에 의해 기인한다. 따라서 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 전송률로 이루어지게 하는 기능이 필요한데, 이를 트래픽 성형(Traffic Shaping)이라고 한다. 송신 호스트는 사전에 네트워크와 협상하여 네트워크로 유입되는 패킷의 특성을 조율할 수 있다. 협상을 통해 네트워크로 유입되는 패킷의 분포 특성을 미리 정해두면 네트워크에서는 전체 트래픽의 혼잡도를 예측하여 혼잡 제어를 효율적으로 수행할 수 있다. 예로 네트워크에서 처리하기 과도한 트래픽이 발생하면 협상 내용의 위반 정도에 따라 패킷 처리를 거부한다. 이러한 알고리즘 중 유명한 것이 리키 버킷(Leaky Bucket)이다.

위 그림은 리키 버킷 알고리즘을 도식화한 것인데, 깔때기의 출구가 고정되어 일정 수의 패킷만 통과가 가능하다. 깔때기에는 버퍼가 있어 출구로 나가지 못한 패킷들은 임시 저장된다. 물론 버퍼의 한계치를 초과하면 패킷이 넘쳐 패킷 분실 오류가 발생할 수 있다.

 

 

 

4. IP 프로토콜

 

네트워크 계층에서 데이터 전송 프로토콜로 이용되는 IP(Internet Protocal)은 호스트 주소 표기, 패킷 분할에 관한 기능을 지원하지만, 단대단(End to End) 형식의 오류 제어나 흐름 제어 기능은 제공하지 않는다.

IP 프로토콜의 특징은 다음과 같다.

• 비연결형 서비스를 제공

• 패킷을 분할/병합하는 기능을 수행하기도 한다.

• 데이터 체크섬은 제공하지 않고, 헤더 체크섬만 제공한다.

• Best Effort 원칙에 따른 전송 기능을 제공한다.(전송 패킷이 수신 호스트에 100% 도착하는 것을 보장하지 않음)

IP 헤더 구조

 

패킷 분할

IP 프로토콜은 상위 계층에서 내려온 전송 데이터가 패킷 하나로 전송하기에 너무 크다면 분할해 전송하는 기능을 제공한다.

TCP는 여러 종류의 네트워크를 거쳐서 논리적인 가상 연결을 설정한다. 그러나 TCP 프로토콜은 패킷 전송 과정에 위치하는 네트워크 유형에 따른 패킷 크기를 조절할 수 없다. 해서 IP 프로토콜에서 이 기능을 수행해야 한다.

 

 

 

기타 네트워크 계층 프로토콜:

 

ARP(Address Resolution Protocol) 프로토콜

네트워크 환경에서 임의의 호스트가 다른 호스트에 데이터를 전송하려면 수신 호스트의 IP 주소뿐 아니라, MAC 주소도 알아야 한다. 수신 호스트의 IP 주소는 보통 응용 프로그램 사용자가 프로그램을 실행하는 과정에서 직접 입력하므로, IP 주소로부터 수신 호스트의 MAC 주소를 얻는 작업이 추가로 필요하다.

IP 프로토콜 헤더에서 필요한 송수신 호스트의 IP 주소와 함께 MAC 계층에서도 송수신 호스트의 MAC 주소가 필요하다. 송신 호스트의 IP 주소는 자신의 하드디스크에 저장되어 있으므로 손쉽게 구할 수 있다. 또한 수신 호스트의 IP주소는 일반 사용자가 접속하고자 하는 호스트의 IP 주소를 지정해준다. (사용자는 일반적으로 도메인 이름을 입력하는데, 도메인 이름은 DNS 서비스를 통해 IP주소로 쉽게 변환 가능)

 

송신 호스트의 MAC 주소는 자신의 LAN카드에 내장되므로 해당 값을 읽으면 되지만 수신 호스트의 MAC 주소가 문제이다. 이와 같은 상황에서는 수신 호스트의 IP 주소를 매개변수로 하여 ARP 기능을 통해 수신 호스트의 MAC 주소를 얻어야 한다.

 

예로 A가 B의 MAC 주소를 얻기 위해서는 ARP Request라는 특수 패킷을 브로드캐스팅해야 한다. ARP Request 패킷을 모든 호스트가 수신하지만, 관계없는 호스트들은 패킷을 무시하고 B만 자신의 IP 주소와 동일함을 인지하여 ARP Reply 패킷을 사용해 자신의 MAC 주소를 호스트 A에 회신한다.

그런데 패킷을 전송할 때마다 브로드캐스팅을 하면 네트워크 트래픽이 증가할 수 있으므로 ARP를 사용하는 호스트는 가장 최근에 얻은 IP 주소와 MAC 주소 매핑 값을 보과하는 캐시 정보를 이용한다.

 

* RARP(Reverse Address Resolution Protocol)

하드 디스크가 없는 경우에는 자신의 LAN카드를 통해 MAC 주소를 얻을 수 있지만, 하드 디스크가 없어서(파일 시스템이 존재하지 않음) 자신의 IP 주소를 보관할 수 없다. 해서 RARP 기능을 사용하여  LAN카드에 내장된 MAC 주소를 매개변수로하여 RARP 기능을 수행함으로써 자신의 IP 주소를 얻어야 한다. IP 주소를 얻고자 하는 호스트는 MAC 주소를 매개변수로하여 패킷을 브로드 캐스팅한다. 이떄 RARP 기능을 전담으로 수행하는 서버가 이에 대해 응답하여 IP주소를 얻을 수 있게 된다.

 

*ICMP 프로토콜

ICMP(Internet Control Message Protocol)는 인터넷 환경에서 오류에 관한 처리를 지원한다. IP 프로토콜은 데이터 전송 과정에서 패킷 폐기 등의 오류가 발생해도 이를 보고하는 기능이 없다. 따라서 이를 대체 지원하기 위해 ICMP는 오류가 발생한 IP 패킷에 대하여 그 원인을 송신 호스트에 전달한다. TCP/IP 기반의 통신망에서 전송 과정에 문제가 생기면 라우터에 의해 ICMP 메시지가 자동으로 발생한다.

 

 

 

----------------------------------------------------------------------------------------------------

 

참고:

쉽게 배우는 데이터 통신과 컴퓨터 네트워크 -박기현 저

'학교 > 네트워크' 카테고리의 다른 글

전송 계층과 3-way-handshake  (0) 2022.12.08
데이터 링크 계층 프로토콜  (0) 2022.12.05
MAC 계층(CSMA/CD, 토큰버스, 토큰 링)  (0) 2022.12.04
ARP, ICMP  (0) 2022.12.03
OSI 7 Layer  (0) 2022.12.03