신호의 전송과 충돌(2계층 - 데이터링크계층)

2계층 - 데이터링크계층

1계층은 케이블이 연결되어 있는 기기에 대한 신호 전달을 수행하는 계층이라고 공부했다.

비트 <-> 신호

1계층을 통해 신호가 수신처로 도착한 이후를 다루는 계층이 2계층 - 데이터링크계층이다. 1계층의 허브를 이용하여 신호를 송신하면 플러딩으로 인해서 허브에 연결된(동일 세그먼트 내) 모든 기기들이 해당 신호를 수신하게 되는 문제점이 발생한다고 했었다. 그렇기 때문에 동시에 송신하게되면 충돌이 발생하기도 하는데 이러한 문제를 해결하기 위해서 2계층에서 수행해야하는 것들이있다.

충돌을 막기 위해서는 송신하는 타이밍을 엇갈리게 해야 한다.

송신하는 타이밍을 엇갈리게 하는 방법은 신호를 보내기 전에 해당하는 것이며, 마찬가지로 신호가 도착한 뒤에도 생각해야할 것이 있다. 즉, 신호의 송신 전후로 바르게 데이터를 송수신하는 순서가 필요한 것이다. 2계층부터는 데이터를 보내기 전과 후에 어떤 일들을 할지 규정하는 계층인데, 위에서 잠깐 나왔듯이 신호가 닿는 범위(세그먼트)에서의 데이터 전송에 관한 규정이라고 생각하면 된다.

세그먼트 범위: 신호가 닿는 범위

즉, 멀티엑세스 네트워크라면 허브로 연결되어 있는 모든 기기 / 포인트 투 포인트 네트워크에서는 서로 연결되어 있는 두 기기를 말한다.

프레이밍

1계층에서는 신호를 전달하는 것을 생각 / 2계층에서는 세그먼트 범위에서 데이터를 어떻게 송수신할지 생각

1계층에서 다루는 신호와 케이블에 따라서 2계층의 규격이 달라진다. 그러니까 1계층의 조건에 따라서 2계층도 달라지게 된다는 것이다. 간단히 LAN용과 WAN용이 있을 수 있는데, LAN에서의 사실표준인 이더넷(Ethernet)에 대해서 살펴보자.(3계층 이상에서는 LAN / WAN 구별할 것 없이 동일한 규칙을 사용한다)

프레이밍이란 1계층에서 주고받은 신호를 비트화해 의미를 갖게 만드는 것이다. 프레이밍(framing)은 프레임(frame)에서 따온 말인데 2계층의 PDU가 바로 프레임이다. 프레이밍을 통해서 비로소 신호가 데이터로 바뀌는 것이다. 제일 먼저 프리엠블(preamble)을 송신한다. 프리엠블은 지금부터 프레임이 시작된다는 신호를 주는 것이고 수신측에서 이 프리엠블을 받으면 “이제부터 프레임 신호가 오겠군”이라고 판단할 수 있는 것이다.

프레이밍(framing): 송수신되는 비트열에 프레임 포멧을 적용시켜서 데이터로 취급할 수 있게 해준다. = 프레임화

항상 동기적으로 신호를 기다릴수는 없기때문에 프리엠블을 사용한다고 보면된다. 클럭(clock)을 통해 프리엠블을 사용하기 않고 동기적으로 통신할 수 있지만 항상 신호를 보내는 수고스러움이 있기때문에 별로 사용하지는 않는다고 한다.

패킷 교환 방식에서는 데이터 통신 직전에 프리엠블을 보내 통신 타이밍을 비동기적으로 맞춘다고 생각하면 될 것 같다!

2계층 주소와 이더넷

2계층은 세그먼트라는 범위에서 어떻게 데이터를 송수신할지 판단하는 계층이다.

