5장 프레임 구조

zoo_gathers·2024년 12월 5일

컴퓨터 네트워크

목록 보기
11/20

이번 시간에는 프레임의 구조에 대해서 볼 것이다.

프레임은 데이터로 MAC 프레임의 구조를 확인해보자.

우리가 주로 LAN 환경에서 데이터 링크 계층을 2가지로 나눈다고 했다.

1개는 LLC 계층(위)이고 다른 1개는 MAC 계층(아래)이다.

이때 MAC 계층의 특성은 물리적인 특성을 가지고 반영해서 제어한다는 것이었다.
(어떤 식으로 네트워크를 구성할 것인지, 어떤 전송매체를 가지고 연결할 것인지 등등의 물리적인 특성을 고려해서 제어하는 부분)

어떤 연결 방식으로 할 것인지에 대해서는 우리가 LAN 네트워크에서 주로 버스와 링이 있었다.

CSMA/CD 방식과 토큰 링 방식에 대해서 배웠는데

그럼 MAC 계층은 CSMA/CD 방식과 토큰 링 방식 중 하나를 골라 제어하게 될 것인데

이때 CSMA/CD와 토큰 링 방식의 프레임(데이터) 구조가 같을까?

전송하는 방식도 연결되는 방식도 다르기 때문에 전달되는 데이터의 구조도 다를 것이다.

그래서 우리가 배울 것은 먼저 CSMA/CD 방식의 프레임을 볼 것이다.

우리가 흔히 부르는 이더넷 프레임의 구조에 대해서 보자.

이더넷 = MAC 계층의 프레임이다.

위 사진이 이더넷 프레임 구조이다.

위 사진을 보면 DATA + PADDING 부분이 있는데

이 부분은 네트워크 계층에서 헤더가 붙은 데이터 덩어리를 패킷이라고 부르는데 이 패킷이 데이터링크 계층으로 내려오면서 이 패킷이라는 데이터가 DATA + PADDING 부분에 들어가게 된다.

그리고 앞, 뒤로 또 헤더가 붙게 되고 이 데이터링크 계층에서도 마찬가지로 헤더가 붙으면 거기에 추가적으로 트레일러가 붙는다.

트레일러 = 뒤에 붙는 추가적인 정보

DATA + PADDING = 위의 계층에서 내려온 데이터

앞에 내용들은 데이터링크 계층에서 붙은 헤더

뒤에 내용들은 트레일러가 붙은 것이다.


위에 DATA + PADDING 부분을 보면 DATA는 위에서 내려온 데이터이고 그럼 PADDING은 무엇이냐?

사진을 보면 46 ~ 1,500이 있는데

이는 이 영역의 크기가 최소 46바이트~1500바이트까지 할당할 수 있다는 것이다.

그래서 위에서 내려온 DATA는 최소 46바이트에서 최대 1500바이트까지 담을 수 있다는 의미이다.

그럼 위에서 내려온 데이터가 만약 46바이트 보다 작으면 어떻게하냐?

이때 사용되는 것이 바로 PADDING이다.

PADDING은 DATA가 46바이트보다 작은 경우 남은 부분을 모두 0으로 채워서 46바이트를 채워주는 역할을 진행한다.

그래서 DATA + PADDING이라고 표기한 것이다.

그럼 우리는 원본 DATA의 길이는 모르게 되는 걸까?

아니다. 이를 대비해서 우리는 원본 DATA의 길이를 바로 앞에 Length에 저장해 기억하도록 한다.

그럼 TYPE은 무엇이냐?

Type은 무슨 프로토콜을 사용한 데이터인지를 기록하는 부분이다.

그래서 2바이트 안에 Length(DATA의 길이)나 Type(어떤 프로토콜을 사용하는지)에 대한 정보가 기록된다.


그럼 다시 하나씩 확인해보자.

  • preamble

7바이트의 크기로 수신 호스트가 송신 호스트의 클록과 동기를 맞출 수 있도록, 수신 호스트가 보낸 데이터가 송신 호스트의 처리 속도에 맞도록 시간 여유를 제공하는 목적으로 사용된다.


  • start delimiter

프레임의 시작을 알려주는 목적으로 사용된다.
외울 필요는 없지만 preamble과 구분하기 위해서 10101011의 값을 갖는다.


  • Source Address/Destination Address

이 부분은 단어 그대로 송신 호스트의 주소와 수신 호스트의 주소를 표현하는 부분이다.

주소의 종류가 일반 주소와 그룹 주소 2개가 존재하는데 수신 호스트 주소의 최상위 비트가 1이면 그룹 주소를 0이면 일반 주소를 의미한다.


  • Length/Type

위에서 내려오는 데이터의 최소 크기가 46 ~ 최대 1500 비트이기 때문에 1500 이하이면 DATA 필드의 데이터 크기를 말하는 것이기에 Length를 의미하고

