탕구리's 블로그

프로토콜(Protocol)? 그래서 그게 뭔데? 본문

Conception/Computer Network

프로토콜(Protocol)? 그래서 그게 뭔데?

탕구리당 2019. 3. 15. 05:10
반응형


시작하기 전에

해당 블로그에 작성되는 글은 주인장의 지극히 주관적인 생각이 다수이며, 대부분의 지식은 구글링을 통해 얻고 있기 때문에 옳지않은 정보가 있습니다. 

잘못된 부분이나 수정해야 하는 부분이 있다면 과감히 덧글을 남겨주세요! 모르는게 많은 새싹입니다



오늘의 주제

오늘의 주제는 "프로토콜이 무엇인가?" 입니다. 네트워크를 공부하다 보면 프로토콜에 대한 이야기가 정말 많이 나오는데 의미는 알겠는데 정확히 마음에 와닿지를 않아서 정확히 이해하고 넘어가고자 주제로 선정하게 되었습니다.



프로토콜? Protocol?

위키 백과에는 "통신 프로토콜 또는 통신규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다." 라고 나와 있습니다. 정말 많은 곳에 위와 같은식의 설명이 나와있었습니다. 프로토콜의 예를 들어보면 두 사람이 대화를 하는데 한쪽은 영어로, 한쪽은 한국어로 말하게 되면 대화가 통하지 않을 것입니다.


컴퓨터도 마찬가지로 두개의 개체가 같은 프로토콜(위의 예를 통해선 사용하는 언어)을 사용하여 통신을 수행해야 정상적인 통신이 발생할 수 있습니다. 비단 언어 뿐만이 아니라 데이터가 어떤 과정과 절차를 통해서 송신했는지, 수신측에서는 어떻게 원래의 데이터로 복구할 수 있는지와 같은 약속도 포함됩니다.


 

프로토콜의 구성요소

프로토콜을 이루는 구성요소는 총 세가지 구문(syntax), 의미(semantic), 타이밍(timing) 입니다. 


구문(syntax) : 데이터를 어떻게 구성할 지에 대한 형식, 구체적인 코딩 방법, 신호 레벨 등에 대한 형식을 규정


의미(sematic) : 데이터에 대하여 구체적으로 어떻게 제어할 것인지에 대한 처리 방법과 에러가 발생했을 때 어떻게 처리할 건가에 대한 정보를 포함한다.


타이밍(timing) : 통신이 이루어질 때 데이터를 주고 받을 속도에 대한 조절과 여러 데이터가 동시에 통신을 해야 할 경우 순서 관리를 위한 기법을 포함한다.



계층적 역할의 관점에서 보았을 때, 물리적인 역할을 하는 측면과, 논리적인 역할을 하는 두 가지 경우로 볼 수 있다.


- 물리적 측면 : 자료 전송에 쓰이는 전송매체, 접속용 단자 및 전송 신호, 회신 규격 등을 말한다.

- 논리적 측면 : 프레임의 구성, 프레임 안에 있는 각 항목의 뜻과 기능, 자료 전송의 절차등을 담는다.



프로토콜의 기능


주소 설정(Addressing) : 통신을 하기위해서는 통신의 대상이 누구인지를 알아야 데이터를 전송할 수 있으며, 프로토콜에는 각 전송 계층에 맞는 주소를 지정하는 기능이 있다.

순서 제어(sequence Control) : 데이터가 전송될때는 PDU(Protocol Data Unit)을 통해서 하나의 데이터를 여러개의 각 프로토콜에 맞는 단위로 쪼개어 전송하게 된다. 순서제어란 프로토콜 데이터 단위가 전송될 때 순서를 명시하는 기능이며 연결지향형(예를 들어 TCP 프로토콜)에만 사용한다. 순서를 지정하는 이유는 흐름제어, 혼잡제어, 오류제어를 위해서이다. 순서제어에 의해서 정해진 PDU를 수신측에 보내면 순서에 맞게 데이터를 재구성한다.

분할 및 재조립(Fragmentation & Reassembly) : 한꺼번에 덩어리가 큰 데이터를 전달하는 것은 통신에 있어서 비효율 적이기 때문에 하나의 데이터를 전송 효율이 높은 작은 단위로 분할하여 전송하고 수신측에서는 해당 데이터를 사용하기 위해 재조립하는 과정을 거친다.

캡슐화(Encapsulation) : 위에서 언급한 PDU는 PCI(protocol Contorl Unit)와 SDU(Service Data Unit)으로 구성 된다. PCI는 각종 헤더 정보(발신지 주소, 수신지 주소, 순서 번호, FCS 등)를 담고 있고 SDU에는 실제 서비스 데이터 정보를 담고 있다. 통신을 구성하는 각각의 Layer를 통과하기 위해서는 캡슐화를 통해 포장하는 과정을 거치며, 데이터를 사용하기 위해서는 캡슐화된 데이터는 수신측에서 역캡슐화 하는 과정을 통해 각각의 Layer를 통과한다.

연결 제어(Flow Control) : 흐름 제어는 송신측에서 오는 데이터의 양이나 속도를 조절하는 기능이다. 송신과 수신에 있어서 속도차이로 인한 데이터의 유실을 방지한다.

오류 제어(Error Control) : PDU로 데이터를 교환할 때 SDU나 PCI가 잘못되었는지 발견하는 기법을 오류제어라고 한다. 오류 제어는 순서를 검사하거나 특정 시간 안에 데이터를 받지 못하면 재전송을 요구하는 방식으로 이루어 진다.

동기화(Synchronization) : 송수신측 간의 데이터를 주고받는 시점을 정확하게 일치 시키기 위한 기법이다.

멀티플렉싱(Multiplexing) : 하나의 통신 선로에서 시스템이 동시에 통신할 수 있는 기법을 다중화라 한다.

전송 서비스 : 전송 서비스는 우선 순위 결정, 서비스 등급과 같은 보안 요구 등을 제어하는 서비스를 말한다.

반응형
Comments