데이터를 주고 받으려면 송신자와 수신자가 필요한데 이때 목적지를 구분해주기 위해서 주소(address)라는 걸 사용한다. 현실세계에서 우리가 택배를 보내기위해 보내는 사람과 받는 사람을 명시해주는 것과 똑같은 것이다. 하지만 이러한 주소는 데이터 전송 방법에 따라 세 가지로 나뉘는데 1. 유니캐스트 2. 브로드캐스트 3. 멀티캐스트가 있다.

  • 유니캐스트(Unicast) : 보편적인 일대일 통신이다.
  • 브로드캐스트(Broadcast) : 1대 전체 통신이며, 연결되어있는 모든 기기들에게 송신하는 방법이다.
  • 멀티캐스트(Multicast) : 1대 다수 통신이며, 지정된 복수의 기기로 메세지를 보내는 데이터 통신 방법이다.

모든 기기는 유니캐스트 주소를 적어도 한 개를 갖고 있어야한다. 적어도 1개이기 때문에 2개 이상을 가진 기기도 있을 수 있으며, 라우터와 같이 복수의 인터페이스를 가진 기기가 해당된다. 그리고 유니캐스트 주소는 유일해야 한다(unique). 유니캐스트 주소가 중복되면 수신처를 분별할 수 없기 때문이다.

반면에 멀티캐스트 주소는 중복을 허용한다. 같은 멀티캐스트 주소를 가지고 있는 기기는 동일한 그룹 번호를 같는 것과 마찬가지이며 멀티캐스트에 보내고 싶은 경우에는 수신처를 그룹으로 하면 되기때문에 중복되어도 된다. 만약에 멀티캐스트 그룹에 속한 기기가 있다면 그 기기는 멀티캐스트 주소와 유니캐스트 주소 두 가지를 갖고 있는 것이다.

이더넷에서 사용하는 주소는 MAC 주소(Media Access Control Address)라고 부르며, 이 주소는 인터페이스에 지정된 고정 주소이다. 컴퓨터 자체가 아닌 인터페이스에 고정된 주소이기 때문에 인터페이스가 변하면 주소도 변한다. MAC 주소는 48비트 값으로 4비트마다 16진수로 표현한다. 앞의 24비트는 벤더코드로서 인터페이스의 제조사의 번호이고, 뒤의 24비트는 제조사가 붙인 번호(벤더 할당 코드)이다. 이렇게 표현하는 이유는 MAC 주소의 유일성 때문이다.

이더넷(Ethernet)

LAN의 2계층에서는 이더넷 규칙을 사용한다고 했다. 또한 이 규칙에서 사용하는 주소는 MAC 주소이고 고유해야 한다는 것도 알고있다.

2계층의 PDU, 즉 프레임을 생각해보자. 이더넷에서는 이더넷 헤더(ethernet header)이더넷 트레일러(ethernet trailer)를 붙여서 이더넷 프레임(ethernet frame)으로 캡슐화한다. 그리고 이더넷 프레임은 1계층에서 신호가되어 케이블을 통해 움직인다. 표를 통해 간략하게 그려보자.

  • 이더넷 프레임
수신처 MAC 주소 송신처 MAC 주소 타입 페이로드 FCS
48비트 48비트 16비트 368 ~ 12000비트 32비트

타입은 페이로드의 내용을 식별할때 사용한다. FCS는 Frame Check Sequence의 약자로서 에러를 체크하는 데에 사용된다(순회부호방식이라고 불리는 에러 체크 데이터이다). 하지만 FCS가 있다고 한들 통신 도중에는 에러를 고칠 수 없다. 그래서 에러가 있었던 프레임은 파기를 해야하고 파기했다는 사실은 송신측에 알리지 않는다.

이제 이더넷이 어떻게 데이터를 송수신하는지 보자. 허브에 연결된 기기들은 모두 다음과 같은 특징을 가질 수 밖에 없다.

  1. 플러딩(수신 포트를 포함 모든 포트에 신호를 송신)
  2. 충돌 : 플러딩으로 인해 충돌이 발생

이더넷에서는 수신처 MAC 주소를 보고 자기에게 온 것만 받고 다른 프레임은 파기한다. 중요하니까 다시 한번.

이더넷에서는 수신처 MAC 주소를 보고 자기에게 온 것만 받고 다른 프레임은 파기한다.