그렇지 않은 경우엔 Type로 해석된다.

  • Length

Length는 데이터의 크기를 말하며 값은 46 ~ 1500이다.

  • Type

    Type은 패킷의 종류를 구분하는 용도로 사용된다. 즉 어떤 종류의 프로토콜을 사용하는지를 말하는 것이다.


  • Checksum

체크섬은 데이터 변형 오류의 발생 여부를 수신 호스트가 확인할 수 있도록 값을 기록하는 역할을 한다.


이렇게 네트워크 계층에서 내려온 데이터가 LAN 네트워크에서는 데이터링크 계층이 LLC 계층과 MAC 계층으로 나뉘어 먼저 LLC 계층으로 들어가게 되는데

이때 LLC 계층도 마찬가지로 헤더가 붙게 되고 이게 하나의 데이터 덩더리가 되어 LLC 계층의 프레임이 된다.

이 프레임은 다시 내려가 MAC 계층으로 전달되고 MAC 계층에서는 헤더와 트레일러가 붙어 MAC 계층의 프레임이 될 것이다.

이렇게 데이터가 아래에 있는 데이터 필드로 내려오게 되는 이 과정을 우리는 캡슐화라고 한다.

말 그대로 덩어리로 만들어서 점점 캡슐화하는 것이다.


이제 이더넷 환경에서 사용하는 공유 버스, 일반 허브, 스위치 허브에 대해서 더 살펴보자.

우리가 앞에서 이더넷 환경에서 기본 방식은 공유 버스를 사용한다고 배웠지만

이것은 옛날 방식이고 현재는 허브라는 장치를 사용한다.

구체적으로는 스위치 허브라는 것을 사용한다.


위 그림에서 (a)는 우리가 지금까지 배웠던 공유 버스와 트랜시버, 호스트의 모습이다.


(b)의 그림은 허브라는 장치를 사용한 것으로 공유버스 대신에 허브를 사용한 모습이다.

공유 버스에서는 브로드 캐스팅 방식으로 데이터를 전송했었는데 이 허브도 마찬가지로 브로드 캐스팅 방식으로 동작한다.

예를들어 a에서 b로 데이터를 보내고자 할 때 a 호스트는 허브에 데이터를 전송하고 허브는 b와 c에게 모두 데이터를 전송하게 된다.


(c)는 스위치 허브의 모습을 보여준다.

그럼 스위치 허브는 뭐가 다른 걸까?

바로 스위치 기능이 추가된 것이다.

스위치 기능이 있어 내가 원하는 호스트에 바로 데이터 전송이 가능해진 것이다.

예를들어 이제 a에서 c로 데이터를 보낼 때 굳이 허브에서 b에게도 데이터를 보내지 않고 c에게 바로 보낼 수 있게 된 것이다.


위 그림을 보면 a와 b 그림에는 100Mbps라고 적혀있는 것을 볼 수 있는데

이는 데이터를 지금 이 순간에 100Mbps가 공유 버스나 허브에서 이동하고 있는 것이다.

반면에 c인 스위치 허브에서는 브로드 캐스팅 방식이 아니기 때문에 현재 이 시간에 a에서 b로 b에서 c로 c에서 a로 각각 데이터 전송이 100Mbps씩 발생할 수 있게 된다.

따라서 c는 N X 100Mbps가 되는 것이다.

즉 기존의 공유 버스나 허브의 경우 순간 최대로 전달할 수 있는 데이터의 양이 100Mbps로 제한될 수 밖에 없지만 스위치 허브에서는 그렇지 않다는 것을 보여준다.


그래서 허브의 경우엔 호스트를 연결하는 다수의 포트를 지원하며 내부 동작 원리는 버스형 구조를 지원하기 때문에 임의의 호스트에서 전송한 데이터는 허브에 연결된 모든 호스트에 전송된다.

이때 최대 전송 용량은 100Mbps로 제한된다.


반면에 스위치 허브는 허브에 스위치 기능이 추가되어 임의의 호스트로 전송이 가능하며

브로드 캐스팅 방식이 아니기에 성능이 개선되고 이들 사이에 프레임 전송이 진행되고 있어도 다른 호스트끼리 프레임 전송이 가능하다는 장점이 존재한다.


따라서 스위치 허브의 장점은 위와 같다.


지금까지 위에서는 모두 CSMA/CD 즉 이더넷의 프레임 구조와 이더넷에서 네트워크를 어떤 식으로 연결하는지(허브, 스위치 허브)를 이야기했다.

이번에는 토큰 버스에 대해서 이야기를 진행해보자.

위에서 이야기했던 CSMA/CD의 경우엔 모두 에게 기본적으로 데이터를 전달하고 모두에게 데이터를 전달할 수 있는 권한이 있기 떄문에 우선순위를 매길 수 없다.

