[네트워크] 네트워크 계층

windowook·2024년 6월 21일
post-thumbnail

🌱 물리 계층과 데이터링크 계층의 한계

다른 네트워크까지의 도달 경로 파악이 어려움

물리 계층과 데이터링크 계층은 기본적으로 LAN을 다루는 계층입니다.
하지만 LAN에 속한 호스트끼리만 통신하지는 않습니다. 만약 먼 나라의 컴퓨터와 정보를 주고받는다면 해당 패킷은 서로에게 도달하기까지 수많은 네트워크 장비를 거치며 다양한 경로를 통해 이동됩니다.

예를 들어서 LAN A에 속한 호스트 민철이가 LAN B에 속한 호스트 영수에게 전송하는 패킷은 다양한 경로를 통해 이동할 수 있습니다. 통신을 빠르게 주고받으려면 이 중에 최적의 경로로 패킷이 이동해야 합니다. 이렇게 최적의 경로를 결정하는 것을 라우팅이라고 합니다. 라우팅은 네트워크 계층의 장비인 라우터로 수행 가능합니다.

MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치 특정이 어려움

현실적으로 모든 호스트가 모든 네트워크에 속한 모든 호스트의 MAC 주소를 서로 알고 있기란 불가능합니다. 그래서 MAC 주소만으로는 이 세상에 있는 모든 호스트를 특정하기 어렵습니다.

네트워크를 통해 정보를 주고받는 과정은 택배를 송수신하는 과정과 같고, MAC 주소는 네트워크 인터페이스마다 할당된 일종의 개인정보와도 같습니다.

택배를 보낼 때 받는 사람의 개인 정보만 택배에 적어 보내지 않듯이 수신지를 쓰지 않는다면 네트워크에서도 패킷을 어디로 보낼지 알 수 없습니다. 수신인 역할을 MAC 주소가 한다면, 수신지 역할을 하는 주소는 네트워크 계층의 IP 주소입니다.

네트워크 계층에서는 MAC 주소와 IP 주소를 함께 사용하고, 기본적으로 IP 주소를 우선 할당합니다.
MAC 주소를 물리 주소라고 부르는 것처럼 IP 주소는 논리 주소라고 부르기도 합니다.
일반적으로 NIC마다 할당되는 고정된 주소지만 IP 주소는 호스트에 직접 할당이 가능합니다.

DHCP라는 특정 프로토콜을 통해 자동으로 할당받거나 사용자가 직접 할당 가능하나, 한 호스트가 복수의 IP 주소를 가질 수도 있습니다.

🌱 인터넷 프로토콜

IP에는 IPv4와 IPv6가 있습니다.

IP 주소 형태

IP 주소는 4바이트(32비트)로 주소를 표현할 수 있고, 숫자당 8비트로 표현되기에 0~255 범위 안에 있는 네 개의 10진수로 표기됩니다.

각 10진수는 점(.)으로 구분되며 점으로 구분된 8비트를 옥텟이라고 합니다.

ex) 192.168.1.1

IP의 기능

기능설명
IP 주소 지정IP 주소를 바탕으로 송수신 대상을 지정하는 것
IP 단편화전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 클 경우 이를 MTU 크기 이하의 복수의 패킷으로 나누는 것

MTU란 한 번에 전송 가능한 IP 패킷의 최대 크기를 의미합니다.
IP 패킷의 헤더도 MTU 크기에 포함합니다. 일반적인 MTU 크기는 1500 바이트 이며, MTU 크기 이하로 나누어진 패킷은 수신지에 도착하면 다시 재조립합니다.

IP 단편화는 되도록 하지 않는 것이 좋습니다.
데이터가 여러 패킷으로 쪼개지면 자연스레 전송해야 할 패킷들의 헤더들도 많아지고, 이는 불필요한 트래픽 증가와 대역폭 낭비로 이어질 수 있습니다. 쪼개진 IP 패킷들을 하나로 합치는 과정에서 발생하는 부하도 성능 저하를 야기 가능합니다. 따라서 IP 단편화는 가급적 피하는 것이 좋습니다.

🌱 IPv4

식별자

패킷에 할당된 번호입니다.
잘게 쪼개져서 수신지에 도착한 IPv4 패킷들이 어떤 메세지에서부터 쪼개졌는지를 인식하기 위해서 식별자를 사용합니다.

플래그

총 3개의 비트로 구성된 필드입니다.

첫 번째 비트는 항상 0으로 예약된 비트로, 현재 사용되지 않는 중입니다.
사용되는 나머지 두 개의 비트 중에서 하나는 DF라는 이름이 붙은 비트입니다.
'Don't Fragment'의 약어로 IP 단편화를 수행하지 말라는 의미입니다.

마지막 비트는 MF라는 비트다. 'More Fragment'의 약어로 단편화된 패킷이 더 있는지를 나타냅니다. 0이라면 이 패킷이 마지막 패킷임을 의미하고, 1이라면 쪼개진 패킷이 아직 더 있다는 것을 의미합니다.

