프로토콜(Protocol)의 정의
프로토콜은 컴퓨터, 통신장비 간의 원활한 소통을 위한 약속이다.
손님이 대뜸 외계어로 주문을 할 수 없듯 주문을 하기 위해서는 꼭 지켜야 할 약속 몇 가지가 존재한다.
프로토콜을 접할 수 있는 곳
1. TCP/IP
TCP와 IP는 인터넷에서 가장 중요한 역할을 하는 프로토콜이다.
서킷 통신의 단점을 보완하고자 패킷 통신을 고안하였다.
서킷 통신의 단점은 일대일로 연결하는 방식이기에 선이 열결되어 있어야 하고
교환원을 통해서 열결을 해야한다는 점이다.
반면 채킷 통신은 데이터를 보낼 때 잘게 쪼개서 보낸다.
데이터를 쪼개서 보내면 도착 할 때는 순서나 데이터가 달라질 수 있다.
이를 보완하기 위해 TCP/IP가 등장하였다.
(*왼: 패킷 통신, 오: 서킷 통신)
IP는 보내고자 하는 데이터를 잘라서 순서와 관계없이 빠르게 보내는 역할이다.
TCP는 그 후 전송이 누락되었거나 순서가 맞지 않는 데이터를 다시 요청하는 역할이다.
TCP가 IP 위에서 동작하기 때문에 주로 TCP/IP라고 부른다.
2. HTTP
하이퍼텍스트(HyperText)는 텍스트를 초월한 문서이다.
HTTP는 하이퍼텍스트를 전송하는 프로토콜이다.
우리가 흔히 접하는 웹 사이트 대부분이 이 프로토콜을 따르고 있다.
인터넷 주소의 http://는 HTTP라는 프로토콜을 이용해서 문서를 받겠다는 약속이다.
3. FTP
단어 그래도 파일을 전송하기 위해 사용하는 프로토콜이다.
대용량 파일을 전송하거나 불특정 다수에게 배포하는 데 용이하다.
구조가 단순한 만큼 보안에 취약하다는 단점도 있어 이를 보완하기 위해 SFTP가 탄생하기도 했다.
FileZilla, 알드라이브 등 FTP 클라이언트/서버를 이용하면 전문 지식이 없어도 GUI로 쉽게 파일을 주고받을 수 있다.
4. SMTP
많은 이메일 전송 시스템이 TCP상에서 동작하는 SMTP를 사용한다.
SMTP는 텍스트밖에 전송되지 않기 때문에 이를 보완하기 위해 MIME이라는 프로토콜이 등장하였다.
프로토콜 알아보기
1. 구문(Syntax)
언어에 문법이 있듯이, 구문은 프로토콜에서 문법과 같은 역할을 한다.
데이터를 구성하는 형식(Format), 부호화(Coding), 신호 레벨(Signal Level), 순서와 같은 정보들을 정의한다.
사람대 사람과 대화할 때 자연어로는 다양하게 얘기할 수 있는 반면 컴퓨터는 프로토콜이라는 약속을 지켜야 한다.
2. 의미(Semantic)
각 데이터가 무엇을 의미하는지를 정의한다.
예를 들어 "안녕 나 OO인데 OO의 주수 알려줘." 이 형식에서 첫 번째 OO는 본인 이름, 두 번째 OO는 친구 이름과 같은 의미를 정의하는 것이다. 또한 받은 데이터가 왜곡된 데이터가 아닌지 확인하고, 왜곡되었다면 가시 복구하는 제어 데이터를 담을 수도 있다.
대표적인 제어 데이터는 체크섬(CheckSum), 패리티(Parity) 등이 있다.
3. 타이밍(Timing)
통신을 주고받을 때의 속도나 순서를 규정하는 것이다.
여러 사람이 동시에 대화할 때 순서 없이 얘기하면 한 사람의 말도 제대로 못 들을 수 있다.
따라서 프로토콜로 원활한 의사소통을 하려면 순서를 정하는 규칙이 필요하다.
프로토콜, 왜 알아야할까?
프로토콜은 통신장비 간의 원활한 소통을 위해 만들어진 규칙이다.
상황에 따라 물건을 전달하는 방법은 여러 가지이다.
여기서 물건은 데이터가 되고 전당 방법은 프로토콜이 된다.
세상에는 수많은 프로토콜이 존재한다.
개발하다가 프로토콜을 접했을 때 편하기 소통하기 위해 만들어 놓은 약속이라고 받아들이면 좋을 것 같다.