개념, 기능, 구성요소
'프로토콜'은 단순히 컴퓨터 통신에서만 쓰이는 용어가 아닙니다.
이 단어는 외교에서 유래했으며, 그리스어 'Protokollen'에서 비롯되었습니다.
'Proto'는 '맨 처음', 'kollen'은 '붙이다'라는 뜻입니다.
즉, '맨 처음 붙이다'라는 의미가 있는데, 이는 공증 문서에서 문서의 맨 처음에 붙여 법적 효력을 부여하는 용지를 의미했습니다.
이 개념이 발전해 국가 간의 공식 문서나 의전 규칙을 뜻하게 되었고, 상대 간에 지켜야 할 약속을 의미하게 되었습니다.
이러한 의미가 컴퓨터 통신으로 넘어오면서, 프로토콜은 네트워크에서 데이터를 주고받을 때 지켜야 하는 일종의 ‘약속’이 되었습니다.
그렇다면 왜 이렇게 다양한 프로토콜이 필요할까요?
데이터 통신에서는 전송해야 할 데이터의 형태, 우선순위, 보안 수준 등 여러 조건이 다릅니다.
이에 따라 상황에 맞는 적절한 프로토콜이 필요합니다.
프로토콜이 어떤 기능들을 포함하는지, 책장 배송 예시로 살펴보겠습니다.
책장을 완성된 형태로 배송하면 큰 공간이 필요합니다.
엘리베이터에 들어가지 않는 경우 책장을 부품 단위로 분해해 운반하고, 배송지에서 조립하는 편이 훨씬 효율적입니다.
데이터도 마찬가지로, 큰 데이터 덩어리를 전송하는 대신, 작게 나눠 전송하고 도착한 데이터 조각을 다시 조립하는 과정이 필요합니다.
이처럼 데이터를 분해하고 다시 합치는 기능을 분할 및 재조립이라고 합니다.
부품을 배송할 때 각각 포장하고 스티커를 붙이는 것처럼, 데이터도 전송할 때 포장 과정을 거칩니다.
이 과정이 바로 캡슐화입니다.
데이터를 여러 단계로 포장하고, 각 단계에서 필요한 정보를 포함해 정리하는 것입니다.
이후 수신자는 포장을 역순으로 풀어 원래 데이터로 복원합니다.
배송 기사님이 미리 배송 시간을 약속하는 것처럼, 프로토콜에서는 데이터 전송의 속도와 양을 조절해 최적의 타이밍을 맞춥니다.
이를 연결 제어라고 합니다.
주문자가 결제를 완료했지만 가구 업체에서는 결제가 완료되지 않았다고 인식하면 문제가 생깁니다.
이를 방지하기 위해 프로토콜은 송신자와 수신자 간에 데이터의 상태를 일치시키는 동기화 기능을 제공합니다.
배송된 책장 부품이 설명서에 기재된 것과 일치하는지 확인하는 것처럼, 프로토콜은 패킷 전송을 효율적으로 관리하기 위해 각 패킷에 번호를 부여하고 이를 순서대로 관리합니다.
만약 배송된 부품에 문제가 있다면 가구 업체에 연락해 다시 배송을 요청해야 합니다.
프로토콜에서는 전송 중 발생한 문제를 해결하기 위해 오류 제어 기능을 사용합니다.
이 외에도 주소 설정, 다중화, 전송 서비스 등 다양한 기능이 있습니다.
모든 프로토콜이 이 모든 기능을 갖추어야 하는 것은 아니며, 필요에 따라 선택적으로 적용됩니다.
- 형식(Syntax): 데이터를 어떻게 구성하고 해석할지 규정합니다.
- 의미(Semantics): 데이터 제어 방법과 오류 처리 방식을 정의합니다.
- 순서(Timing): 전송 속도와 순서를 관리합니다.
https://youtu.be/iGyaw8zX5TA?si=pRrLhrqHbZdr9D4R