혼공 학습단/혼자 공부하는 네트워크

[혼자 공부하는 네트워크] 네트워크 계층의 IP프로토콜

uomnf97 2024. 7. 19. 16:32
안녕하세요! 제이덥입니다. "혼자 공부하는 네트워크" 도서를 통해 네트워크에 대해 학습하고, 공부한 내용을 공유하는 3주차입니다. 이번 섹션에서는 네트워크 계층의 필요성에 대해 설명하고, 그 필요성을 충족시켜주는 IP 프로토콜(IPv4, IPv6)에 대해 다룹니다. 이번 섹션을 통해 어떻게 먼 통신이 가능하게 되었는지 이해할 수 있어서 매우 유익했다고 생각합니다. 함께 들어가 보시죠.
*이 도서는 제가 직접 구매하여 작성한 글이며, 혼공단 11기 활동의 일환으로 학습 내용을 공유하고자 합니다. 도서와 활동에 대한 자세한 내용은 아래 Reference에서 확인하실 수 있습니다.

1️⃣ 데이터 링크 계층의 한계, 네트워크 계층의 필요성

  • 데이터 링크 계층
    • 데이터 링크 계층은 같은 LAN안에 호스트끼리 통신할 수 있는 MAC주소를 알 수 있는 기능을 지원함
    • 다만, LAN선을 넘어서는 다른 네트워크와의 통신, 즉, 다른 도시나 국가간의 네트워크끼리 통신은 지원하기 어려움
  • 데이터 링크의 한계점 :: 다른 네트워크와 통신할 수 없는 2가지 이유
    • 첫 번째 이유 : 물리 계층+데이터 링크 계층을 이용해도 여전히 다른 네트워크까지의 도달 경로 확인이 불가능
      • 물리계층+네트워크 계층의 목적: LAN만을 취급 → 다른 네트워크와 통신하기 위해서는 라우팅이 필요하나 해당 기능을 지원하지 않음
      • 라우팅이란? 패킷이 이동하는 최적의 경로를 결정하는 것
      • 라우터(router) : 라우팅을 수행하는 장비로 네트워크 계층만 가지고 있음
      • 정리 : 통신을 할 때 필요한 패킷은 지구 반대편으로 전달하기 위해서는 수많은 네트워크 장비를 이용함으로 라우팅을 통해 최적의 경로를 선택해야함. 하지만, 물리계층+데이터 링크 계층의 기능으로는 라우팅을 지원할 수 없으므로, 라우터를 가지고 있는 네트워크 계층이 필요
    • 2 번째 이유 : MAC주소만으로도 모든 네트워크의 호스트의 위치를 특정하기 어려움
      • 모든 호스트, 모든 네트워크에 속한 MAC주소를 서로 알고 있기 어려움 → MAC주소로 모든 호스트를 특정하기 어려움
      • 네트워크의 수신지를 특정할 수 있는 논리적 주소인 IP주소를 이용함으로써 해당 기능을 서포트 할 수 있음
        구분 MAC 주소 IP 주소
        계층 물리 계층, 데이터 링크 계층 네트워크 계층
        역할 NIC마다 할당된 고정된 주소 DHCP와 같은 프로토콜을 통해 자동으로 할당 및 직접 할당 가능
        개수 한 호스트가 복수의 MAC주소를 가질 수 있음 한 호스트가 복수의 IP주소를 가질 수 있음
        *DHCP : Dynamic Host Configuration Protocol
    • 결론 : 물리 계층과 데이터링크 계층으로만은 경로 설정과 수신지를 지정하는 것이 불가능하기 때문에 해당 기능을 지원하는 네트워크 계층이 필요

