2.7. 프로토콜이 없다면 업무는 몽땅 엉망진창
자 그럼 이제 PC를 이용해서 통신을 하는 과정을 정리해보겠습니다. 사용자는 먼저 컴퓨터를 사야할 것이고 모뎀을 장착해서 전화선과 연결해야 합니다. 그리고 접속프로그램(에뮬레이터 프로그램)을 이용해서 호스트 컴퓨터를 운영하는 곳으로 전화를 겁니다. 그리고 접속이 되면 자료를 주고받으면서 통신을 합니다. 이때 호스트 컴퓨터측에서도 전화를 받기 위해서 모뎀이 필요하며 호스트 컴퓨터를 돌리기 위한 호스트프로그램이 필요합니다.
PC가 아닌 단말기를 사용할 경우에는 에뮬레이터 프로그램이 생략됩니다. 그리고 전화선이 아닌 전용선을 이용할 경우에는 모뎀이 생략됩니다.
전용선을 사용할 경우에는 시리얼포트라는 곳에 선을 연결한다고 말씀드렸는데, 외장형모뎀의 경우에는 시리얼포트에 연결해서 사용합니다. 그럼 내장형모뎀은 시리얼포트에 연결하지 않았는데 어떻게 사용이 가능한가? 내장형 모뎀은 시리얼포트를 내장하고 있기 때문입니다. 즉 통신을 하기 위해서는 시리얼포트가 거의 필수적이므로 모뎀 안에 아예 시리얼포트를 내장해서 출시하는 것입니다.
그럼 모뎀과 전화선을 가지고 호스트 컴퓨터에 접속만 하면 모든 자료를 주고받을 수 있느냐? 그렇지 않습니다. 아직 한 가지가 더 필요합니다. 그것은 자료를 주고받을 때의 약속을 정한 프로토콜입니다.
프로토콜(Protocol)은 자료를 주고받을 때의 약속을 정한 규칙이나 규약을 말합니다. 이중에서도 파일을 주고받을 때의 약속을 정한 파일 전송 프로토콜(FTP: File Transfer Protocol)은 셈틀통신을 할 때 셈틀 간에 자료를 주고받기 위한 방법을 규정한 일종의 약속이나 방법을 말합니다. 일반적으로는 줄여서 프로토콜이라고 말하고, 우리말로는 전송규약 또는 보냄약속이라고 한다. 이 약속 내용은 주로 컴퓨터끼리 파일을 주고받을 때 사용하는 신호교환(Handshaking)방법이나, 에러의 검출 및 복구 등의 내용에 관한 규칙을 담은 사항으로 이루어져 있습니다.
그냥 이쪽에서 글씨를 치는대로 저쪽에서 받으면 그것으로 통신이 되는 것 아닌가 하는 분이 있을 겁니다. 프로토콜이 왜 필요한가 하는 의문을 가지는 사람들이 많이 있을 것입니다. 그러나 프로토콜이 없을 경우에는 컴퓨터통신이 사실상 불가능해집니다. 약속 없이 자료를 보낼 경우에는 자료가 엉망으로 뒤섞여서 나오기 때문입니다.
예를 들어서 어떤 자료를 이쪽 컴퓨터에서 저쪽 컴퓨터 보낸다고 가정해봅시다. 이때 보내는 쪽에서는 7비트 단위의 자료를 사용하는데 받는 곳에서는 8비트 즉 1바이트 단위의 자료를 사용한다고 합시다. 그렇다면 이쪽 컴퓨터에서 아무런 자료 변환 없이 저쪽으로 보낼 경우에는 저쪽 셈틀에서는 사용할 수 없는 자료가 되는 셈입니다. 이 때문에 보내는 쪽에서 7비트를 8비트 자료로 변환시켜서 보내는 기술이 필요합니다. 또한 한 번에 몇 개씩의 자료를 보낼지도 결정해주어야 합니다.
예를 들어서 설명하겠습니다. 어떤 공장에서 이동벨트를 이용해서 물건을 다른 장소로 보낸다고 합시다. 양 쪽이 자료를 주고받기 위해서는 다음과 같은 약속이 필요하고, 이런 약속의 반복올 통해서 물건을 계속해서 보낼 겁니다.
'100개를 보낼테니 100개 받을 장소를 준비해라' '그래 100개 받을 수 있도록 방을 치워두었다.' '자 자료 보낸다.-> 첫번째 자료다 -> 마지막 자료다. 자료 다 보냈다.' '그래 자료 다 받았다. -> 받은 것은 다른 곳에 옮겨놓았다 -> 또 보내라'
이때 서로 멀리 떨어진 두 송수신자는 어떤 수단을 통해서 이런 약속이 이상 없이 지켜졌음을 상대방에게 알려주어야 합니다. 전화나 팩스를 이용할 수도 있고 깃발이나 손가락을 펴서 나타낼 수도 있습니다.
하여간 보내는 쪽에서 몇 개 보낸다고 하는지 알아야 받는 쪽에서 다 왔는지 확인할 수 있고 받는 쪽에서 다 받았다고 확인해야 다시 다음 것을 보낼 것입니다.
만약 이러한 과정에서 단 한 과정이라도 문제가 생긴다면 자료를 주고받을 때 문제가 생길 겁니다. 이쪽에서는 100 개를 보낸다고 했는데 받을 곳에서는 50개 받을 수 있는 장소만 마련해놓으면 뒤에 보내는 50개는 파손되는 사태가 발생하는 것입니다. 또 저쪽에서는 아직 자료를 받을 준비를 안했는데 보내는 쪽에서 자료를 먼저 보낼 경우에도 자료가 파손되는 사태가 생길 겁니다. 또 이쪽에서는 백 개를 다 보냈는데 받은 쪽에서는 자료가 다 온것인지 안온 것인지 모를 경우에는 계속해서 자료가 더 올려나 하고 마냥 기다릴 것입니다. 미리 몇 개씩 보낸다고 약속을 안해두면 도대체 다 온건지 덜 온건지 확인할 방법이 없는 것이고 제대로 온 것인지 확인할 수 있는 방법이 없어집니다.
자료를 보내는 쪽에서는 자료를 다 보냈다는 신호를 보내주어야 받는 쪽에서 다 왔다는 사실을 확인할 수 있을 것입니다. 또 받은 쪽에서 자료를 다 받았으면 다 받아서 다른 곳에 치워두었다고 알려줘야 보낸 쪽에서 다음번 자료를 보낼텐데 이런 내용을 신호해주지 않으면 보내야 할 쪽에서는 아직 저쪽에서 자료를 제대로 정리하지 않았나보다 하고 자료를 보내지 않고 마냥 대기할 것입니다.
그러므로 양쪽이 자료를 주고받을 때는 '한 번에 몇 개를 보내느냐, 첫번째 자료와 마지막 자료를 보냈다. 받은 자료는 잘 받았으니 또 보내라' 하는 약속이 필요합니다. 이런 약속을 정해놓은 것이 프로토콜이고 이런 약속을 확인하기 위해서 Start Bit와 Stop Bit와 같은 신호들을 사용합니다.
그런데 물건을 보낸 쪽에서는 100개를 보낸 것으로 생각했는데 받은 쪽에서는 물건을 받지 못했다고 신호를 보내는 경우도 있습니다. 이런 에러가 생겼을 때는 다시 물건을 보내주어야 하는데 이런 에러처리규정 등도 세밀하게 정의해야 합니다.
이처럼 통신을 통해서 자료를 주고받을 때 어떤 방법으로 자료를 보낼 것인지 보낸 자료를 제대로 간 것이 맞는지 확인하기 위한 방법을 정한 것이 프로토콜이라는 것으로 우리말로는 보냄약속, 또는 전송규약이라고 하는 것이다.
프로토콜이 없을 경우에는 자료송수신의 오류여부를 확인할 수 없게 되는데, 만약 금융전산망에서 프로토콜을 사용하지 않는다면 더욱 심각한 문제가 발생할 겁니다. 보내는 쪽에서는 100만원 입금이라고 보냈는데, 중간에 잡음이 끼거나 여러 가지 사고가 발생하여 숫자 하나가 바뀌어 전송되어도 100만원 입금이 천 만 원 입금으로 변할 수 있습니다. 만약 서로 주고받은 자료에 대한 확인절차를 밟지 않는다면 중간에 자료가 유실되거나 변질되어서 엉뚱한 자료가 전달되어도 이런 사실을 모르고 그대로 본사 호스트 컴퓨터에 입력하게 될 겁니다. 그렇게 되면 100만원 입금이 천 만 원 입금으로 잘못 입력될 수도 있습니다. 때문에 보내는 쪽과 받는 쪽은 특정한 약속을 미리 정해서 정말 제대로 자료가 송수신되었는지 늘 확인해야 하는데, 이런 송수신 방법과 확인방법 등을 담은 약속이 프로토콜인 것입니다.
컴퓨터통신에서 사용하는 프로토콜의 수는 다양합니다. 그중에서도 가장 많이 사용하는 것은 아스키, kermit, zmodem이라는 프로토콜입니다. 이 두 가지 자료송수신 방법이 가장 신뢰도가 높기 때문에 가장 많이 사용되는데 PC통신 사용자는 거의 대부분 zmodem이라는 프로토콜을 사용합니다. 그러므로 통신을 하면서 프로토콜을 고르라는 말이 나올 때는 zmodem을 선택하시면 됩니다.
보통 단말기들은 프로토콜이 기계 안에 내장되어 있기 때문에 별도의 프로그램이 필요없습니다. 즉 단말기 안의 부품에 자료를 주고받을 때의 방법을 기록한 부품이 들어있는 것입니다. 그러나 PC는 원래 단말기로 만들어진 것이 아니기 때문에 프로토콜에 관해서는 깡통이나 다름 없습니다.
그래서 컴퓨터가 프로토콜을 이해할 수 있도록 프로그램을 만들어서 사용하는데 이 프로그램을 프로토콜프로그램이라고 합니다. zmodem이라는 프로토콜을 사용하기 위해서는 zmodem 프로토콜 규칙을 이해할 수 있는 프로토콜 프로그램이 필요한데 dsz.com이나 gsz.com과 같은 프로그램이 이런 프로토콜을 사용할 수 있도록 해주는 프로토콜 프로그램입니다.
프로토콜은 컴퓨터통신이 아닌 다른 분야에서도 많이 사용하는 낱말입니다. '의정서' '약정서'라는 뜻을 지닌 프로토콜은 국가간에 작성한 외교문서나 무역거래 때 작성한 무역문서를 뜻하기도 합니다.
이때의 프로토콜 역시 일정한 규칙과 규약에 따라서 작성하고 교환합니다. 우리가 조그마한 계약서를 하나 작성할 때도 여러 가지 규칙을 정하는 것처럼 프로토콜을 작성할 때도 여러 가지 규칙에 따라서 작성합니다. 예컨대 어떤 계약서를 작성해서 물건을 납품할 때 만약 어느 쪽에서는 갑을 공급자로 이해하고 있는데, 상대방은 을을 공급자로 이해하고 있다면 큰 문제가 발생할 겁니다. 또는 언제 어느 때까지 얼마만큼의 물건을 보내야하는지 약속을 정하는데 이를 한 쪽에서 무시해도 역시 큰 문제가 발생합니다. 한마디로 말해서 의사소통이 전혀 안이루어진 것이며 통신이 이루어지지 않은 것이 됩니다. 통신이란 상대방이 알아들을 수 있을 때 효력을 발휘하는 것입니다. 그렇기 때문에 컴퓨터통신에서도 자료를 주고받을 때 나름대로 정한 규칙에 의해서 자료를 주고받게 되고 이 규칙을 바로 프로토콜이라고 부릅니다. 그리고 나름대로 더 효율적이라는 규칙을 계속 새롭게 만들어내기 때문에 계속해서 다양한 프로토콜이 등장하는 것입니다.
**요약: 프로토콜(Protocol)은 자료를 주고받을 때의 약속을 정한 규칙이나 규약을 말하며 수 백 종류의 규약이 나와 있는데 이중에서도 가장 많이 사용하는 프로토콜은 Zmodem입니다. 그리고 이런 프로토콜을 PC가 알아듣도록 해주는 프로그램이 프로토콜프로그램으로 dsz.com 등의 프로그램을 많이 사용합니다.