2계층 데이터 링크 계층

Bam·2023년 4월 26일
0

Network

목록 보기
5/13
post-thumbnail

이번에는 OSI 7 Layer의 두 번째 계층인 데이터 링크 계층에 대해서 알아보도록 하겠습니다.

이더넷

이더넷(Ethernet)은 LAN에서 데이터 통신을 수행하기 위해 사용하는 규칙입니다.

여러 대의 컴퓨터가 통신을 할 경우 데이터들이 충돌을 일으킬 가능성이 있는데, 이더넷은 이런 충돌을 막고자 데이터들의 수신 시점을 늦추게 되어있습니다. 이 방법을 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)라고 합니다. 간략하게 이야기하자면 데이터를 보낼 때 연결된 케이블에 다른 데이터가 흐르는지 확인하고 흐르지 않으면 데이터를 보냅니다(CSMA). 그리고 추가적으로 충돌이 발생하고 있는지도 확인합니다(CD).

SDMA/CD의 동작 흐름

  1. 송신 전 busy 상태인지 확인합니다.

    busy 상태: 바쁜, 케이블이 사용 중이라는 의미.

  2. busy 상태면 대기하고 유휴 상태가 되면 RTS를 전송합니다.

    RTS: Ready To Send or Request To Send. 데이터를 전송할 의사가 있음을 알리기 위해 보내는 신호.

  3. CTS를 받게되면 그 때 전송을 시작합니다.

    CTS: Clear To Send. 수신지에서 송신지에 데이터를 받을 준비가 되었다고 알리는 신호.

  4. ACK 대기.

    ACK: Acknowledgement. 승인 신호. 이 신호는 수신측에서 데이터를 정상적으로 받았거나 송신해도 된다는 것을 알리는 신호.

무선에서는 사용하기 어렵다

SDMA/CD는 상당히 좋아보이지만 무선 매체에서는 사용하기가 어렵다는 문제가 있습니다. 바로 숨겨진 단말기 문제 때문입니다.위 그림에서 무선 A 단말기와 무선 B 단말기처럼 배치 될 경우, B 단말기는 A 단말기의 범위에 있지 않으므로 A 단말기가 데이터를 보내고 있는지 알 수가 없습니다. 따라서 busy 상태를 서로가 알지 못하는 상태여서 충돌이 발생하게 되며, 이 문제를 숨겨진 단말기 문제라고 합니다. 이러한 문제 때문에 무선 환경에서는 SDMA/CD 방식을 사용하기 어렵다는 문제가 발생합니다.

그래서 무선 환경에서는 SDMA/CA라는 방식을 사용합니다.

SDMA/CA

SDMA/CA(Carrier Sense Multiple Access with Collision Avoidance)는 무선 환경에서 충돌을 피하기 위해 사용하는 방식입니다. 이 방식은 전송 전에 캐리어 센싱이라는 과정을 거칩니다.

캐리어 센싱은 공유하고 있는 매체가 사용중인지를 확인하는 과정입니다. 수신지에 점유 시간을 알리는 등의 방식으로 사용중인지를 확인할 수 있습니다.

SDMA/CA의 동작 흐름

  1. 데이터 송신을 위해 주위의 무선 매체를 확인한다.
  2. 매체의 회선이 비어있는지 확인한다. (캐리어 센싱)
  3. 그 후 일단 정해진 시간을 대기한다.

    이 시간을 IFS(Inter-time Space)라고 합니다.

  4. 그 시간동안 특정 난수를 발생시키고 다시 대기한다. 그 후에도 매체가 사용중인지 확인하고 미사용 상태로 판단되는 시점에 데이터를 보낸다.

이더넷 규격

이더넷은 케이블의 종류, 통신 속도 등에 따라서 여러 규격으로 나뉩니다.

이 규격은 대충 [숫자 BASE n]으로 규격화 되어 있는데,

숫자는 통신 속도를 의미합니다.(Mbps 단위). BASE는 BASEBAND라는 전송 방식을 의미하고, n은 케이블 종류를 의미합니다. 숫자가 오는 것도 있고 문자가 오는 것도 있습니다.

대표적인 이더넷 규격을 4가지 소개해드리겠습니다.

  • 10BASE5: 초기 이더넷, 10Mbps, 베이스밴드, 동축 케이블 최대 길이 500m.
  • 10BASE2: 10Mbps, 베이스밴드, 최대 200m.
  • 10BASET: 10Mbps, 베이스밴드, 꼬임선 사용.
  • 10BASEF: 10Mbps, 베이스밴드, 시스템을 광케이블로 연결.

MAC 계층과 LCC 계층

데이터링크 계층은 다시 MAC 계층LCC 계층으로 나뉘어집니다.

MAC 계층

MAC: Media Access Control