(멀티캐스트의 경우 그룹 번호가 들어가있기 때문에 자신이 속한 그룹 번호로 수신처가 적혀있다면 수신하게 된다.)

위의 내용은 플러딩과 관련된 이더넷의 동작이고, 다음으로는 충돌에 관한 것이다. 멀티엑세스 네트워크의 경우 동시에 송신을 하게 되면 충돌이 발생하는데, 이더넷에서는 신호를 보내는 타이밍을 겹치지 않게하기 위해 CSMA/CD(Carrier Sense Multi Access/Collision Detection)이라는 엑세스 제어를 시행한다. 더 정확히 얘기하면 되도록 충돌이 발생하지 않도록 노력하는 것이다.(CSMA/CD를 통해 충돌을 100% 방지할 수는 없다.)

인터페이스에 연결되어 있는 케이블에 신호를 보내는 엑세스 활동을 제어하는 것을 의미한다.

  • CS : 신호 감지
  • MA : 멀티 엑세스
  • CD : 충돌 검사

신호를 감지하여(CS) 누군가 송신 중이라면 송신하지 않고, 아무도 송신하고 있지 않다면 송신할 수 있다(MA). 만약 송신 후 충돌이 일어나면 다시 재수행한다(CD). 언뜻 보면, 신호를 감지하고 송신하기 때문에 충돌을 피해갈 수 있을것이라고 생각할 수 있다. 하지만 두 대 이상의 기기가 동시에 신호를 감지한다면 어떻게 될까? 두 대 모두 동시에 아무도 송신을 하고있지 않다고 판단하여 동시에 송신을 하게 될 것이고 충돌이 발생할 것이다. 그래서 위에서 정리한 것처럼 CSMA/CD라고 해도 100% 충돌을 피할 수는 없으며, 단지 충돌을 방지하기 위해 노력하는 것일 뿐이다.

스위치

  • 짚고 넘어가기

충돌 도메인 내의 기기 수가 많으면 CSMA/CD로 제어한들 충돌이 발생할 확률은 높아지게 된다.

CSMA/CD를 통해 제어를 하다보면 송신 -> 충돌 -> 재송신 -> 충돌 -> 재송신 …과 같은 비효율적인 일이 발생할 수 있다. 이러한 방법은 충돌을 피하기 위한 신호를 보내는 타이밍을 겹치지 않게 하는 방법이며 또 다른 방안으로는 신호가 지나는 길을 나누는 방법이 있다. 스위치라는 기기를 사용하며 허브 대용으로 많이 이용한다.

  • 충돌 방지
  1. 신호를 보내는 타이밍을 나눔 - CSMA/CD
  2. 신호가 지나는 길을 나눔 - 스위치

허브가 여러 대의 기기를 연결하여 하나의 세그먼트 범위를 만드는 것 처럼 스위치도 동일한 역할을 한다. 그렇다면 허브와 스위치의 차이는 어디에서 오는 것일까? 그 포인트는 케이블을 살펴보면 나온다.

요즘 LAN에서 사용하고 있는 광 섬유나 UTP 케이블은 송신 신호와 수신 신호가 따로 있다. 즉, 케이블 상에서는 내가 송신한 신호와 받는 수신한 신호가 동시에 들어가도 충돌은 발생하지 않는다는 것이다. 충돌은 케이블이 아닌 허브에서 발생하고 두 개 이상의 신호를 수신하면 나누어서 보낼 수 없기때문에 그런것이다.

그래서 *수신한 프레임을 따로따로 보낼 수 있도록 해서 충돌을 막는 방법이 스위치를 사용하는 것이다. * 스위치를 이용하여 충돌을 방지하는 방법은 아래의 두 가지를 모두 수행하는 것이다.

  1. MAC 주소 필터링 : 학습 + 스위칭
  2. 버퍼링

