[Network] 네트워크 공부 - Layer2 / 데이터 링크 계층 (1) 이더넷, CSMA/CD, MAC주소, 프레임

    반응형

     

    2계층 : 데이터 링크(Data Link) 계층

    • "가까이 있는 컴퓨터끼리 통신을 어떻게 하는 지 정의하는 것"
    • 물리 계층(1계층)에서는 데이터를 단순히 물리적인 신호로 바꿔서 전달만 했었지만,
    • 데이터 링크 계층(2계층)에서는 물리적 주소인 MAC 주소를 부여해 원하는 기기에만 데이터를 전달할 수 있도록 한다.
    • 물리 계층을 통해 송수신 되는 정보의 오류 검출 + 흐름 제어를 수행해 신뢰성 있는 데이터 전송을 위해 동작한다.
    • 프로토콜: 이더넷(Ethernet)
    • 전송되는 단위: 프레임(Frame)
      • 물리 계층으로 데이터를 보내기 위해, 비트(Bit)들을 일정한 크기의 논리적인 단위인 프레임(Frame)으로 묶어서 안전하게 전달한다.
      • 프레임(Frame)은 헤더(Header)와 트레일러(Trailer)를 추가하여 데이터 경계를 표시한다.
      • 프레임(Frame)에 물리적 주소(MAC 주소)를 부여하고, MAC 주소로 통신을 한다.
    • 장비: 브리지, 스위치

     

     

    이더넷(Ethernet)

    • 유선 컴퓨터 네트워킹 기술의 한 종류
    • 근거리 통신망(LAN)에서 사용되는 네트워킹 방법
    • 장비들(하드웨어)이 서로 통신할 수 있도록, 데이터를 주고받는 규칙과 방법을 정의하는 표준
      • 1983년에 'IEEE 802.3' 이라는 이름으로 국제 표준화 되었다.
      • 오늘날 거의 모든 네트워크 장비가 이더넷 기반이다.

     

     

    CSMA/CD

    • 초기 이더넷 환경에서 네트워크 매체(케이블)에 대한 접근을 제어하고, 데이터 충돌을 관리하기 위해 사용되었던 프로토콜
    • Carrier Sense Multiple Access / Collision Detection  ⇒ 이렇게 3개로 나눠서 보면 이해하기 쉽다.

     

    1. Carrier Sense (네트워크 상에 나타나는 신호 감지)

    • 상황
      • 어떤 PC나 장비가 데이터를 보내고 싶을 때
    • 행동
      • 다른 장비가 데이터를 보내고 있는지 확인한다.
        ⇒ 네트워크 상에서 통신이 이루어지고 있는지 신호(Carrier)를 감지(Sense)
    • 결과
      • 신호가 감지되면 (O) → 일단 대기
      • 신호가 감지되지 않으면 (X) → 데이터를 보낼 수 있는 상태

     

    2. Multiple Access (다중 접속)

    • 상황
      • 신호가 감지되지 않는 상태일 때
    • 행동
      • 보내고 싶은 데이터를 네트워크 케이블에 실어 보낸다.
    • 결과
      • 네트워크 상에 연결된 여러 장비들 중, 어떤 장비든 신호가 감지되지 않는 상태(데이터를 보낼 수 있는 상태)라면, 자유롭게 데이터를 전송할 수 있다.
        ⇒ 조건만 충족되면, 여러 장비들(Multiple)에서 데이터 전송(Access)이 발생

     

    3. Collision Detection (충돌 탐지)

    • 상황
      • 데이터를 보내는 도중에
    • 행동
      • 서로 데이터를 보내다가 충돌(Collision)이 발생하지 않는지 계속 감시(Detection)한다.
    • 결과
      • 충돌이 없다면 (X) → 성공적으로 데이터 전달
      • 충돌이 있다면 (O) → “충돌이야!” 라는 신호(잼 신호)를 보내서 모두에게 알리고, 현재 진행되고 있던 데이터 전달을 즉시 멈추고 + 임의의 시간(백오프 시간) 동안 기다린 다음, 다시 Carrier Sense 부터 시작

    cf.) 충돌이 연속으로 15번 반복되면, 데이터 전송을 더이상 시도하지 않고 중단한다.

     

     

    MAC 주소 (MAC Address)

    • MAC = Media Access Control
    • 네트워크 장비의 고유한 식별 번호 (세상에 단 하나밖에 없는 유일한 값)
      • 사람으로 치면, 주민등록 번호 or 핸드폰 번호 같은 존재이다.
      • NIC(Network Interface Card, 랜카드)에 제조 단계에서 새겨져 나오기 때문에, '하드웨어 주소' 라고도 부른다.
    • 48bit / 16진수 / 12자리 로 구성되어 있다.
      • 앞의 24비트 (3바이트)
        • OUI (Organizationally Unique Identifier) : 제조사(벤더) 고유 번호
      • 뒤의 24비트 (3바이트)
        • NIC (Network Interface Controller Specific) : 제조사에서 자체적으로 할당한 Host Identifier (시리얼 넘버)

    ⇒ 즉, 제조사 + 일련번호 형식 (ex. 삼성에서 만든 + 123번 카드 같은 느낌)

    • 8자리마다 ' - ', ' : ', ' . ' 으로 구분해서 사용한다.
      • 00-60-97-8F-4F-86
      • 00:60:97:8F:4F:96
      • 0060.978F.4F86

     

    cf.) MAC 주소 확인하는 방법 (Windows 기준)

    ⇒ cmd 창에 'ipconfig /all' 명령어 입력

     

     

    프레임(Frame)

    • 데이터 링크 계층의 데이터 단위 (데이터를 전송하려는 논리적인 단위)
    • 쉽게 이해하기 위한 예시
      • 택배 상자에 내용물을 담아서, 주소와 송장 정보를 붙여서 보내는 것과 같음
        ⇒ 여기서 택배상자가 = 프레임(Frame)

     

    Frame 구조 (IEEE 802.3 기준)

    < MAC Frame (Ethernet Frame) : 64~1518 byte >

    1. MAC Header : 14 byte

    • DA : 6 byte
      • Destination MAC Address
      • Frame을 전달받을 목적지 장비의 MAC 주소

     

    • SA : 6 byte
      • Source MAC Address
      • Frame을 보낸 출발지 장비의 MAC 주소

     

    • Len/Type : 2byte
      • Length / Type
        • Frame 내 데이터 부분의 길이를 나타내거나
        • MAC Frame이 전달하는 상위 계층 프로토콜의 종류(ex. IP, ARP 등)를 나타냄
          • IPv4 (0 8 0 0)
          • IPv6 (0 8 D D)
          • ARP (0 8 0 6)

     

    2. Data (Payload) : 46~1500 byte

    • 상위 계층에서 내려온 데이터 (실제 전송하려는 데이터)
    • 최소 크기: 46 byte
      • 46 byte 보다 짧으면 → 부족한 부분을 채우기 위해 자동으로 Padding 이 추가된다.
        • Padding 은 일반적으로 0으로 채워진다.
        • 데이터 내용과 무관하고, Frame의 최소 크기를 맞추는 용도이다.
    • 최대 크기: 1500 byte
      • MTU: Maximum Transmission Unit
      • 택배 트럭 한 대에 실을 수 있는 최대 적재량을 정하는 것과 같다.
        (정해진 적재량 보다 큰 짐은 여러 개로 분할해서 보내야 하겠지)
      • 네트워크를 통해 한 번에 보낼 수 있는 데이터 양을 결정한다.
      • 적절한 MTU 설정은 불필요한 패킷 분할을 줄여서, 데이터 전송 효율을 높이고 & 네트워크 혼잡을 감소시킨다.

     

    3. Trailer : 4 byte

    • FCS
      • Frame Check Sequence
      • 오류 검출을 위한 필드
      • 전송된 Frame이 손상되지 않고 잘 도착했는지 확인하는 데에 사용된다.
      • CRC(Cyclic Redundancy Check) 값을 포함한다.
        • Frame의 무결성을 검증하는 데 사용된다.
        • [ DA + SA + Len/Type + Data ] 영역을 계산해서 에러를 판별한다.

     

     

    <물리 계층 헤더 : 8 byte>

    • 물리 계층(1계층)에서 전송을 준비하는 데 사용되는 부분
    • 물리적인 신호 전송 과정에서 수신자와 ↔ 송신자의 동기화를 맞추고, Frame의 경계를 표시한다.
    • '물리 계층 헤더' 라고 넓게 표현되지만, 그 역할이 일반적인 헤더와는 약간의 차이가 있다.
      • '헤더(Header)'는 각 계층에서 데이터에 덧붙여지는 제어 정보를 의미한다.
        ex) 데이터 링크 계층(2계층) 헤더에는 → 출발지/목적지 MAC 주소, 타입/길이 등의 정보가 포함된다.

     

    1. Preamble : 7 byte

    • 0과 1이 반복되는 패턴
    • 수신 측이 클럭 동기를 맞추는 용도
      • 네트워크 장비에는 일정 속도로 데이터를 읽고 / 쓰는 시계(clock)를 가지고 있다.
        ex) 1초에 몇 비트(0과 1)를 주고 받을까? → 이게 '전송 속도(bps)' 를 의미
      • 만약에, 송신 측은 1초에 100만 번 보내는데 / 수신 측은 1초에 90만 번만 읽는다고 하면 → 데이터가 어긋나서 잘못 해석된다.
        ⇒ 즉, 송신자가 보낸 비트와 ↔ 수신자가 비트를 읽는 타이밍(속도)이 안 맞아서 통신 오류가 발생할 수 있다.
      • 그래서 수신 측은 송신 측의 클럭에 발을 맞추는 과정이 필요하다.
        ⇒ 클럭 동기(Clock Synchronization)

     

    2. SFD : 1 byte

    • Start Frame Delimiter(구분자)
    • Frame 시작을 알린다.
    • 10101011 패턴 (국제 표준에 따라 정해진 고정된 값)
    • 수신 장치가 Preamble을 통해 동기화를 마친 후 → MAC Frame 데이터의 시작점을 정확히 파악할 수 있도록 해주는 중요한 역할을 한다.

     

     

    cf.) 헷갈리는 부분 정리

    • [ Preamble + SFD ]는 실제로 'Frame 전송'에 필수적인 부분이다.
    • Frame 이라는 단어를 이야기할 때, [ Preamble + SFD ]도 구성 요소로 포함은 된다고 볼 수 있다.
    • 다만, 실제로 우리가 '데이터' 라고 말하는 부분은 [ Preamble + SFD ]을 제외한 나머지를 말한다.
    • 쉽게 말하자면,
      • 3계층 → 2계층 (캡슐화)
        : MAC Header + (3계층에서 온 패킷) + Trailer  ⇒ MAC Frame (실질적인 데이터)
      • 2계층 → 1계층 (캡슐화)
        : Preamble + SFD + (MAC Frame)  ⇒ Frame (물리적 전송용 데이터)

     

    반응형

    댓글