MAC 계층은 전송 매체의 물리적 틍성을 반영하는 층으로, LAN의 종류에 따라서 다른 프로토콜들이 존재합니다. 대표적으로 이더넷토큰 링이 있습니다.

이더넷의 경우 데이터를 송신하기 전에 케이블이 사용중인지 확인하고 전송을 하게됩니다.

토큰 링은 데이터를 전송하기 위해 토큰이란 것을 발급 받고, 전송이 완료되면 토큰을 제출하는 식으로 데이터를 전송합니다.

LCC 계층

LCC: Logical Link Control

LCC 계층은 데이터링크 층을 소개할 때 수행한다고 했던 임무들(에러 제어, 흐름 제어, 접근 제어)를 수행합니다.


MAC 주소

MAC 주소는 데이터링크 계층에서 네트워크 통신을 하기 위해 네트워크 기기(하드웨어)에 부여되어있는 고유의 주소입니다. 즉, 통신이 가능한 장비라면 개별적으로 가지고 있는 유일한 번호라고 할 수 있습니다. 우리는 지금 컴퓨터를 이야기하고 있으므로, 컴퓨터에서는 랜카드에 MAC 주소가 부여되어 있습니다.

이더넷 헤더와 트레일러

MAC 주소를 이용한 통신에서는 목적지 주소 등을 알리기 위해 패킷에 헤더를 붙입니다. 데이터링크층에서는 헤더에 이더넷 헤더트레일러를 붙여서 다음 계층으로 보냅니다.

이더넷 헤더

이더넷 헤더목적지의 MAC주소(6바이트), 수신지의 MAC주소(6바이트), type(2바이트)의 정보가 담긴 14바이트의 정보입니다.

목적지와 수신지의 MAC 주소는 말 그대로, 송수신지의 MAC 주소를 의미합니다. 그리고 type은 이더넷으로 전송되는 상위 계층의 프로토콜의 종류를 의미하는 번호가 들어갑니다.

트레일러

트레일러FCS(Frame Check Sequence)라고도 하며 데이터 전송 과정에서 오류가 발생했는지를 검출하기 위해 사용이됩니다.

프레임

데이터에 이더넷 헤더와 트레일러가 추가되게 되면 이것을 프레임이라고 부릅니다. 이더넷에서는 7개의 필드가 모여 하나의 프레임 포맷을 이루게 됩니다.

Preamble, SFD, 목적지 주소, 송신지 주소, 타입/길이, 데이터, FCS(CRC)

  • Preamble: 수신지에 프레임이 전송됨을 알리고, 프레임의 전기 신호(0과 1)을 구분할 수 있도록 syncronization 신호를 제공한다.
  • SFD(Start Of Frame): 프레임의 시작을 알린다.
  • 목적지 주소, 송신지 주소: 각각 목적지와 송신지의 MAC 주소를 표시한다.
  • 타입/길이: 위에서 언급한 프로토콜의 종류 표시. 이때 값이 1,500이하면 프레임 데이터 필드의 길이도 표시해준다.
  • 데이터: 실제 데이터의 부분. 46byte ~ 1,500byte의 크기를 갖는다. 46byte 미만의 데이터는 빈 공간을 의미없는 부호로 채워준다.
  • FCS(CRC, Cyclic Redundancy Check): 에러를 검출하는 필드이다.

반이중 통신, 전이중 통신

이번엔 데이터가 충돌하지 않는 구조에 대해 알아보겠습니다.

simplex라는 단방향 통신도 존재하는데, 이것은 라디오/TV처럼 일방적으로 받거나 주는 경우에만 사용합니다.

반이중 통신

반이중 통신(half-duplex)는 양방향 전송이 가능하지만, 동시에는 불가능한 방식입니다. 즉, 회선 하나로 송신과 수신을 번갈아가면서 사용하게 됩니다. 데이터가 짧고 가벼우면 번갈아가는 속도가 매우 빨라져서 전이중과 차이점이 없지만, 용량이 커지면 상당히 느려지게 됩니다.

전이중 통신

전이중 통신(full-duplex)는 데이터의 송수신을 동시에 수행합니다. 데이터를 동시에 전송해도 충돌이 일어나지 않으므로 주로 전송량이 많거나 전송 매체 용량이 큰 경우에 사용합니다.

두 컴퓨터를 직접 연결할 경우 LAN선이 주로 8개의 선을 2쌍씩 꼬아 4개의 쌍을 이용하므로, 컴퓨터1에 송수신선(2쌍), 컴퓨터2에 송수신선(2쌍)을 연결하여 사용할 수 있게 되는 것입니다.

따라서 비교해보면, 같은 조건에서는 전이중 통신이 훨씬 유리하다는 것을 알 수 있습니다.

모뎀, 허브 등이 반이중 통신 방식을 이용합니다. 앞서말한 효율의 문제 때문에 전이중 통신이 가능한 스위치(switch)를 주로 사용하고 있습니다.

0개의 댓글