2️⃣ 인터넷 프로토콜

  • 인터넷 프로토콜(IP 프로토콜)
    • 정의: 데이터 패킷이 네트워크를 통해 이동하고 올바른 대상에 도착할 수 있도록 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜 또는 규칙의 집합으로
    • 네트워크 계층의 핵심적인 프로토콜로 IP 버전 4(IPv4), IP 버전 6(IPv6) 2가지 존재
      • 일반적으로는 IPv4를 사용하기에 IPv4를 의미하는 경우가 많음
    • IPv4 주소 형태
      • 크기 : 4바이트(32비트)
      • 숫자당 8비트임으로 0~255 범위의 10진수로 표기하여 .으로 구분
        ex) 128.27.1.1
      • 구분된 숫자(0~255범위의 10진수)를 옥텟(octet)이라고함
    • IP의 기능
      • RFC 791 : IP의 역할은 IP주소 지정과 IP 단편화 크게 2가지 기능을 가지고 있음
      • IP 주소 지정(IP Addresing)이란 : IP주소를 바탕으로 송수신 대상을 지정하는 것
      • IP 단편화(IP fragmentation) : 전송하고자 하는 패킷의 크기가 MTU라는 최대 전송 단위보다 클 경우 이를 MTU이하의 복수의 패킷으로 나눈것
      • MTU(Maximum Transmission Unit) : 한 번에 전송 가능한 패킷의 최대 크기. 헤더가 포함되며 일반적으로 1500 바이트이고 수신지에서 재조합되어 사용
    • 💡 RFC(Request for Comments) 문서
      • 정의 : 네트워크/인터넷 신기술 제안 등을 남긴 문서로 오늘날까지 표준이됨
      • RFC ### 형태로 적혀있으며, 수정/폐지가 되지 않으므로 찾고 싶은 내용은 RFC + RFC번호를 통해 쉽게 살펴보고 싶은 문서를 찾을 수 있음
  • IPv4
    • IPv4의 패킷의 구성
      출처 : 위키백과
      • 옵션이나 패딩 필드는 헤더에 포함되어 있는 정보이지만 선택적으로 존재, 헤더 길이는 가변적
      • 헤더에 핵신 기능인 IP 단편화, IP 주소 지정과 같은 데이터 필드 존재
        • IP 단편화 기능 : 식별자, 플래그, 단편화 오프셋 필드
        • IP 주소 지정 기능 : 송신지 IP주소, 수신지 IP 주소
      • 중요 필드 해체 분석하기
        1. 식별자 :
          • 정의 : 패킷에 할당된 번호
          • 용도 : 재조합하기 위해 어떤 메시지로부터 나뉘어졌는지 인식하기 위함
        2. 플래그
          • 정의 : 플래그를 통해 단편화 관련 정보를 제공하기 위함
          • 세개의 비트로 구성됨
            • 첫 번째 비트 : 0으로 예약된 비트(사용 X)
            • 두 번째 비트 : DF(Don’t Fragment) 비트
              • 값이 1 : 단편화 수행 X / 값이 0 : 단편화 가능
            • 세 번째 비트 : MF(More Fragment) 비트
              • 단편화 된 패킷이 더 있는지 나타내는 비트
              • 값이 1 : 쪼개진 패킷이 더 있음 / 값이 0 : 마지막 패킷임을 의미
        3. 단편화 오프셋 :
          • 정의 : 패킷이 단편화 되기 전 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지 의미
          • 용도 : 순서대로 도착하지 않을 수도 있어, 순서대로 조합하기 위해 해당 정보로 사용
        4. TTL(Time To Live) :
          • 정의 : 패킷의 수명을 의미
          • 동작원리 : 하나의 라우터를 거칠 때 마다 1씩 감소되며 0으로 떨어진 패킷은 폐기
            • 홉(hop): 호스트 또는 라우터에 한번에 전달되는 되는 것을 말함
            • 이 홉을 단위로 하나씩 감소함
          • 용도 : 무의미한 패킷이 네트워크 상에 존재하는 것을 방지
        5. 프로토콜
          • 정의 : 상위 계층의 프로토콜이 무엇인지 나타내기 위함
          • 예) TCP 6번, UDP 17번 등이 표기
        6. 송신지 IP 주소 & 수신지 IP 주소
          • 송수신지의 IPv4 주소를 특정할 수 있게 해줌
  • IPv6
    • IPv4의 태생적 한계
      • IPv4의 주소는 4바이트로 표현이 되고, 0~255사이의 숫자 4개로 이루어져있기 때문에 이론적으로 43억개의 주소를 할당할 수 있음 ⇒ 2011 모든 IP주소가 할당된 상황(위키백과)
        • IP주소를 가질 수 있는 장치가 컴퓨터 뿐만이 아니라 스마트폰, TV, 냉장고, 노트북 등 다양해졌고, 1인당 1~2개의 IP주소는 가질 수 있게 되어 상당히 부족해졌음
      • IPv4의 부족한 주소 수를 보충하기 위해 IPv6가 고안됨
    • IPv6 주소
      • 크기 : 16바이트(128비트)
      • 표현방식: 콜론(:)으로 구분된 8개 그룹의 16진수
      • 표현 범위 : 이론적으노 2의 128으로 거의 무한에 가까운 수
      • 예시 ) :
        • 2001: 0230:abcd:ffff:0000:0000:ffff:1111
    • IPv6의 패킷
      • IPv4보다 간소화된 형태, 40바이트로 고정적 크기를 가짐
      • 핵심 필드 4가지
        1. 다음 헤더(next header) : 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가르킴
          • 확장 헤더(extension header)란?
            • IPv6의 헤더는 기본 헤더를 말하는데, 이 때 추가적인 헤더 정보가 필요할 때 추가적인 정보를 추가한 헤더를 확장헤더라고 부름
          • 확장 헤더는 기본 헤더와 페이로드 사이에 위치
          • 연결리스트처럼 또 다른 확장 헤더를 추가할 수 있음
          • 확장 헤더의 종류
            • 홉 갑 옵션(Hop-by-Hop Options) : 송신지에서 수신지에 이르는 모든 경로의 네트워크 장비가 패킷을 검사
            • 수신지 옵션(Destination Options) : 수신자에서만 패킷을 검사하도록 하는 옵션
            • 라우팅(Routing): 라우팅 관련 정보를 운반
            • 단편화(Fragment) : 단편화를 위한 정보 저장
            • ESP(Encapsulating Security Payload): 암호화 정보
            • AH(Authentication Header) : 인증 정보
      1. 홉제한(hop limit)
        • 역할 : 패킷의 수명을 나타내는 필드
      2. 송신지 IP 주소 & 수신지 IP 주소
        • 송수신지의 IPv4 주소를 특정할 수 있게 해줌
        💡 IPv6의 단편화
      • 단편화 확장 헤더를 이용해 이루어짐
      • 단편화 확장 헤더의 구성
        • 다음 헤더 필드 : 또 다른 확장 헤더 혹은 상위 프로토콜을 가르키기 위함
        • 예약됨(reserved)/예약(reserve) : 0으로 설정, 사용되지 않음
        • 단편화 오프셋(fragment offset) : 전체 메시지에서 현재 단편화된 패킷의 위치
        • M 플래그(M flag): 1일 때 더많은 패킷이 존재함 / 0일 때 마지막 패킷
        • 식별자(Identification): 동일한 메시지에서 단편회되었는지 아닌지 식별