먼저 MAC 주소 필터링은 학습과 스위칭으로 나뉜다. 학습은 송신처 MAC 주소를 기록하는 동작이다. 이를 통해 수신한 스위치의 포트와 발신처 MAC 주소의 테이블을 만든다. 다음 동작은 스위칭으로서 말 그대로 스위칭을 한다. 아무튼 학습 과정을 통해서 스위치는 각 포트에 연결되어 있는 컴퓨터의 MAC 주소를 기억(Address table)하게 되며 다음 스위칭 동작때 사용하게 된다.

학습으로 매핑된 어드레스 테이블을 이용해서 프레임의 수신처 MAC 주소를 보고, 그 MAC 주소가 있는 포트로만 프레임을 송신하는 방법으로 충돌을 방지한다!!

(만약 허브였다면 두 신호가 모든 포트로 송신하려는 플러딩 동작때문에 충돌이 났을것이다!!)

스위치의 충돌 방지 두 번째 동작은 버퍼링수신처가 같은 프레임이 동시에 도착한 경우 때문에 필요로 한다. 버퍼링은 버퍼(buffer)라는 말에서 나온 것인데 버퍼란 일시적으로 데이터를 저장할 수 있는 메모리를 말한다. 수신처가 같은 두 개의 프레임이 스위치에 도착했을때 다시 충돌이 발생할 수 있는데 이때는 버퍼를 사용하여 방지하면 된다. 하지만 여기에도 문제점이 있는데, 바로 버퍼의 용량이다. 버퍼의 용량은 유한하며 버퍼가 가득 찰 경우에는 백 프레셔(Back Pressure) 또는 IEEE802.3x 라는 규격을 사용해서 송신을 조정한다.

버퍼가 차면 송신을 중지시킨다!

백 프레셔와 IEEE는 스위치가 대응하는 이더넷 종류에 따라 갈라진다. 전이중 이더넷에 대응하면 IEEE를 사용하고 그렇지 않으면 백 프레셔 방식을 사용하게 된다.

전이중 통신(Full-Duplex)은 스위치를 사용하는 경우로써 충돌을 고려할 필요가 없는 통신 방식이다. 하지만 반이중 통신(Half-Duplex)은 CSMA/CD가 동작하는 방식이며 이는 동시에 송신과 수신을 할 수 없는 구조로서 효율적이지 못한 통신을 제공해준다.

Share

신호의 전송과 충돌(1계층 - 물리계층)

1계층 - 물리계층

OSI 참조 모델의 첫 번째 계층 - 물리계층에 대해서 알아보자.

전기 / 기계적인 전송

이전에 짧게 살펴본 것처럼, 물리 계층의 역할은 “전기 / 기계적인 전송을 수행한다.” 였다. 즉, 1계층은 통신 매체(파이프)에 데이터(신호)를 보내는 것과 그 데이터가 지나는 것에 대한 순서와 규칙이라고 말할 수 있다.

케이블이 연결되어 있는 기기에 신호를 전달하는 것이 1계층의 역할이다.

그리고 그 데이터는 신호의 형태로 전송되게 된다.

통신 매체

신호가 지나는 파이프 역할을 하는 것이 통신 매체이다. 이러한 파이프는 유선무선으로 나누어진다. 무선은 다루지 않기로 하고 유선의 경우를 생각해보자. 유선은 케이블을 이용해 신호를 주고받는 방식인데, 이 케이블에는 전기신호를 사용하는 동선광신호를 사용하는 광파이버(광섬유) 두 가지가 있다.

동선은 흔히 UTP(Unshielded Twist Pair cable)라고 부르며 8개의 동선으로 이루어져 있다. UTP는 두 개가 한 쌍인 동선 네 쌍으로 이루어져 있고, 일반적으로 가장많이 사용되고 있는 통신매체이다.

광섬유는 빛 신호를 전달하는 가는 유리 / 플라스틱 섬유의 일종이다. 신호의 안정과 통신속도에서는 뛰어난 성능을 보이지만, 굽히기가 어렵다는 단점 때문에 UTP에 비하면 보급률이 떨어진다.