CSMA/CD의 특징이 중간에 공유버스가 있고 데이터를 보내고 싶으면 공유버스에서 데이터가 돌아다니는지 확인해 공유버스가 유휴 상태일 때 이제 데이터를 보낸다.

이때 공유버스가 유휴 상태가 되는 것을 감시하는 호스트들이 하나가 아닐 수 있기에 이때 각 호스트는 P - persistent CSMA 방식을 사용해서 P의 확률로 데이터를 보낼지 결정한다.

이처럼 균등하게 데이터를 전달할 수 있는 권한을 갖기 때문에 이들 중 누군가는 빠르게 데이터를 보내야 하는데 균등하게 갖는 권한 때문에 기다려야 하는 상태가 된다.

그래서 등장한 것이 바로 토큰 버스이다.


토큰 버스는 우선 순위를 결정할 수 있다.

토큰 버스를 활용하면 CSMA와는 다르게 확률로 계속 기다리는 것이 아니라 A를 가장 빨리 보내고 다음은 바로 B를 보내도록 우선 순위를 설정하는 게 가능해진다.


정리하면 위 PPT의 내용과 같이 IEEE 802.3의 경우 특정 호스트가 오랫동안 프레임을 전송하지 못할 염려가 있었고 프레임의 우선순위가 규정되어 있지 않아 프레임의 중요도를 표현하기 어려웠다는 것이다.


이런 문제를 해결하기 위해 호스트가 순서를 정해 차례대로 프레임을 전송하는 기능이 필요했고

토큰 버스에서는 공유 버스 구조에서 토큰 프레임을 이용해 데이터 프레임의 전송 권한을 차례로 부여하는 것이 가능해졌다.

토큰 버스
= 물리적으로는 버스 형태의 구조
= 논리적으로는 링 형태로 작동


이 토큰 버스 방식을 사용하게 되면 프레임의 구조가 앞에서 봤던 CSMA/CD 방식의 이더넷 프레임의 구조와 비슷하지만 조금 다르다.

위 사진을 보면 Frame control이 추가된 것을 확인할 수 있다.


  • Start Delimiter/End Delimiter

Start Delimiter/End Delimiter는 위에서 언급했던 것처럼 프레임의 시작과 끝을 의미하며 이를 이용해 프레임의 크기가 결정된다.

  • Frame Control

Frame Control의 경우엔 데이터 프레임과 제어 프레임을 구분하기 위해서 사용된다.

데이터 프레임에서는 프레임 우선순위와 수신 호스트의 응답 확인이 필요할 때 사용되고

제어 프레임에서는 토큰의 전달, 링 관리와 같은 용도로 사용된다.


Frame Control에 대해서 더 자세히 살펴보자.

우리가 위에서 봤을 때 Frame Control은 1바이트가 할당되었고 이는 8비트를 의미한다.

위 사진에서 Frame Control은 8비트로 구성되어
앞에 2비트 값에 따라서 데이터 프레임인지 혹은 제어 프레임인지 구분된다.

구체적으로는 앞에 2비트가 00인 경우엔 제어용 MAC 프레임, 01인 경우에는 LLC 프레임으로 정의된다.

LLC 프레임은 위 계층에서 내려온 데이터 즉 LLC 계층에서 내려온 데이터를 말한다.


그리고 앞에 2비트가 10인 경우엔 네트워크 관리용 데이터 프레임으로 이는 모종의 이유로 에러가 발생했다는 것을 알리는 용도의 네트워크 관리용 데이터 프레임이다.

앞 2비트가 11인 경우는 예약을 의미한다.


지금은 00인 경우와 01인 경우를 볼 것이다.

앞에 2비트가 00인 경우 00001000에서 앞에 00을 확인해 00001000이 토큰 프레임이라는 것을 알 수 있다.

앞에 2비트가 01인 경우 LLC 계층에서 내려온 데이터, 우리가 보내고자 하는 데이터를 의미한다, 즉 수신 호스트에 전송한 데이터 프레임을 의미한다.

토큰 버스에서 우선순위 값을 매길 때 0, 2, 4, 6인 4개의 클래스로 나뉘어서 숫자를 부여한다.
이때 숫자가 클수록 우선순위가 높다.

토큰 프레임은 우선 순위가 6이다.


토큰 버스도 마찬가지로 위의 계층에서 내려올 때 캡슐화 과정을 거치게 되면서 헤더와 트레일러가 붙게 된다.

그리고 이 과정 또한 캡슐화라고 말하며

이를 LLC 프레임 캡슐화라고 말한다.

profile
전공: 소프트웨어, 관심 분야: LLM, NLP, 지식 그래프

0개의 댓글