2️⃣ ARP(Address Resolution Protocol)

  • 정의 : 상대 호스트의 IP주소는 알지만, MAC주소를 알지 못하는 상황에서 쓰는 프로토콜로 동일 네트워크 내에 송수신 대상의 IP주소를 통해 MAC 주소를 알아냄
  • 단계
    • 1단계 : ARP 요청(ARP Request)
      • 동일 네트워크내에 모든 호스트에게 브로드캐스트 메시지를 보냄
    • 2단계 : ARP 응답(ARP Reply)
      • 같은 IP주소를 가진 호스트는 자신의 MAC 주소를 다은 ARP 패킷을 보냄 → 보내고 싶은 호스트의 MAC 주소를 특정할 수 있게됨
    • 3단계 : ARP 테이블 갱신(ARP Table)
      • MAC주소 테이블을 대응하는 표
      • ARP 패킷을 통해 얻은 호스트의 주소를 추가함 → 이를 통해 매번 ARP 요청을 보낼 수 있는 필요가 없게됨
      • 시간이 지나면 삭제되고, 임의로 삭제 가능
        출처 : 내 MAC 에서 검색어를 통해 조회한 내용
  • 💡 ARP 패킷의 구성
    • 오퍼레이션 코드(Opcode: Operation Code) : ARP 패킷의 유형 / 요청은 1, 응답은 0
    • 송신지 하드웨어 주소, 수신지 하드웨어 주소 : 송수신지의 MAC 주소
    • 송신지 프로토콜 주소, 수신지 프로토콜 주소 : 송신지 수신지의 IP 주소
  • 다른 네트워크 일 경우 : 외부로 나가기 위한 장비(라우터)의 MAC주소를 알아내 전달, ARP 프로토콜 외에 다른 프로토콜도 사용

4️⃣ IP 단편화에 대한 깊은 이해

  • IP 단편화는 되도록 하지 않는 것이 좋다
    • 이유:
      • 불필요한 패킷의 헤더 증가 → 트래픽 증가 / 대역폭 낭비
      • 쪼개진 패킷을 하나로 합치는 과정에서 성능 저하 야기 할 수 있음
  • 단편화를 피할 수 있는 방법
    • 모든 호스트의 처리 가능한 MTU크기를 고려 → 경로 MTU(송수신 호스트와 거쳐가는 라우터의 MTU)의 크기만큼 전송
      • 경로 MTU 발견(Path MTU discovery) :경로 MTU를 구할 수 있는 기술
      • 모든 네트워크에서 이를 지원하고, 최대 MTU크기도 균일해 단편화가 자주 실행되지는 않음
    • DF플래그를 통해 경로 MTU를 알아가게됨

Reference :