1. 들어가며
지난 번엔 물리 계층과 데이터 링크 계층에 대해 정리해봤습니다.
앞선 두 계층을 대표하는 네트워크 기술인 이더넷에 대해 알아보고, 케이블과 같은 통신 매체와 스위치 같은 물리적인 네트워크 장비에 대해 알아보았습니다.
그리고 어떻게 패킷이 전달되는지에 대해 알아보았습니다.
물리 계층과 데이터 링크 계층은 주로 물리적인 영역이었다면, 이번에 알아볼 네트워크 계층은 프로토콜과 관련된 패킷에 대한 내용이 주가 됩니다.
또한, 네트워크에서 빠질 수 없는 개념인 IP 주소와 라우팅에 대해서도 알아볼 예정입니다.
2. 네트워크 계층
네트워크 계층은 OSI 7계층에서 3계층에 해당하는 계층입니다.
1, 2계층인 물리 계층과 데이터 링크 계층은 근거리 통신 영역인 LAN을 구축하는데 필요한 계층이었다면, 네트워크 계층은 LAN과 LAN 간의 통신을 위한 계층입니다.
네트워크 계층은 IP 주소를 이용해서 송수신지를 지정하고, 다른 네트워크에 이르는 경로를 결정하는 라우팅을 통해 다른 네트워크와 통신하는 역할을 수행합니다.
2.1. 왜 물리 계층과 데이터 링크 계층으로는 LAN 간의 통신을 구축할 수 없을까요?
LAN 간의 통신을 한다는 의미는 서울에서 부산, 혹은 서울에서 샌프란시스코에 있는 호스트와 통신을 한다는 의미가 될 수 있습니다.
이 말은 즉, 송신지에서 수신지까지 패킷을 전달해야 하는 거리가 멀고 거쳐야 하는 중간 호스트가 많다는 의미입니다.
먼 거리를 이동해야하는 만큼 송수신지 간의 최단 경로를 통해 패킷이 전달되어야 합니다.
하지만 물리 계층과 데이터 링크 계층으로는 가장 효율적인 동선을 찾을 수 없다는 한계가 있습니다.
L2 스위치의 MAC 주소 테이블의 경우에는 송수신지 호스트끼리 연결이 한 번 이상 되어야 MAC 주소 테이블에 기록을 합니다.
따라서 MAC 주소만으로 LAN 끼리 통신을 하면, 처음 한 번은 무조건 스위치에 연결된 모든 호스트로 패킷을 전달하게 됩니다.
결국 전 세계 모든 장치의 MAC 주소를 스위치가 학습하고 경로를 찾는 것은 메모리 용량과 연산 능력 측면에서 불가능합니다.
따라서 LAN 간의 통신을 매우 빠른 속도로 처리해주기 위해 3계층인 네트워크 계층이 탄생했습니다.
3. 인터넷 프로토콜 (Internet Protocol, IP)
네트워크 계층의 가장 핵심적인 프로토콜입니다.
MAC 주소가 물리적인 주소였다면, IP는 논리적인 주소입니다.
DHCP (Dynamic Host Configuration Protocol) 이라는 프로토콜을 통해 자동으로 할당받거나, 사용자가 직접 할당할 수도 있고, 한 대의 호스트에 여러 IP 주소를 부여할 수도 있습니다.
현재 IP는 IPv4, IPv6의 두 가지 버전이 있습니다.
기존에는 IPv4를 사용하고 있었는데, IPv4가 부여 가능한 범위(2^32)보다 호스트 개수가 더 많아짐에 따라 새로운 주소 체계인 IPv6가 탄생했습니다.
3.1. IPv4, IPv6 주소 형태
3.1.1. IPv4
- IP 주소는 32bit 형태로 주소를 표현합니다.
192.168.1.1과 같은 형태입니다.- 각 자리마다 8bit로 표현되기에 0부터 255까지의 십진수가 옵니다.
.으로 구분된 8비트를 옥텟이라고 합니다.
3.2.2. IPv6
- IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 탄생한 주소 체계입니다.
- IPv4는 32bit였다면, IPv6는 이보다 4배 더 긴 128bit 입니다.
- 128bit를 16bit씩 8개 그룹으로 나눈 형태입니다. 각 그룹은 4자리 16진수로 표현하며, 그룹 사이에는 콜론(
:)으로 구분합니다. 2001:0db8:85a3:08d3:1319:8a2e:0370:7334같은 형태입니다.- 128비트 주소를 모두 기입하는 것은 번거롭기 때문에, RFC 4291에서는 다음과 같은 축약 규칙을 정의하고 있습니다.
- 각 그룹의 앞에 오는 0(Leading Zeros)은 생략할 수 있습니다.
- 예: 0db8 -> db8, 0001 -> 1
- 0으로만 구성된 그룹이 연속해서 나타날 경우, 이들을 이중 콜론(::) 하나로 대체할 수 있습니다.
단, 이중 콜론은 주소 내에서 단 한 번만 사용할 수 있습니다.- 예: 2001:0db8:0000:0000:0000:0000:1234:5678 -> 2001:db8::1234:5678
- 각 그룹의 앞에 오는 0(Leading Zeros)은 생략할 수 있습니다.
3.2. IP의 기능
IP는 두 가지 기능이 있습니다.
- IP 주소 지정: IP 주소를 바탕으로 송수신 대상을 지정하는 것을 의미합니다.
- IP 단편화: 전송하려는 패킷의 크기가 MTU 라는 최대 전송 단위보다 클 경우, 이를 MTU 크기 이하인 N개의 패킷으로 나누는 것을 의미합니다.
3.2.1. MTU (Maximum Transmission Unit)
MTU란 한 번에 전송 가능한 IP 패킷의 최대 크기를 의미합니다.
IP 패킷의 헤더도 크기에 포함이 되며, 일반적인 MTU 크기는 1,500바이트입니다.
MTU 크기 이하로 나누어진 IP 패킷은 수신지에서 재조합됩니다.
3.2. 패킷 헤더 구조
3.2.1. IPv4
IPv4의 패킷 헤더 구조는 위 그림과 같습니다.
이 중에서 식별자, 플래그, 단편화 오프셋 필드는 IP 단편화 기능에 관여하고 송신지 IP 주소, 수신지 IP 주소는 IP 주소 지정 기능에 관여합니다.
3.2.1.1. 식별자 (Identifier)
- 패킷에 할당된 번호입니다.
- 메시지 전송 과정에서 IPv4 패킷이 여러 조각으로 나뉘어 전송됐다면, 수신지에서는 이들을 재조합해야 합니다.
이때 여러 개의 IPv4 패킷들이 어떤 메시지로부터 나뉘어졌는지를 인식하기 위해 식별자를 사용합니다.
3.2.1.2. 플래그
-
총 3개의 bit로 구성된 필드입니다.
-
첫 번째 bit는 항상 0으로 예약된 비트로, 현재 사용되지 않습니다.
-
나머지 두 bit 중 하나는 DF (Don't Fragment) 라는 이름이 붙은 bit로, IP 단편화를 수행하지 말라는 표시입니다.
만약 DF 비트가 1이라면, IP 단편화를 수행하지 않고, 0이라면 IP 단편화를 수행할 수 있습니다. -
나머지 한 bit는 MF (More Fragment) 라는 이름의 비트로, 단편화된 패킷이 더 있다는 의미입니다.
0이라면 이 패킷이 마지막 패킷임을 의미하고, 1이면 쪼개진 패킷이 더 있다는 걸 의미합니다.
3.2.1.3. 단편화 오프셋
- 단편화된 IP 패킷들은 순서대로 도착하지 않을 수 있습니다.
따라서 무작위 순서대로 도착하는 IP 패킷들을 다시 순서대로 재조합하기 위해서는, 단편화된 패킷이 원본 데이터에서 몇 번째 데이터에 해당하는 패킷인지 알아야 합니다. - 이를 위해 활용하는 필드가 단편화 오프셋입니다.
3.2.1.4. TTL (Time To Live)
- 패킷의 수명을 의미합니다.
- 멀리 떨어진 호스트끼리 통신할 때 IP 패킷은 여러 개의 라우터를 거쳐갑니다.
이때 패킷이 호스트나 라우터에 한 번 전달되는 것을 홉 이라고 하는데, TTL의 값은 홉마다 1씩 감소합니다. - TTL이 0인 IP 패킷은 그 즉시 폐기하며, 송신자에게 시간 초과(Time Exceeded) 메시지를 전송합니다.
- 네트워크 상에 무의미한 패킷이 남지 않도록 방지하는 목적을 가집니다.
3.2.1.5. 프로토콜
- 상위 계층의 프로토콜에 대한 정보가 기록됩니다.
- 예를 들어 TCP는 6번, UDP는 17번으로 기록됩니다.
3.2.1.6. 송신지 IP 주소, 수신지 IP 주소
- 이름 그대로 송신지의 IP 주소와 수신지의 IP 주소가 기록됩니다.
3.2.2. IPv6
IPv6 패킷의 기본 헤더는 아래 그림과 같습니다.
IPv4와 비교했을 때 상당히 간소화되어 있습니다. 그리고 IPv4에는 옵션이나 패딩 필드 때문에 길이가 가변적인데 IPv6는 40바이트로 길이가 고정되어있습니다.
3.2.2.1. 다음 헤더 (Next Header)
- 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킵니다.
- 확장 헤더란, 기본 IPv6 헤더에 필요한 추가적인 헤더 정보가 필요한 경우 확장 헤더라는 추가 헤더를 의미합니다.
- 확장 헤더는 아래 그림처럼 기본 헤더와 페이로드 데이터 사이에 위치합니다.
- 많이 쓰이는 확장 헤더의 종류로는 다음과 같습니다.
- 홉 간 옵션(Hop-by-Hop Options): 송신지에서 수신지에 이르는 모든 경로의 네트워크 장비가 패킷을 검사하도록 합니다.
- 수신지 옵션(Destination Options): 수신지에서만 패킷을 검사하도록 합니다.
- 라우팅(Routing): 라우팅 관련 정보를 담습니다.
- 단편화(Fragment): 단편화 정보를 담습니다.
- ESP(Encapsulating Security Payload), AH(Authentication Header): 암호화와 인증을 위한 정보를 담는다.
3.2.2.2. 홉 제한
- IPv4의 TTL과 비슷하게 패킷의 수명을 나타내는 필드입니다.
3.2.2.3. 송신지 IP 주소, 수신지 IP 주소
- 송신지 IP 주소와 수신지 IP 주소 필드를 통해 IPv6 주소를 지정합니다.