네트워크 계층의 역할
네트워크 계층의 기본 기능은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 라우팅이다. 네트워크의 구성 형태에 대한 정보는 라우팅 테이블에 보관된다.
라우팅이란?
송수신 호스트 사이의 패킷 전달 경로를 선택하는 과정
네트워크 계층의 또다른 기능(라우팅 제외)
혼잡 제어: 네트워크 특정 지역에 트래픽이 몰리는 현상을 다룸
- 네트워크에 존재하는 전송 패킷의 수가 많아질수록 네트워크의 성능은 자연스럽게 감소한다. 이러한 현상을 혼잡이라고 하고, 혼잡 문제를 해결하기 위한 방안을 혼잡 제어라고 한다.
패킷의 분할과 병합: 라우터 사이의 패킷 중개 과정에서 다룸
- 분할이란? 큰 데이터를 여러 패킷으로 나누는 과정
- 병합이란? 목적지에서 분할된 패킷을 다시 모으는 과정
HELLO/ECHO 패킷
라우터의 초기화 과정에서 가장 먼저 할 일은 이웃 라우터의 경로 정보를 파악하는 것. 각 라우터는 이웃에 연결된 라우터에 초기화를 위한 HELLO패킷을 전송해 경로 정보를 얻는다. 또한, 라우터 사이의 전송 지연 시간을 측정하기 위해서는 ECHO 패킷을 전송하는데, ECHO 패킷을 수신한 호스트는 송신 호스트에 즉각 회신하도록 설계된다.
트래픽 성형
트래픽 성형이란 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 전송률로 이루어지게 하는 기능이다. 송신 호스트가 사전에 약속한 트래픽보다 과도한 양의 패킷을 전송하면 네트워크에서 적절히 통제해야 한다. 트래픽 성형과 관련된 알고리즘 중에서 유명한 것은 리키 버킷이다. 송신 호스트와 네트워크 사이에는 송신 호스트가 협상에서 제시한 전송 특성을 반영하는 적절한 크기의 깔때기가 위치하는데, 깔때기의 출구 크기는 협상 결과를 의미하므로 크기가 고정되어 있따. 따라서, 송신 호스트가 협상 값보다 많은 양의 패킷을 전송해도 깔때기 크기 이상의 패킷이 네트워크에 유입될 수 없다.
ECN 패킷
ECN패킷을 이용해 혼잡 문제를 해결할 수 있다. ECN(Explicit Congestion Notification)패킷을 수신한 송신 호스트는 데이터 패킷이 전송되는 경로에서 혼잡이 발생할 가능성을 인지하고 전송 패킷의 양을 줄여야 한다. 즉, 출력 선로의 사용 정도가 한계치를 초과하면 주의 표시를 해둔다.
내부 라우팅 용도
- 거리 벡터 라우팅 프로토콜
- 거리 벡터 라우팅 프로토콜은 라우터가 자신과 직접 연결된 이웃 라우터와 라우팅 정보를 교환하는 방식이다. 이때, 정보를 교환하는 라우터는 거리 벡터 라우팅 프로토콜을 사용하는 호스트나 라우터들이다. 교환 정보로는 각각의 라우터에서 전체 네트워크에 소속되는 개별 네트워크까지 패킷을 전송하는 데 걸리는 거리 정보이다. 거리 벡터 알고리즘을 구현하려면 라우터가 링크 벡터, 거리 벡터, 다음 홉 벡터라는 세 가지 정보를 관리해야 한다. RIP 프로토콜은 거리 벡터 방식을 사용하는 내부 라우팅 프로토콜 중에서 가장 간단하게 구현된 것이다.
- 링크 상태 라우팅 프로토콜
- 링크 상태 라우팅 프로토콜은 라우터 간의 정보 교환 원리가 거리 벡터 방식과 반대이다. 개별 라우터가 이웃 라우터까지의 거리 정보를 구한 후, 이를 네트워크에 연결된 모든 라우터에 통보한다. 거리 벡터 라우팅 프로토콜의 단점인 각 라우터가 상당한 양의 정보 전송을 요구받고, 링크 상태가 많이 변하면 동작 과정에서 시간이 많이 소요될 수 있다는 점을 극복한 것이 링크 상태 라우팅 프로토콜이다. 링크 상태 라우팅 프로토콜의 예시로는 TCP/IP 기반의 인터넷에서 사용하는 OSPF가 있다.
외부 라우팅 용도
- 경로 벡터 프로토콜
- 경로 벡터 프로토콜은 경로에 관한 거리 정보 값이 필요 없는 방식이다. 단순히 해당 라우터에서 어느 네트워크가 연결 가능한지에 대한 정보만 제공한다. 이는 근거리의 경로 정보를 관리하는 내부 라우팅 프로토콜이 효율의 문제를 고려하지만, 원거리의 경로 정보를 관리하는 외부 라우팅 프로토콜은 경로의 존재 유무에 초점을 맞추기 때문이다. BGP는 외부 라우팅 프로토콜의 예시로, 인터넷에서 많이 사용된다.
IP 프로토콜
인터넷 환경에서 네트워크 계층의 데이터 전송 프로토콜로 이용되는 IP는 호스트 주소 표기, 패킷 분할에 관한 기능을 지원하지만, 단대단 형식의 오류 제어나 흐름 제어 기능은 제공하지 않는다. IP 프로토콜에서 라우터 간의 패킷을 중개할 때는 Best Effort라는 원칙에 따라 전송하는데, 이 방식은 전송 패킷이 수신 호스트에 100% 도착하는 것을 보장하지 않는다. 따라서 IP프로토콜에서 제공하지 않는 전송 오류 문제를 상위 계층에서 고려해야 한다.
IP 패킷의 분할
다양한 유형의 네트워크를 통해 패킷을 중개하려면, IP 포로토콜이 패킷을 각 네트워크에서 처리하기 편한 크기로 분할해야 한다. 데이터 링크 계층 프로토콜의 프레임은 크기가 프로토콜 마다 다르다. 따라서, 상위 계층에서 내려온 데이터를 계층 2의 프레임 틀에 담을 수 있도록 IP 프로토콜에서 분할 과정을 거친 후에 전송하고, 수신 측에서는 이를 다시 합치는 병합 작업을 수행한다. IP 프로토콜의 분할 기능은 전송 경로에 위치한 라우터에 의해 수행된다.
DHCP 프로토콜
DHCP는 Dynamic Host Configuration Protocol의 약자로, 동적 호스트 구성 프로토콜이다. 특정 네트워크를 관리하는 네트워크 관리자는 개별 호스트들에 수동으로 고정 IP 주소를 할당할 수 있지만, IP 주소가 부족할 경우 DHCP를 사용해 자동으로 할당한다. 자동으로 할당 가능한 IP주소는 DHCP 서버가 관리하는 풀에 저장되어 관리되며, 클라이언트로부터 IP 주소 요청이 오면 풀에서 하나의 IP주소를 할당한다. 이후 사용이 끝나면 다시 IP주소 풀로 반환되어 다른 호스트가 사용할 수 있다.
IPv6 프로토콜
기존의 32비트 주소 공간을 지원하는 IPv4는 최대 2^32개의 호스트를 수용할 수 있다. 호스트의 주소 공간을 대폭 확장한 IPv6는 주소를 표시하는 공간이 128비트로 확장되어 호스트를 최대 2^128개까지 지원할 수 있다. 또한, IPv6 헤더는 기존 IPv4와 다르게 불필요한 필드가 제외되거나 확장 헤더 형식으로 변경되었다. 이는 기존의 IP프로토콜에서 과도하게 수행하는 오류 제어와 같은 오버헤드를 줄여 프로토콜의 전송 효율을 높이기 위함이다.
IP 터널링
- IP 터널링이 중요해지게 된 이유?
- 현재 진행되는 인터넷 환경 변화와 관련해 가장 많이 연구되는 분야 중 하나는 이동하는 사용자가 서비스 중단 없이 인터넷에 접속할 수 있는 이동 환경 서비스를 수용하는 문제이다. 이동 호스트가 자신의 고유 주소를 유지하면서 인터넷 서비스를 받으려면 계속 이동하는 송수신 호스트 간의 데이터 라우팅 처리가 가장 중요하다. 이동 IP 프로토콜을 이해하기 위해 터널링 원리에 대해 알아본다.
- 터널링 기능을 이용하기 전
- 터널링 기능을 이용하기 전에는, 예를 들어 홍길동이라는 사람이 육지 A 지점에서 출발해 섬에 있는 목적지 D에 도착하려면 중간에 있는 B와 C를 거쳐야 한다고 가정해보자. 홍길동이라는 사람이 출발지 A에서 목적지 D에 도착하는 동안 버스라는 IP 프로토콜에서 배라는 IP프로토콜로 갈아타야 한다. 즉, 홍길동 스스로 IP 프로토콜을 교체하는 작업이 추가로 이루어져야 한다.
- 터널링 기능을 이용한 후
- 터널링 기능을 이용한다면, 홍길동이 출발지에서 목적지까지 버스만 이용하므로, 네트워크 최종 사용자인 홍길동은 IP 프로토콜의 교체 과정에 개입하지 않을 수 있다. 중간에 있는 바다에서 버스 회사가 배를 직접 처리하여 버스가 배를 타는 형태의 터널 기능을 지원하기 때문이다. 즉, 홍길동은 출발지에서 버스를 타고, 도착지에서는 버스에서 내리기만 하면되는 것이다. 배라는 프로토콜을 홍길동은 전혀 이해할 필요가 없다.
- 이동 IP 프로토콜에서 터널링의 원리
- 먼저 이동 호스트의 위치가 바뀌면 새로운 위치를 관장하는 포린 에이전트 FAnew로부터 COA(Care of Address)를 얻는다. 이 주소는 이동 호스트의 홈 에이전트(HA)에 에 등록되어 FANew와 HA사이에 터널을 형성하는데 사용된다. HA로 라우팅된 패킷을 이동 호스트에 전달하려면 새로 형성된 터널을 통해 FANew로 전달해야 한다. 이동 호스트에는 고유 IP주소인 홈 주소 HA가 할당되고, 이 주소는 호스트 위치가 바뀌어도 변하지 않는다. 따라서 이동 호스트의 홈 주소는 홈 에이전트와 밀접한 관련을 갖는다. 여기서 이동 호스트는 네트워크에 있는 다른 호스트와 통신할 때 홈 주소를 사용한다. 여기서 홈 주소를 사용한다는 건, 구체적으로 이동 호스트는 IP프로토콜 헤더의 Source Address 필드에 표기된 주소를 자신의 홈 주소로 설정해 패킷을 전송한다. 패킷을 수신할 때는 반대로 Destination Address 필드에 자신의 홈 주소가 표기된 패킷이 전송되어 온다. COA는 이동 호스트가 위치를 변경할 때 새로 이동한 지역에서 일시적으로 할당된 IP주소이다. 따라서, 호스트가 이동할 때마다 새로운 COA가 할당되고 기존 COA는 회수되는 과정이 반복된다.
ARP 프로토콜
ARP(Address Resolution Protocol)은 주소 결정 프로토콜이다. 네트워크 환경에서 임의의 호스트가 다른 호스트에 데이터를 전송하려면 수신 호스트의 IP 주소 뿐만 아니라 MAC주소도 알아야 한다. 송신 호스트의 MAC 주소는 자신의 LAN카드에 내장되므로 이 값을 읽으면 된다. 문제는 수신 호스트의 MAC주소이다. 수신 호스트의 IP주소를 매개변수로 하여 ARP프로토콜을 통해 수신 호스트의 MAC 주소를 얻어야 한다. IP주소로부터 MAC주소를 얻는 기능은 ARP를 통해 이루어진다.
RARP 프로토콜
RARP(Reverse Address Resolution Protocol)은 역순 주소 결정 프로토콜이다. RARP는 ARP와 반대로 MAC주소를 이용해 IP주소를 제공한다. 파일시스템이 존재하지 않는 시스템이나 X윈도우 터미널 등에서는 자신의 LAN 카드 정보를 읽어 MAC 주소를 얻을 수 있지만, 파일 시스템이 없으므로 IP주소를 보관할 방법이 없다. 따라서, 이런 경우에 자신의 MAC 주소와 IP주소의 매핑 값을 보관하는 서버 호스트로부터 IP 주소를 얻어야 한다. 보통 네트워크에는 RARP의 기능을 전담으로 수행하는 서버가 하나 이상 존재한다. 따라서, 모든 호스트가 RARP 변환 요청을 받아도 해당 정보를 보관하고 있는 RARP 서버만 응답을 수행한다.
ICMP 프로토콜
ICMP(Internet Control Message Protocol)은 인터넷 환경에서 오류에 관한 처리를 지원한다. IP 프로토콜은 데이터 전송 과정에서 패킷 폐기 등의 오류가 발생해도 이를 보고하는 기능이 없는데, 이를 대체 지원하기 위해 네트워크 계층 프로토콜인 ICMP는 오류가 발생한 IP 패킷에 대하여 그 원인을 송신 호스트에 전달한다. TCP/IP 기반의 통신망에서 전송 과정에 문제가 발생하면 라우터에 의해 ICMP 메세지가 자동으로 발생한다.
IGMP 프로토콜
IGMP(Internet Group Management Protocol)은 임의의 호스트가 멀티캐스트 주소로 정의된 멀티캐스트 그룹에 가입하거나 탈퇴할 때 사용하는 프로토콜이다. 멀티캐스트 라우팅에서는 다수의 호스트를 논리적인 하나의 단위로 관리하기 위해 그룹 관리 기능이 필요하기 때문이다.
'Dev > Network' 카테고리의 다른 글
[Network] OSI 7 계층의 Session Layer(세션 계층), Presentation Layer(표현 계층)에 대한 개념 정리 (0) | 2022.01.10 |
---|---|
[Network] OSI 7 계층의 Top Layer(전송 계층)에 대한 개념 정리 (0) | 2022.01.10 |
[Network] SOAP, REST의 개념과 차이점 정리 (0) | 2022.01.10 |
[Network] CORS(Cross Origin Resource Sharing)란? (0) | 2022.01.10 |
HTTP 상태코드(HTTP Status Code) With Spring, Exception Handler (0) | 2021.12.29 |