기기가 데이터를 송수신하는 과정에는 통신 매체 뿐만아니라 인터페이스도 필요하다. 인터페이스는 컴퓨터와 통신 매체(케이블) 사이에서 신호를 보내고 받는 역할을 수행한다. 컴퓨터가 보내고 싶은 데이터를 케이블에 맞는 신호로 변환해서 케이블로 보내고, 케이블에서 보내온 신호를 컴퓨터에서 사용할 수 있게 변환하는 기계가 인터페이스이고 보통 컴퓨터에서 사용하는 인터페이스로는 LAN용 케이블에 접속하기 위한 NIC(Network Interface Card)가 있다.

신호와 충돌

1계층에서 중요한 키워드는 통신매체와 신호라고 할 수 있다. 그리고 인터페이스를 통해 데이터를 신호로 바꾸는 것도 알아보았다. 통신매체(케이블) 속에서 왔다갔다하는 신호는 결국 데이터이며 이러한 데이터는 비트로 표현된다는 것도 공부했다. 지금부터 우리가 사용하는 컴퓨터가 데이터를 표현하기 위해서 사용하는 - 0과 1로 되어있는 - 디지털 신호에 대해서 알아볼 것이다.

신호의 종류에는 아날라그 신호 / 디지털 신호가 있다.

아날로그 신호는 연속적인 신호이며 디지털 신호는 이산적인 신호이다.

그리고 이 신호의 형태와 전송방법에 따라서 통신속도가 결정된다. 통신속도는 일반적으로 1초 동안 전송되는 비트 수로 계산되며 bps(bit per second)라는 단위를 사용한다. 언뜻 생각하면 한 개의 신호를 가능한 짧게, 그리고 되도록 많이 표현할 수 있다면 통신속도가 빨라질 것이라고 생각할 수 있다. 하지만 신호가 너무 짧아지면 수신측에서 식별하는 게 힘들어지기 때문에 전송속도에는 한계점이 존재한다.

신호에 발생하는 문제

통신 매체를 통해 신호를 주고받다보면 여러가지 문제가 발생할 수 있다. 그 중에서 일반적으로 발생하는 세 가지에 대해서 알아보자.

  • 감쇠
    동선을 통해 전기신호를 보내면 저항이 발생하게 된다. 그래서 긴 케이블(동선)을 지나는 동안 신호가 약해지는데 그렇게 되면 신호의 진폭의 약해져서 수신측에서 데이터를 못 읽을 수도 있게된다. 이러한 문제점을 해결하기 위하여 약해진 신호를 다시 강하게 해주는 증폭기를 사용하곤 한다.

  • 노이즈 / 간섭
    전기신호가 어떠한 이유로 인해 형태가 무너져버리는 것이다. 수신측에서는 노이즈가 일어난 신호의 진폭을 정확하게 읽을 수 없게 된다.
    노이즈가 발생하는 원인으로는 “근처에 큰 전원 또는 고온의 물체가 옆에 있다거나 / 근처에 신호를 보내는 또 다른 케이블이 있다거나” 하는 게 있다. 신호의 간섭을 방지하기위해 원인으로부터 멀리 두거나 케이블에 특수 가공을 하는 방법을 사용하곤한다. (하지만 광섬유를 통해 발생되는 빛 신호는 위와 같은 이유로 간섭이 발생하지 않는데 위의 노이즈는 전기적인 요인에 의해서 발생하는 것이기 때문이다.)

  • 충돌
    케이블 하나에 T자 분배기(허브)를 사용해서 여러 대의 기기를 연결하는 멀티엑세스 네트워크 환경에서 발생하곤한다. 신호가 보내지고 있는 도중에 다른 신호가 발생되면 충돌이 발생하며, 충돌을 해소하기 위해서 신호를 보내는 타이밍을 엇갈리게 하거나 신호가 지나는 길을 나누는 방법을 사용한다. 또한 충돌을 방지하는 방법은 2계층과 관련된 내용이기도 하다.

허브

