CS/네트워크

#8 Link Layer(Data Link Layer + Physical Layer)

Scala0114 2021. 11. 25. 16:13

1. Broadcast Medium(공용 채널)

  • 네트워크 계층에서 봤던 추상화된 형태와는 달리 실제로 라우터와 호스트,
    라우터와 라우터의 사이에는 전용 회선이 존재하는 것이 아닌 경우가 많음

  • 실제로는 사이에 다른 호스트나 라우터와 함께 사용하는 공용 채널이 존재하는 경우가 대부분이며
    이러한 매체를 Broadcast Medium 이라 한다.

 

 

2. MAC(Medium Access Control) 프로토콜

  • 송신한 데이터가 공용 채널에서서로 충돌하여 쓰레기 데이터가 되는 것을 막을 방법이 필요
    => Medium Access (Control) Protocol - MAC

    => WIFI 도 공기를 Broadcast Medium으로 하는 MAC 프로토콜의 일종(802.11)


  • 이상적인 MAC 프로토콜의 지향점(링크 대역폭이 R일 때)
    • 하나의 노드만이 통신을 수행할 경우 대역폭 전체(R)를 사용할 수 있다.
    • N 개의 노드가 통신을 수행할 경우 대역폭 전체를 N으로 나눈 R/N 만큼의 대역폭을 사용할 수 있다.
    • 통신을 관리하는 특별한 노드가 존재하지 않는다(모든 노드가 동등한 입장)
    • 단순하게 동작해야한다.

  • 접근법
    • Partitioning
      • TDMA(Time Division Multiple Access)
        • 각 노드에게 회선을 사용할 수 있는 시간 슬롯을 배정하는 방식
        • 주어진 시간동안은 모든 주파수 대역을 사용할 수 있음
        • 동시 사용자가 적을 경우 시간 슬롯이 낭비될 수 있음

      • FDMA(Frequency Division Multiple Access)
        • 각 노드에게 주파수 대역을 나누어 배정하는 방식
        • 아날로그 방식으로 구현이 간단함
        • 인접채널간 간섭문제를 해결하기 위해 주파수 대역사이에 가드밴드가 필요해진다
          => 가드밴드로 인해 낭비되는 주파수대역 생김
      • 주파수 대역이나 시간 슬롯이 낭비되지 않는 경우(사용자가 많은 경우)에 유리

    • Random Access
      • Partition 방식의 경우 충돌방지는 확실하게 되지만 주파수대역 낭비나 시간슬롯 낭비의 문제가 있음
      • 노드들이 원하는 타이밍에 통신을 수행하는 방식
      • 사용자가 적을 경우 Partitioning에 비해 효율적

      • CSMA(Carrier Sense Multiple Access)
        • 공용 채널이 사용되고 있지 않다고 판단되면 통신을 실시하는 방식
        • 충돌(Collision)
          • 한 노드가 다른 노드가 통신을 먼저 시작한것을 인식하기 전에 통신을 시작한 경우
            발생하는 충돌을 미연에 방지하는 것은 불가능.

          • 충돌이 발생하는 것을 전제로 충돌로 인한 피해를 최소화하는 방식을 사용
            => CSMA/CD(Collision Detection)
            => 한쪽이 충돌발생을 탐지하고 바로 전송을 멈춘다
            => 랜덤 타이머를 설정하고 타임아웃시 재전송
            => 충돌이 발생할 때마다 타이머의 시간을 두 배씩 늘려간다

          • 유선통신의 경우 충돌 감지 자체는 쉽게 가능

    • Taking Turns
      • polling
        • 하나의 중심 호스트(master)가 연결된 다른 호스트(server)들에게 전송할 데이터가 있는지
          확인하여 전송하도록 하는 방식

      • token passing
        • token을 가진 호스트만이 전송을 할 수 있도록 하는 방식

      • 두 방법 모두 한가지 문제가 발생하면(master의 고장, token의 유실 등) 치명적인 문제가
        발생하는 single point failure 문제로 실제로는 잘 사용되지 않음

 

 

