소프트웨어 엔지니어/일반

tcp/ip, http, ? 프로토콜 (protocol) ?

shroomie 2024. 8. 19. 11:19

프로토콜 이란?

프로토콜이란 서로 대화하기위한 약속이야. 
전혀어려울게 없지. 

하지만 이게 왜 어렵게 느껴지냐 하면 그 약속의 종류가 너무나 많고, 약속마다 그 안에 있는 규칙이 많거든.
아래 보면 목적에 따라 오만가지 프로토콜들이 있어.(더많아더많아.) 
TCP/IP 
UDP
HTTP
SSH
RPC / gRPC
Bluetooth
Wi-Fi (IEEE 802.11)
4G , 5G
SPI, I2C, CAN, Ehernet, CAN

다들 별상관없어보이지만, 목적은 서로 다른 시스템끼리 통신하기위함이라 같은거야.
4G , 5G 는 전화기끼리
SPI, I2C 는 프로세서랑 IC 사이에(물론 다른 유스케이스도많아) 
HTTP 는 인터넷서버랑 클라이언트(브라우저) (여기도 물론 다른 유스케이스도많고)

그럼 프로토콜을 쓰는 장점은 무었일까. 
데이터를 서로 주고 받을때, 이미 정해진 약속이 있으니까,약속에 따라서 데이터만 채워서 보내면 의사소통이 되는거지. 
예를 들어보자. AAA 라는 프로토콜이 있는데 
이 프로토콜은 데이터를 주고 받을때 딱 8 바이트씩만 주고 받을수 있어. 
그리고 8 바이트 중에 
앞에 2바이트는 주소라고 약속하고, 그 다음 4바이트는 데이터고 , 그 다음 2바이트는 crc(에러체크)....
뭐 이런식으로 정해져 있다고 하면, 그 안에 내용만 채워서 서로 주고 받으면 의사소통이 되는거지. 
(물론 주소 0x01 은 불켜기, 0x02는 불끄기 이런내용들은 또 사용하는 이들끼리 정해야해.
여기서 중요한거는 큰 대화의 틀이 딱 정해져 있다는게 중요한거지. )

이렇게 생각할수 있을꺼야. 그럼 나랑 사용자사이에 프로토콜을 만들어도 되겠네?
물론 되지. 서로 소통하는 약속이니까. 그리고 이름을 나사용자 프로토콜이라고 해도되. 
이렇게 만든 프로토콜의 문제는 나랑 사용자만 그 약속을 알아듣고 나머지는 아무도 해석을 못하게 되는게 문제지. 

그래서 여러사람이 널리널리 같은 약속을 가지고 사용할라고 저위에 저렇게나 많은 프로토콜들이 약속되어 있는거야. 
저 프로토콜 맘에 안들면 안쓰고 너가 만들어도 되지만, 아무도 안쓰겠지;;;;;
아니면 너가 프로토콜을 만들수 있을만큼 영향력있는 회사오너이거나?