멀티엑세스 네트워크 환경을 의미하며 허브에 연결된 기기는 동일 케이블에 연결되어 있는 것하고 같은 환경이다. 허브의 케이블 삽입구를 포트라고 부르며 4개의 포트가 있는 허브는 총 4대의 기기를 연결할 수 있는 것이다. 허브의 첫 번재 기능은 신호의 증폭과 재생이다.

  • 신호의 증폭 / 재생
    감쇠된 신호를 허브를 통해 증폭 / 재생한다. 원래 신호를 증폭하기 위한 기계로 리피터(Repeater)가 있는데, 리피터는 허브처럼 여러개의 기기들을 연결할 수 없다는 단점이 있다. 그래서 허브에 신호를 증폭하는 기능을 추가해 사용하곤 한다. 추가로 신호를 증폭 / 재생하지 않는 허브도 있는데, 이런 허브는 패시브(passive) 허브라고 부르고, 증폭기능을 하는 허브를 액티브(active) 허브라고 부른다.

  • 분배기
    복수의 기기를 연결해서 네트워크를 구성해주는 역할을 한다. 허브에 연결되어 있는 기기끼리 신호를 주고받을 수 있게 된다. 8포트 허브는 총 8개의 기기들이 하나의 네트워크에 연결될 수 있다.

충돌 도메인

허브를 중심으로 여러 대의 기기가 연결되는 네트워크에는 문제점이 존재한다. 허브는 수신한 신호에 대해 어떠한 제어도 하지 않는다. 라는 점이다. 당연한 얘기 같다.. 허브는 신호 증폭 이외에는 별 다른 역할을 하지 않기 때문에 신호를 송수신함에 있어서는 어떠한 제어도 하지 않는 것이다. 허브는 수신 포트 이외의 모든 포트에 수신한 신호를 송신하며 이러한 현상을 플러딩(flooding)이라고 한다.

들어온 하나의 신호가 모든 포트를 통해 나가는게 허브가 해주는 역할(플러딩)인데 만약 두 기기가 동시에 신호를 송신하면 어떻게 될것인가? 신호가 부딪쳐서 충돌이 발생하게 될 것이다.

같은 허브에 연결되어 있다면 하나의 케이블에 연결되어 있는 것과 마찬가지이기 때문에 두 개 이상의 기기가 동시에 신호를 발생시키면 어딘가에서 신호가 부딪치는 충돌현상이 발생하는 것이다.

이처럼 충돌이 발생할지도 모르는 범위를 충돌 도메인(Collision Domain)이라고 부른다. 충돌 도메인 내에 있는 기기가 신호를 송신하면 어딘가에서 충돌이 발생할 가능성이 생기는 것이다. 그래서 같은 허브로 연결되어 있는 기기들은 같은 충돌 도메인 내에 있게 되는 것이다.

충돌 도메인은 작아야만 하는 것이고, 범위를 줄이기 위해서 컴퓨터의 수를 줄여야 하는데 이는 현실적으로 불가능한 방법이다. 그래서 스위치라는 장비를 통해 위와 같은 문제를 해결하며 스위치의 역할은 2계층에서 알아보도록 하자.

허브는 여러 대의 기기를 연결하고 신호를 증폭하고 재생하는 역할을 하며 플러딩을 일으킨다.

허브로 인해서 충돌 도메인이 발생되며, 이러한 충돌 도메인은 작아야만 한다.

Share

네트워크 기초 지식2

네트워크 기초2

기초1에 이어서 계속..!

과거에는 업체들이 자신이 제작한 컴퓨터끼리 네트워크를 사용해서 통신할 수 있도록 만들었다. 각 업체마다 자신들만의 규격을 만들어서 네트워크를 구성했다는 것이다. 이러한 구조에는 사용하는 기기 전부를 같은 회사 제품으로 통일해야 하는 문제점이 있는데 통신의 규격과 프로토콜을 통일하기 위해서 ISO라는 단체가 나오게 되었다. ISO의 표준화 단계에서 선언한 것이 OSI 참조 모델이라는 건데, 데이터 통신의 단계 구성도라고 보면된다.

데이터 통신을 단계로 나누어 각 단계의 순서를 명확히하고, 이 모델에 따라 프로토콜을 정의해서 데이터 통신을 구축하자!