3. 이더넷(Ethernet)

  • 유선 케이블 상황에서의 MAC 프로토콜
  • Random Access 방식을 사용(CSMA/CD)
  • 이더넷 프레임
    • Preamble / SFD
      • 비트동기, 프레임동기를 위한 부분
      • Physical Layer의 헤더부분

    • DA(Desination Address) / SA(Source Address)
      • 목적지와 출발지의 MAC 주소

    • Len/Type
      • 값이 0x0600 미만이면 프레임의 데이터 영역(Data + Padding)의 길이로 해석
      • 0x0600 이상이면 Data부분에 담겨있는 상위 프로토콜의 타입으로 해석
        => ARP 쿼리, ARP 리스폰스 등

    • Data
      • IP 패킷이 들어있는 부분
      • 뒤에 따라오는 Padding 부분은 0으로 채워진다.

    • FCS(Frame Check Sequence)
      • 수납된 데이터의 에러 검출을 위한 CRC

  • 신뢰성있는 전송
    • 전송에 대한 피드백이 없는데 전송이 정상적으로 완료됐는지 확인하는방법
      => 외부 간섭이 없는 유선연결이기에 회선(채널)내에서의 충돌만 없다면 전송된것으로 볼 수 있음

    • 충돌을 탐지하기 전에 전송이 종료되면 전송에 실패한 데이터를 재전송하지 못함
      => 전송측이 충돌을 탐지하기 위한 충분한 시간을 기다려줄 필요가 있음
      => 전송할 프레임의 길이가 충분하면 충돌을 감지할 수 있음
      => 이더넷은 이를 위한 프레임의 최소길이를 지정

    • 보내려는 데이터의 크기가 프레임 최소길이보다 작다면?
      => 0으로 채워진 padding 부분을 붙여 최소길이를 만족시킴

  • MAC 주소와 ARP
    • MAC 주소
      • 네트워크 랜카드가 가지고있는 고유 주소
      • 랜카드가 제조된 시점부터 바뀌지 않는 값

    • ARP(Address Resolution Protocol)
      • IP 주소를 물리적 네트워크 주소에 바인딩하기 위한 프로토콜

      • 모든 호스트는 포워딩 테이블을 통해 IP패킷을 보낼 다음 목적지(next hop)를 알 수 있지만
        그 IP에 해당하는 MAC 주소를 알지 못해 링크 레이어 레벨에서의 전송이 불가능하다.
        이를 해결하기 위해서 ARP 프로토콜을 통해 IP주소에 해당하는 MAC 주소를 알아내야한다.

      • 절차
        • 전송측은 프레임의 데이터/타입 영역에 IP패킷 대신 목적지 IP주소에 해당하는
          MAC 주소를 요청하는 ARP 쿼리를 담아 네트워크상에 존재하는 모든 호스트들에게
          브로드캐스트

        • 전송측이 보낸 ARP 쿼리를 받은 호스트중 자신의 IP가 쿼리에서 원하는 IP주소와 일치하는
          호스트는 자신의 프레임의 데이터/타입 영역에 ARP 응답(리스폰스)을 담아 전송하는 것으로
          자신의 MAC 주소를 알림

        • 전송측은 얻은 MAC 주소를 ARP 캐시(테이블)에 저장하고 이를 참조하여 목적지 IP에 해당하는
          MAC 주소로 IP패킷을 담은 이더넷 프레임을 전송

 

 

4. 이더넷 네트워크의 물리적 형태

  • 버스(Bus)
    • 90년대 중반까지 주로 사용되었던 형태

    • 모든 노드가 하나의 충돌 도메인을 가지기에 호스트들간에 충돌이 발생할 수 있음

  • 스타(Star)
    • 현재 주로 사용되고있는 형태
    • 여러 호스트들의 중심에 스위치가 존재하며 스위치와 각 호스트들 사이에는 전용 회선이 존재

    • 스위치는 연결된 호스트들로부터 전송된 프레임을 버퍼에 담아두고 처리해나간다.

    • 스위치의 각 인터페이스가 어느 호스트와 연결되어있는지를 학습해나가며 
      스위치 포워딩 테이블을 생성하여 이를 토대로 프레임들의 전송을 처리한다.

    • 학습의 절차
      • 프레임을 전송받은 순간 전송한 호스트의 위치를 파악, 테이블에 저장
      • 목적지의 위치를 모를 경우 flooding(브로드캐스트) 을 통해 위치를 알아내고 테이블에 저장
      • 테이블을 참조하여 해당하는 목적지로 프레임을 전송
      • 처음에는 테이블을 채워나가기 위해 flooding 이 발생하지만 시간이 조금 지나고나면
        테이블이 완성되어 바로 포워딩을 할 수 있다. 
    • 스위치를 사용하는 것으로 보다 쉽게 이더넷 네트워크의 규모를 확장할 수 있다.

    • 스위치가 행하는 포워딩을 스위칭이라고도 한다.
    • 스위치는 MAC 주소를 가지지 않는다(사용자입장에선 보이지 않는다)