프로토콜이란 무엇인가


프로토콜이란 서로 다른 하드웨어와 운영체제가 공존하는 네트워크에서 어떤 과정에서 어떻게 단일의 데이터를 다룰지 합의된 원칙(규칙)을 의미합니다.

우리세상에도 프로토콜이 존재합니다.

우리가 사는 세상에도 프로토콜이 존재합니다.
이것은 매너? 예의? 혹은 도덕적 원리? 라는 용어로 대체될 수 있습니다.
우리는 살아가면서 다양한 상황에 처하게 되는데, 만약 해당 여건에 이해 당사자들간 합의된 원칙이 없다면 어떻게 될까요, 모두들 어떻게 문제를 해결할지 혼란에 빠지겠죠,

프로토콜을 가면(mask)으로 생각해봅시다.

얼굴을 가릴 용도로 가면을 쓰기도 하지만, 가면 그 자체로도 의미를 표현합니다. 기분이 좋을 경우, "웃는 가면"을 사용하면 되고, 우울할 경우, "우울가면"을, 화가 날 경우 '화난 가면"을 쓰면 됩니다. 다시 말해, 프로토콜(가면)은 다양한 상황(기분)에 맞게 사용하면 됩니다(쓰면 됩니다). 마찬가지로 프로토콜(가면)을 사용한다는 건 어떤 의미를 사용(표현)한다는 의미이기 때문이다.

프로토콜을 SF영화의 한 장면으로 생각해봅시다

영화에서 나올 법한 이야기지만, 어떤 행위를 하기 위해서는 해당 움직임을 정의한 프로토콜을 사용하면 됩니다.
예를 들어 걷기 위해서는 "걷는 프로토콜"을, 뛰기 위해서는 "뛰는 프로토콜"을, 더 나아가 축구하기 위해서는 "축구 프로토콜"을 사용해야 합니다.
두 컴퓨터(클라이언트,서버)가 어떤 서비스(이벤트)를 하는 경우 이에 해당하는 방법을 모아둔 무엇(프로토콜)을 사용한다고 생각해 봅시다.

네트워크에서 컴퓨터와 프로토콜

네트워크에는 다양한 규격의 디바이스가 존재하며 주고 받는 데이터 또한 다양합니다.이렇게 이종의 컴퓨터끼리 통신하려면, 어떻게 작업을 하면 될까요?
그것은 각 케이스 별로 데이터를 전달/연결방식을 (미리) 정의하고 이를 따르도록 만들면(강제하면) 됩니다.

미리 선언된 무엇이 있다면 컴퓨터가 그 내용(원칙)대로 작동하면 됩니다. 이것이 바로 컴퓨터에게 해당 프로토콜을 따르도록 하는 것 입니다.

쉽게 말해, 해당 케이스(이벤트)별로 프로토콜을 사용하도록 하면, 그 내용을 동작한다는 의미입니다.
해당 프로토콜을 사용한다는 것은 어떤 동작을 실행하겠다는 컴퓨터들(클라이언트와 서버)의 의지적인 표현입니다.

이벤트와 프로토콜

그럼 컴퓨터들이 데이터를 주고받는 이벤트는 무엇이 있을까요
다음과 같습니다.

  1. 이메일을 보내기,
  2. 파일을 업로드/다운로드하기
  3. 인터넷으로 (영상)통화
  4. 인터넷 하기

그리고 각 이벤트가 사용하는 프로토콜은 다음과 같습니다.

  1. 이메일을 보내기(SMTP/POP)
  2. 파일을 업로드/다운로드하기(FTP)
  3. 인터넷으로 (영상)통화(VOIP)
  4. 인터넷 하기(HTTP)

프로토콜은 어떤 서비스(service)를 의미합니다.

이야기를 정리하면 프로토콜을 사용한다는 것은 두 컴퓨터(클라이언트/서버)가 어떤 액션/이벤트/서비스 를 하는 중이라고 말 할 수 있습니다.
왜냐하면 프로토콜은 어떤 서비스/상황를 수행하기 위해 여러 과정원칙을 정의한 내용이기 때문입니다.
인터넷을 한다고 하면 클라언트와 서버는 HTTP 프로토콜을
이메일을 보낸다면 SMTP/POP 을,
파일을 업로드/다운로드하면 FTP 를 사용하기 때문입니다.

프로토콜은 TCP의 애플리케이션(Application) 계층에 위치합니다.

다다음 글에서 다룰 내용이지만, 프로토콜은 애플리케이션 계층에 위치해 프로그램의 서비스 영역을 다룬다.
왜냐하면 이메일, 인터넷, 파일업로드/다운로드, [음성]영상통화는 서비스의 종류이기 때문이다.