먼저, 프로토콜에 대해서 알아보기 전에 프로토콜이 왜 필요한지를 사람의 대화에 비추어 살펴보겠습니다.
사람들이 서로에 대해서 인사를 나눌 때 사람들은 서로가 암묵적으로 사용하는 인사 방법이 존재합니다.
네트워킹도 이와 마찬가지입니다.
즉, 어떤 일을 수행하려면 둘 이상의 통신 개체(entity)가 함께 인식하는 프로토콜이 필요합니다.
❗ 프로토콜은 둘 이상의 통신 개체 간에 교환되는 메시지 포맷과 순서뿐 아니라, 메시지의 송수신과 다른 이벤트에 따른 행동들을 정의한다. 즉, 통신 규약 및 약속이라고 생각하면 됩니다.
프로토콜은 통신하는 둘 이상의 원격 개체가 포함된 인터넷에서의 "모든 활동"을 제어합니다.
즉, 인터넷을 사용하는 모든 개체의 통신은 프로토콜을 사용한다고 볼 수 있겠네요.
심지어, 물리적으로 연결된 두 컴퓨터의 네트워크에서도 프로토콜이 존재합니다.
이 두 컴퓨터의 네트워크 접속카드에서 "하드웨어로 구현된" 프로토콜은 컴퓨터 사이에 연결된 "선로상"의 비트 흐름을 제어합니다.
예를 들어, 종단 시스템에 있는 혼잡제어(congestion-control) 프로토콜은 송수신자 간에 전송되는 패킷률을 조절한다.
⚡ 종단 시스템 ⚡
인터넷에 연결되는 많은 비전통적인 장치들을 의미합니다.(ex. 스마트폰, 랩톱, 태블릿, 자동 온도 조절기, ...등등)
종단 시스템은 웹 브라우저 프로그램 같은 애플리케이션을 수행하므로 호스트라고도 부른다. 앞으로 호스트와 종단 시스템을 혼용해서 사용할 것이다. 호스트는 때때로 클라이언트(client) 와 서버(server) 로 구분된다.
프로토콜의 예시로서 무엇이 있는지 살펴보고 넘어가겠습니다.
프로토콜은 두 가지로 이루어져 있으며 물리적 측면과 논리적 측면으로 나뉩니다.
사실 기능에 대해선 여러 블로그에서 다루고 있지만, 본인의 생각은 OSI 7계층에서 각 계층별로 사용되는 프로토콜들의 특징을 모아서 프로토콜의 특징이라고 그러는 것이 아닐까라는 생각이 듭니다...
현재 나와있는 기능은 10가지로 다음과 같습니다.
이렇게 생각한 이유는 다음과 같습니다.
예를 들어서 생각해보면 되는데, TCP와 UDP의 경우를 생각해 봅시다.
TCP의 경우 연결 제어, 흐름제어, 여러 가지 기능들을 지원합니다.
하지만, UDP의 경우 비연결형이라서 연결 제어도 없고, 흐름 제어 또한 없습니다.
그리고 이러한 것들에게 주소 설정과 같은 특징은 없습니다.
즉, 제가 말하고 싶은 것은 프로토콜은 이러한 것들을 다 포함하는 개념으로서 단순히 "통신 규약 및 약속"으로 생각해야지 그 이상으로 생각하면 그것을 이어받은 하위 개념들이 이러한 특징을 이어받게 되는 것이라서 저 10가지 기능이 프로토콜의 기능이라고 보면 안된다고 생각하는 것입니다.
Reference