[정보 및 잡담] 프로토콜이란?


Development note/Etc.  2012. 10. 14. 16:14

안녕하세요. 명월입니다.


시작에 앞서 개인적인 생각과 경험을 통해 기술해 놓은 것이니 의미가 이론상 다른 내용도 있을 수 있습니다.


먼저, 프로토콜이란 용어에 대해서 알아보겠습니다. 「프로토콜」이라는 단어를 네이버(Naver), 구글 등의 포털사이트에서 검색해 보면 규약의 일종이다 혹은 통신 간의 약속이라고 표현이 되어있습니다.
단순하게 이런 식으로 설명을 확인하기엔 무슨 이야기인지 파악하기 어렵고, 도대체 무슨 규약을 이야기하는 것인지 모르겠습니다.
그러나 저도 프로토콜의 정의를 설명하는 것도 통신규약, 상호 통신 간의 약속이라는 정도밖에 설명을 못 하겠네요. 영어 단어의미 상도 약속, 통신 규약이니깐요.


그렇다면 통신 규약이 무엇인지 조금은 알아듣기 쉽게, 설명해 보겠습니다.


제 블로그 포스트를 보면 예전에 C#언어로 통신프로그램을 만든 적이 있습니다. 그 포스트에서도 네트워크 통신 규약, 프로토콜에 대한 설명을 프로그램적으로 설명했으니 참고하는 것도 좋겠습니다

바로 가기 - [C# 강좌 27강]소켓 통신 - 1



프로그램이 통신하기 위해서 혹은 컴퓨터 간의 통신하기 위해서는 소켓프로그램이라는 네트워크 통신 표준 규약이 있습니다. 잠깐 소켓프로그램에 대해서 간략하게 설명하자면, 프로그램과 프로그램 사이 혹은 컴퓨터와 컴퓨터 사이의 통신을 위해서 소프트웨어적으로 변환하는 모듈이라고 생각하시면 되겠습니다. 컴퓨터 비트 0, 1을 문자열로 바뀐다고 생각하시면

조금은 어렵네요. 그냥 쉽게 C언어 이후의 모든 언어는 통신하기 위해선 이 소켓을 이용해야 합니다.


그럼 소켓을 통해서 네트워크 통신이 이루어졌습니다. 그럼 별문제가 없겠다고 생각되겠지만 사람도 그러하듯이 입에서 소리가 나온다고 의사소통이 되는 것은 아닙니다. 한국에서는 한국어이라는 언어, 그리고 문법, 단어들을 통해서 내 생각을 전달하고 공유를 하는 것입니다.


다시 바꿔서 말하면 소켓은 입에서 소리를 내는 장치라고 생각하면 프로토콜은 이 언어, 문법이라고 생각하면 됩니다.


비유적인 설명보다 프로그램적인, 기술적인 요소로 접근해 보겠습니다.


현재 통신 프로토콜 중에 유명한 것이 많이 있으나 대표적인 HTTP에 대해서 설명하겠습니다.
HTTP – Hyper Text Transfer Protocol, 즉 문서 교환 통신규약입니다.
우리는 웹페이지를 열고, 검색하기 위해서는 이 브라우저라는 소프트웨어를 사용하고 있습니다. 브라우저는 또 종류가 여러 가지가 있습니다. IE(익스플로러), 파이어폭스, 크롬 등등입니다. 그리고 웹 서버에서는 IIS,(아파치), Apache가 있습니다.



우리가 프로그램을 개발할 때는 단순히 Asp.net, PHP, JSP로 개발해서 웹 브라우저를 보지만 내부적으로는 웹서버에서 HTML 문서를 만들고 그 문서를 브라우저로 전송하고 브라우저는 그 문서를 화면에 전개하는 형식으로 프로그램이 돌아가고 있습니다.
여기서 웹서버는 브라우저로 HTML문서를 전송합니다.문서를 전송하는데 브라우져는 어떤 HTML 문서를 전송요청을 해야 하는지, 필요한 값이 있으면 어떻게 서버로 값을 전송해야 하는지에 대한 약속이 필요합니다. 웹서버에서 브라우저 통신은 요청온 프로토콜을 답신해야겠습니다.
이게 프로토콜입니다. 이제 조금 아시겠나요??


반대로 생각을 해보면, 우리가 80포트로 소켓을 Listen(대기)한다고 할 때 브라우저로 접속하면 웹페이지가 열릴까요?
당연한 생각이지만 안 열립니다. 왜냐하면 우리가 대기하고 있는 소켓은 프로토콜이 없기 때문입니다.


프로토콜은 종류가 많습니다. HTTP, FTP, SOAP등등..
이것들이 통신 규약이고 통신 전송 약속 표준입니다. 프로토콜 관련 개발이 있으면 네이버(Naver), 구글 등에서 관련 프로토콜을 검색하시면 그것에 대한 구조체가 잘 나오니 참고하세요.


사람들이 프로토콜 개념을 잘 못 이해하고 있는 사람이 많아서, 간략하게 제 생각을 적어봤습니다.