단편화 오프셋

단편화 오프셋은 패킷이 단편화되기 전에 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지를 나타냅니다. 단편화되어 전송되는 패킷들은 수신지에 순서대로 도착하지 않을 수 있습니다. 따라서 수신지가 패킷들을 순서대로 재조합하려면 단편화된 패킷이 초기 데이터에서 몇 번째 데이터에 해당하는 패킷인지 알아야 합니다. 이를 판단하기 위해 단편화 오프셋을 활용합니다.

TTL

Time To Live의 약자로 패킷의 수명을 의미합니다.
멀리 떨어진 호스트끼리 통신할 때 패킷은 여러 라우터를 거쳐 이동합니다. 패킷이 하나의 라우터를 거칠 때마다 TTL이 1씩 감소하며, TTL 값이 0으로 떨어진 패킷은 폐기됩니다.

패킷이 호스트 또는 라우터에 한 번 전달되는 것을 이라고 합니다.
TTL 필드의 값은 홉마다 1씩 감소합니다. TTL 필드의 존재 이유는 무의미한 패킷이 네트워크상에 지속적으로 남아있는 것을 방지하는 목적입니다. 서버와 클라이언트 간의 액세스 토큰 발급에도 이를 설정합니다.

프로토콜

IP 패킷의 프로토콜은 상위 계층의 프로토콜이 무엇인지를 나타내는 필드입니다.

🌱 IPv6

약 43억개라는 IPv4 주소의 총량은 쉽게 고갈될 수 있습니다. 그래서 IPv6가 등장했습니다.
IPv6 주소는 16 바이트(128 비트)로 주소를 표현할 수 있고, 콜론으로 구분된 8개 그룹의 16진수로 표기됩니다. 다시 말해 할당 가능한 IPv6 주소는 이론적으로 2^128개 이므로 사실상 무한에 가깝습니다.

다음 헤더

다음 헤더 필드는 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킵니다. IPv6의 헤더는 기본헤더입니다. 추가적인 헤더 정보가 필요할 경우에 기본 헤더와 더불어 확장 헤더라는 추가 헤더를 가질 수 있습니다. 확장 헤더는 기본 헤더와 페이로드 데이터 사이에 위치합니다. 확장 헤더의 경우 꼬리에 꼬리르 물듯 또 다른 확장 헤더를 가질 수도 있습니다.

  • 홉 간 옵션: 모든 겨로의 네트워크 장비가 패킷을 검사하도록 하는 확장 헤더
  • 수신지 옵션: 수신지에서만 패킷을 검사하도록 하는 확장 헤더
  • 라우팅: 라우팅 관련 정보를 운반하는 확장 헤더
  • 단편: 단편화를 위한 확장 헤더
  • ESP, AH: 암호화와 인증을 위한 확장 헤더

홉 제한

홉 제한 필드는 IPv4 패킷의 TTL 필드와 비슷하게 패킷의 수명을 나타내는 필드입니다.

송신지 IP 주소와 수신지 IP 주소

송신지 주소와 수신지 주소를 통해 IPv6 주소 지정 가능합니다.

🌱 ARP

MAC 주소와 IP 주소는 함께 사용하지만 기본적으로 IP 주소를 사용합니다.
상대 호스트의 IP 주소는 알지만, MAC 주소는 알지 못 할 때 ARP 프로토콜을 사용합니다.
ARP는 동일 네트워크 내에 있는 송수신 대상의 IP 주소를 통해 MAC 주소를 파악할 수 있습니다.

ARP 요청

A는 모든 네트워크 내의 모든 호스트에게 브로드캐스트 메세지를 보냅니다.

ARP 응답

네트워크 내의 모든 호스트가 ARP 요청 메세지를 수신하지만,
B를 제외한 나머지 호스트는 자신의 IP 주소가 아니므로 이를 무시합니다.

B는 자신의 MAC 주소를 담은 메세지를 A에게 전송합니다.
이 유니캐스트 메세지는 ARP 응답이라는 ARP 패킷입니다.
B의 MAC 주소가 포함된 메세지를 수신한 A는 B의 MAC 주소를 알게 됩니다.

ARP 테이블 갱신

ARP를 활용할 수 있는 모든 호스트는 ARP 테이블이라는 정보를 유지합니다.
ARP 테이블은 IP주소와 그에 맞는 MAC 주소 테이블을 대응하는 표입니다.

호스트 A가 호스트 B의 MAC 주소를 알고 나면 호스트 B의 IP 주소와 MAC 주소의 연관 관계를 ARP 테이블에 추가합니다. 이 테이블은 일정 시간이 지나면 삭제되고, 임의로 삭제도 할 수 있습니다. 테이블을 이용하면 앞으로는 두 호스트가 통신할 때 굳이 브로드캐스트로 ARP 요청을 보낼 필요가 없어집니다.

profile
안녕하세요

0개의 댓글