본문 바로가기
주니어에서 시니어로/초보 개발자 TIP

'프로토콜을 구현'한다는 게 무슨 말일까?

by 펜네임 2023. 6. 15.

프로토콜을 구현해야 하는 곳

6월부터 새로운 프로젝트에 참여하게 되었다.

이번에 개발해야 하는 것은 어떤 시스템 내부의 TCP/IP 서버 이다.

 

서버를 개발한다는 개념이 익숙치 않아서 좀 더 찾아보았다.

네트워크 애플리케이션 에서 데이터를 주고받을 때 사용할 수 있도록 프로토콜을 구현하는 거라고 한다.

대체 무슨 말일까?

 

 

 

네트워크 애플리케이션이란?

네트워크 애플리케이션(이하 '네트워크 앱')이라고 하면 어렵게 느껴지지만, 알고보면 친숙한 프로그램들이다.

이메일, 메신저, 채팅 프로그램, 파일 전송 프로그램, 웹 사이트나 게임 등이 해당된다.

 

쉽게 말해 네트워크로 데이터를 주고받는 소프트웨어.

더 자세히는 클라이언트 컴퓨터와 네트워크를 통해 데이터를 주고 받는 서버 격의 소프트웨어들을 말한다.

 

 

 

네트워크 앱은 필요에 따라 특정 프로토콜을 구현해 둔 서버를 두고 사용한다.

 

 

일반적인 소규모 웹사이트를 만들 때는 하나의 프로젝트에 서버 단을 두고 거기에 (웹 데이터 송수신을 위해 쓰는 프로토콜인) HTTP를 구현해 놓는 경우가 일반적이다. 

 

그런데 특정한 상황에서는 프로토콜을 구현해 둔 서버를 특별히 따로 두어 개발하기도 한다.

 

이렇게 프로토콜 서버를 따로 두는 경우는 주로 데이터를 송수신할 때

1. 사용환경과 목적에 맞는 특정 프로토콜을 사용하고 싶거나

2. 특수한 요청이나 응답 처리를 하기 위해서다. 

 

 

그러면 프로토콜을 구현한다는 말은 무슨 뜻일까?

 

 

 

서버를 만든다는 것

 

프로토콜을 구현한다

 

 

 

server는 데이터를 받고 보내기 위해 존재한다.

프로토콜은 "데이터를 주고받을 때 이렇게 하자" 는 규칙이다.

 

서버와 클라이언트가 데이터를 주고 받을 때는 "이 프로토콜을 쓰자!"고 서로 정해놓는다.

그리고 그 프로토콜(규칙)을 따른다.

 

 

그래서, 서버를 만들 때는 이 프로토콜의 규칙에 맞게 동작하는 코드를 작성해야 한다.

이 부분이 "프로토콜 구현" 이다.

클라이언트가 서버에 보내는 요청을 받고, 요청 내용을 해석해서, 어떤 요청인지에 따라 응답해주는 부분을 코드로 표현하는 것을 프로토콜 구현이라고 한다.

 

 

일반적인 Spring MVC 웹사이트 개발을 한다고 했을 때 [ View의 ajax ↔ Controller 메서드 ] 사이에서 일어나는 일이 “프로토콜 구현”의 핵심이다. 그러니까 js에서 ajax 요청 코드를 적고, 컨트롤러에서 해당 url에 해당하는 응답 메서드를 만들 때, 우리는 HTTP 프로토콜을 구현하고 있는 셈이다.

 

 

물론 그 사이에 더 많은 작업이 있다.

header 필드 처리나 상태 코드 설정은 (웹 개발에서는) servlet이나 Spring Framework 등이 맡아서 전담해준다. 따라서 우리는 프로토콜 구현이라는 보다 깊고 반복적인 단계의 작업은 프레임워크에 맡겨두고, 비즈니스 로직에 집중할 수 있다.

 

 

참고
https://lilo.tistory.com/57

AI Bard
AI chatGPT

댓글