네트워크 계층
LAN을 넘어서 다른 네트워크와 통신하려면 물리 계층과 데이터 링크 계층만으로는 어렵다. 네트워크 간의 통신을 위해선 네트워크 계층이 필수적이다.
어째서 물리 계층과 데이터 링크 계층만으로 다른 LAN을 넘어서 통신하기가 어려울까? 그 이유는 다음과 같다.
물리 계층과 데이터 링크 계층 만으로는 다른 네트워크까지의 도달 경로를 파악하기 어렵다.
물리 계층과 데이터 링크 계층은 LAN 내의 호스트끼리 통신하는 계층이지만, 우리는 LAN내의 호스트끼리만 통신하지 않는다. 멀리 떨어진 호스트와 통신하기 위해선 여러 네트워크 장비를 거쳐 통신해야 한다.
네트워크 장비를 거쳐서 통신해야 하는데, 기왕이면 효율적인 경로라면 좋을 것이다. 이렇게 효율적인 경류를 결정하는 것이 라우팅(routing)이다. 이런 라우팅을 수행해 주는 네트워크 장비가 라우터(router)이다.
MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치를 특정하기 어렵다.
현실적으로 모든 호스트가 모든 네트워크에 속한 모든 호스트의 MAC주소를 서로 알기란 어렵다. 따라서 호스트를 특정하기 위한 다른 추가적인 정보가 필요하다. 이것이 IP 주소이다. 네트워크에서는 MAC 주소와 IP주소를 함께 사용하고, 기본적으로 IP 주소를 우선적으로 활용한다.
MAC주소를 물리 주소라고도 부르는 것처럼 IP주소를 논리 주소라고도 부른다. MAC 주소는 일반적으로 NIC마다 할당되는 고정된 주소지만, IP주소는 DHCP라는 특정 프로토콜을 통해 자동으로 할당받거나 사용자가 직접 할당할 수도 있고, 한 호스트가 복수의 IP 주소를 가질 수도 있다.
인터넷 프로토콜
네트워크 계층의 핵심적인 프로토콜을 꼽자면 인터넷 프로토콜(IP; Internet Protocol)이다. IP는 두 가지 버전이 있으며, 각각 IP 버전 4(IPv4) 그리고 IP 버전 6(IPv6)이 있다. 일반적으로 불리는 IP는 IPv4를 의미하는 경우가 많다. 이 글에서 다루는 IP도 IPv4를 의미한다.
IP 주소 형태
IP 주소는 4바이트로 표기할 수 있고, 숫자당 8비트로 표현되기에 0~255 범위 안에 있는 4개의 10진수로 표현된다. 각 10진수는 점으로 구분되며, 점으로 구분된 8비트를 옥텟(octet)이라고 부른다.
IP의 기능
IP의 대표적인 기능은 두 가지가 있다.
- IP 주소 지정(IP addressing) : IP주소를 바탕으로 송수신대상을 지정하는 것
- IP 단편화(IP fragmentation) : 전송하고자 하는 패킷의 크기가 MTU보다 클 경우, MTU 크기 이하의 복수 패킷으로 나누는 것
💡 MTU(Maximum Transmission Unit)는 한 번에 전송 가능한 IP 패킷의 최대 크기를 의미한다. IP패킷의 헤더도 MTU 크기에 포함되며, 일반적은 MTU 크기는 1500바이트이다. MTU 크기 이하로 나누어진 패킷은 수신지에 도착하면 재조립된다.
IP는 어떤 방법으로 IP 주소 지정과 IP 단편화를 가능케 할까? 이를 알기 위해서 IP 패킷을 살펴보자.
IPv4
IPv4 패킷의 헤더에 포함된 데이터 필드는 다음과 같다.
이 중에서 붉은색으로 표기된 부분이 핵심 필드이며, 이 필드들을 위주로 알아보자.
- 식별자
- 패킷에 할당된 번호로, IP가 쪼개진 경우 합치는 과정에서 어떤 메시지로부터 쪼개졌는지 인식하기 위해 존재한다.
- 플래그
- 플래그는 3개의 비트로 이루어져 있다.
- 첫 번째는 예약된 필드로 항상 0이다.
- 두 번째는 DF(Don’t Fragment)라는 비트로 단편화를 수행하지 말라는 표시이며, 1이면 단편화를 수행하지 말라는 의미이고 0이면 단편화가 가능하다는 의미이다.
- 세 번째는 MF(More Fragment)라는 비트로 단편화된 패킷이 더 있는지를 의미한다. 0이면 마지막 패킷임을 의미하고, 1이면 쪼개진 패킷이 더 있다는 의미이다.
- 단편화 오프셋
- 패킷이 단편화되기 전에 패킷의 초기 데이터에서 몇 번째로 떨어졌는지를 의미한다. 이는 패킷이 순서대로 도착하지 않기 때문에 존재하며, 재조합 시 몇 번째 패킷인지를 식별하기 위해 존재한다.
- TTL
- Time To Live의 약어로 패킷의 수명을 의미한다. 통신을 위해 패킷이 호스트 또는 라우터에 전달되는 홉(hop)이라는 과정을 거친다. 이때 홉이 이루어질 때마다 TTL이 1씩 감소하며, 0이 되면 폐기된다. 이는 무의미한 패킷이 네트워크상에 지속적으로 남아있는 것을 방지하기 위해 존재한다.
- 프로토콜
- 상위 계층의 프로토콜이 무엇인지 나타내는 필드이다. 전송계층의 대표적인 프로토콜인 TCP는 6번, UDP는 17번이다.
- 송신지 IP 주소, 수신지 IP 주소
- 송수신지의 IPv4 주소를 알 수 있다.
IPv6
IPv4 주소로 할당할 수 있는 IP의 개수는 약 43억 개다. 전 세계 인구가 하나씩 IP 주소를 가지고 있어도 부족하다. 심지어 일반적으로 한 사람이 사용하는 장치는 여러 개이기 때문에 고갈될 수 있다. 이런 이유로 등장한 것이 IPv6이다. IPv6주소는 이론적으로 2의 128승만큼의 사실상 무한에 가까운 개수를 할당할 수 있다.
IP패킷의 헤더에 포함된 데이터 필드는 다음과 같다.
IPv4와 마찬가지로 핵심 필드 위주로 알아보자.
- 다음 헤더
- 다음헤더는 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킨다. 위에 명시된 이미지는 IPv6의 기본 헤더이며, IPv6는 확장 헤더를 통해 부가적인 데이터를 담을 수 있다.
- 확장 헤더는 꼬리에 꼬리를 물듯 또 다른 확장 헤더를 가질 수 있다. 확장 헤더의 종류는 다양하며 대표적인 것들만 보자면, 송신지에서 수신지에 이르는 모든 경로의 네트워크 장비가 패킷을 검사하도록 하는 홉 간 옵션(Hop-by-Hop Options), 수신지에만 패킷을 검사하도록 하는 수신지 옵션(Destination Options), 라우팅 관련 정보를 운반하는 라우팅(Routing), 단편화를 위한 단편화(Fragment, 암호화 인증을 위한 ESP(Encapsulating Security Payload), AH(Authentication Header) 확장 헤더가 있다.
- IPv6는 IPv4와 달리 헤더에 단편화 관련 필드가 없고, 단편화 확장 헤더를 통해 단편화가 이루어진다. 단편화 확장 헤더에는 단편화 오프셋과 M플래그, 식별자 필드가 있으며 각각 IPv4의 단편화 오프셋, MF플래그, 식별자 필드와 같은 역할을 수행한다.
- 홉 제한
- IPv4 패킷의 TTL 필드와 비슷하게 패킷의 수명을 나타내는 필드이다.
- 송신지 IP 주소, 수신지 IP 주소
- 송수신지의 IPv6 주소 지정이 가능하다.
💡 IPv4 패킷의 옵션이나 패딩 필드는 선택적으로 존재한다. 즉, IPv4헤더 길이는 가변적이다. 반면 IPv6기본 헤더는 40바이트로 고정적이다.
ARP
ARP(Address Resolution Protocol)는 동일 내트워크 내에 있는 송수신 대상의 IP주소를 통해 MAC 주소를 알아내는 프로토콜이다.
패킷을 올바르게 전송하기 위해선 수신지 MAC 주소까지 알아야 한다. MAC주소와 IP주소를 사용하지만 기본적으로 IP 주소를 사용하기 때문에, 상대 호스트의 IP 주소는 알지만 MAC주소는 모르는 상황이 있을 수 있다. 이때 수신지 MAC주소를 알기 위해선 ARP 프로토콜을 사용해야 한다.
ARP의 동작 과정은 다음과 같다.
- ARP 요청
- 네트워크 내의 모든 호스트에게 ARP 요청 브로드캐스트 메시지를 보낸다. IP 주소를 보내며, 동일한 IP 주소를 가진 호스트의 MAC 주소를 요청하는 내용이 담겨있다.
- ARP 응답
- IP 주소가 동일한 호스트가 ARP 요청 메시지를 받았다면 ARP 응답 메시지를 송신지에게 보낸다. 이때 MAC 주소를 알게 된다.
- ARP 테이블 갱신
- ARP를 활용할 수 있는 모든 호스트는 ARP 테이블이라는 정보를 가지고 있는데, IP 주소와 MAC 주소가 매칭되어 있는 테이블이며, 이 테이블을 갱신한다. ARP 테이블은 일정 시간이 지나면 삭제되고, 임의로 삭제할 수 있다.
- ARP 테이블에 IP 주소와 MAC 주소가 있다면 더 이상 ARP 요청을 보낼 필요가 없다.
ARP 패킷
ARP 요청, ARP 응답을 하기 위해선 ARP 패킷이 전송된다. ARP 패킷은 프레임의 페이로드에 포함되어 전송된다.
- 오퍼레이션 코드
- ARP 패킷의 유형을 나타낸다. ARP 요청은 1, ARP 응답은 2이다.
- 송신지 하드웨어 주소, 수신지 하드웨어 주소
- 각각 송수신지의 MAC 주소가 명시된다. ARP 요청 시 수신지 MAC 주소에는 브로드 캐스트 메시지임을 나타내는 FF:FF:FF:FF:FF:FF 가 명시되고, ARP 패킷의 수신지 하드웨어 주소에는 00:00:00:00:00:00이 명시된다.
- 송신지 프로토콜 주소와 수신지 프로토콜 주소
- 각각 송신지와 수신지의 IP 주소가 명시된다.
💡 메시지를 수신할 호스트가 같은 네트워크 상에 없다면? 만약 메시지를 받아야 할 호스트가 같은 네트워크 상에 없다면, ARP 요청 - ARP 응답을 통해 라우터의 MAC주소를 얻어낸 뒤에 수신할 호스트가 있는 라우터까지 ARP 통신하여 MAC주소를 얻어낸다. 이런 식으로 최종 수신 호스트의 MAC주소를 얻어낸다. 다만 이는 매우 간략화된 예시로, 실제론 ARP만 사용하지는 않는다.
IP 단편화를 피하는 방법
IP의 대표적인 기능 중 하나인 IP 단편화에 대해 알아보자. IP 단편화는 되도록 하지 않는 것이 좋다. 패킷을 쪼개는 과정에서 헤더가 많아지면서 트래픽 증가와 대역폭 낭비로 이어지기 때문이다. 패킷을 조합하는 과정도 마찬가지이다. 합치는 과정에서 발생하는 부하가 성능 저하를 야기한다.
IP 단편화를 피하기 위해선 IP 패킷을 주고받는 모든 호스트의 처리가능한 MTU 크기를 고려해야 한다. 이를 경로 MTU(Path MTU)라고 한다. 경로 MTU를 구하고 해당 크기만큼 송수신하여 IP 단편화를 회피하는 기술을 경로 MTU 발견(Path MTU Discovery)이라고 한다.
오늘날 네트워크에서는 대부분 이를 지원하며, 경로 MTU 또한 균일하기 때문에 IP 단편화는 자주 수행되지 않는다.
DF플래그는 ‘IP 단편화를 수행하지 말라’라는 플래그라고 했다. 만약 IP 패킷에 DF 플래그가 설정되어 있고, MTU를 넘어섰다면 IP 패킷을 송신한 호스트에게 ‘단편화 없이는 처리할 수 없습니다’라는 특정 오류 메시지를 전달하게 된다. 그럼 IP 패킷을 송신한 호스트는 데이터 크기를 점차 줄이게 된다. 이런 과정을 통해 경로 MTU를 알아가게 된다.
'도서 정리 > 혼자 공부하는 네트워크' 카테고리의 다른 글
[혼자 공부하는 네트워크] Chapter 3 - 3 라우팅 (1) | 2024.07.21 |
---|---|
[혼자 공부하는 네트워크] Chapter 3 - 2 IP 주소 (0) | 2024.07.21 |
[혼자 공부하는 네트워크] Chapter 2 - 4 스위치 (0) | 2024.07.14 |
[혼자 공부하는 네트워크] Chapter 2 - 3 허브 (0) | 2024.07.14 |
[혼자 공부하는 네트워크] Chapter 2 - 2 NIC와 케이블 (0) | 2024.07.12 |