OSI 참조 모델의 계층

OSI 참조 모델에서는 데이터 통신을 7개의 계층으로 나눈다.

7계층 응용계층 사용자에게 네트워크 서비스를 제공
6계층 표현계층 데이터의 형식을 결정
5계층 세션계층 데이터를 주고받는 순서 등을 관리
4계층 전송계층 신뢰성이 높은(에러가 적은) 전송
3계층 네트워크계층 전송 규칙이나 수신처 결정
2계층 데이터링크계층 인접 기기에 대한 데이터 전송 제어
1계층 물리계층 전기 / 기계적인 부분의 전송

제 1계층부터 제 7계층까지 있으며 각 계층마다 역할과 규칙이 정해져있다. 순서대로 계층의 역할을 수행해 감으로써 송수신을 할 수 있는데, 송신자와 수신자가 거치는 순서는 반대이다.

송신측 : 7계층 -> 1계층

수신측 : 1계층 -> 7계층

프로토콜은 OSI 참조 모델이라는 설계도를 따라서 만드는 것이라고 생각하면 되는데, 계층이 각각 독립해 있다는 것을 장점으로 꼽을 수 있다. 예를 들면 사용자가 어떻게 사용할지에 대해서는 7계층에서만 생각하면 되지, 4계층에서는 고려하지 않아도 된다는 것이다.

어떤 계층의 프로토콜 변경은 다른 계층에 영향을 끼치지 않는다. 그리고 기본적으로 하위 계층은 상위 계층을 위해서 일하고 상위 계층은 하위 계층에 관여하지 않는다.

캡슐화

데이터의 이동을 택배 시스템과 비교해서 생각해보자. 상대방에게 물건을 그대로 보내는 것이 아닌 상자로 한번 감싼뒤 보낸다. 그 이유는 물건의 보호도 있어서지만 받는 사람의 정보가 필요해서 그렇기도 한데, 데이터의 이동도 이와 비슷하다.

데이터만 달랑 보내는 것이 아니라 각 계층에서 필요한 정보를 덧붙여서 보낸다!

그리고 그 필요한 정보들은 수신처 / 송신처의 주소, 데이터 통신을 제어하기 위한 데이터, 기타 등등이 있다. 이렇게 데이터랑 데이터를 보내기 위해 필요한 것들이 통합된 상태를 프로토콜 데이터 유닛(Protocol Data Unit)이라고 한다.

다시 택배에 비유를 해보자면, 보내고 싶은 것 = 데이터 / 상자에 넣은 상태 = PDU 인 것이다.

정리해보면 운반하고 싶은 데이터에 각 계층에서 필요한 정보를 추가해 캡슐화하여 PDU로 완성(캡슐화)하여 송신하는 것이고, 반대로 수신한 쪽에서는 차례대로 캡슐을 벗겨가는 과정인 것이다. 기타 정보가 데이터 앞에 붙으면 헤더(Header) / 뒤에 붙으면 꼬리부(Trailer)라고 부른다.

각 계층을 지나가면서 생성되는 PDU는 계층마다 부르는 이름이 다르다.

  • PDU의 호칭
계층 호칭 내용
사용자 데이터(Data) 송수신 하고 싶은 데이터
7계층 PDU
6계층 PDU
5계층 PDU
메세지(Message) 데이터를 통신용으로 변환한 것과 7계층 헤더
4계층 PDU 세그먼트(Segment)
데이터그램(Datagram)
메세지와 4계층 헤더
3계층 PDU 데이터그램(Datagram) 세그먼트, 데이터그램과 3계층 헤더
2계층 PDU 프레임(Frame) 데이터그램과 2계층 헤더(2계층 꼬리부)
1계층 신호 프레임을 전송매체로 운반하기 위한 신호로 변환

프로토콜

데이터 통신에 필요한 프로토콜을 한 개가 아니라 복수의 프로토콜로 이루어진다

각 계층마다 수행하는 역할이 다르기 때문에 여러개의 프로토콜이 모여있는 것이다. 하지만 상하 계층과 연결이 되지 않을 정도로 독립적인 것도 문제를 발생시킨다. 그렇기 때문에 상하위 계층과 데이터를 주고 받을 수 있는 인터페이스를 가져야햐며 그 결과로써 프로토콜 그룹이 형성된다. 프로토콜 그룹이란 완전히 제각각이 아닌 상하위 프로토콜을 연결하는 인터페이스를 갖고 있을때 1계층부터 7계층까지 연결된 하나의 군(프로토콜군 - Protocol Suite)을 말한다.

프로토콜의 역할은 앞서 얘기했던 데이터의 사용 방법어떤 헤더를 붙일지 결정하는 것, 그리고 데이터를 주고받는 순서이다.

데이터의 내용, 헤더의 내용은 프로토콜로 정해져 있다

프로토콜은 데이터를 송수신하는 순서와 내용을 결정한다

현재 가장 많이 사용되는 것은 TCP/IP 프로토콜군이다. 이 프로토콜은 인터넷에서 사용되는 프로토콜군이다. 즉, 인터넷을 사용하려고 하는 기기나 서비스는 TCP/IP 프로토콜군을 사용해야 한다는 것이다.

TCP/IP 모델

인터넷에서 사용되는 사실상의 표준

OSI 표준 모델을 기준으로 해서 나온 프로토콜군을 OSI 표준 프로토콜군이라고 부른다. 하지만 우리가 사용하는 인터넷에서 사용되는 사실상의 표준은 TCP/IP 프로토콜군이다.

OSI 참조 모델을 따라 OSI 프로토콜군이 정해진 것처럼 TCP/IP 모델에서 TCP/IP 프로토콜군이 만들어지는 것이다.

  • TCP/IP 모델
4계층 애플리케이션계층
3계층 트랜스포트계층
2계층 인터넷계층
1계층 인터페이스계층
  • 인터넷에서 사용되는 프로토콜
4계층 애플리케이션계층 HTTP
FTP
SMTP
3계층 트랜스포트계층 TCP
UDP
2계층 인터넷계층 IP
ARP
1계층 인터페이스계층 Ethernet
PPP

정리

네트워크를 형성하는 크기에 따라서 WAN / LAN으로 나누고, 데이터를 전송하는 방법 두 가지를 알게되었다. 지금은 당연하다고 생각이드는 패킷 교환 방식과 회선 교환 방식이 있었다. 이때, 패킷이란 쪼개어놓은 데이터를 말한다. 그리고 제일 중요한 OSI 참조 모델과 TCP/IP 모델을 알아보았다. OSI 참조 모델로부터 OSI 표준 프로토콜군이 나오고, TCP/IP 모델로부터 TCP/IP 표준 프로토콜군이 나왔다. 데이터 통신은 통신의 단계와 순서라고 볼 수 있으며 각 계층은 독립적이지만 상하위 프로토콜과 연결하는 인터페이스를 갖추어야 한다.

데이터가 각 계층을 통과할때 각 계층에서 필요한 내용을 덧붙이곤 하는데 이러한 과정을 캡슐화라고 부르며 데이터와 기타 정보들이 통합된 상태를 PDU(Protocol Data Unit)이라고 한다. 계층마다 PDU를 부르는 이름은 메세지 / 데이터그램 / 프레임 / 세그먼트처럼 다양하다는 것도 알 수 있었다.

마지막으로 프로토콜은 데이터 통신을 위한 규칙이라고 했다. 이러한 데이터 통신에 필요한 프로토콜은 한 개가 아닌 여러개의 프로토콜로 이루어져 있다. 7계층에서 1계층까지 연결되어 프로토콜군을 형성하며 어느 프로토콜군을 사용하는지에 따라 7계층에서 1계층까지 사용하는 프로토콜이 정해진다는 특징도 있었다. 이와 같은 프로토콜은 데이터에 어떠한 header / trailer를 붙일지, 어떠한 순서로 데이터를 주고 받을지 결정하는 역할을 한다.

Share