Dev/Basic

[HTTP] HTTP

隣席の開発者群 2023. 4. 27. 10:58
반응형

REST 를 설명하려다보니 HTTP에 대한 설명이 필요한 것 같아서 정리해왔다. 

블로그 제대로 쓰는 것도 쉽지 않구나..

시작해보자..

 

1. 프로토콜...?
HTTP란 뭘까? HyperText Transfer Protocol의 줄임말이다. 
후벼파보니 더 알 수 없는 말만 있다. 
일단 프로토콜을 사전에서 찾아보면 통신규약이다. 더 길긴한데, 그냥 축약하자. 더 다른 의미 없다. 
뭐 Transfer 나 Protocol 같은 경우는 일반적인 단어 + 앞에서 설명하였음. 으로 퉁칠 수 있는데 그럼 HyperText는 뭔가?
그냥 대충 말하면 완전멋진초월텍스트다. 기존의 인류 문명은 책이라는 문서양식를 가지고 있었다. 
특정방향으로 방향성을 가지고 선이 이어지듯 연결되는 텍스트들의 집합 = 책(선형적인 텍스트) 인 것이다. 
근데 인터넷이 등장하고, 해당 인터넷에서는 이런 선형 Doc로 구성할 필요가 없다. 하이퍼링크도 있고, 쉽게쉽게 다른 Doc로 넘어갈 수 있으니까
이게 비선형적인 텍스트인 것이다. 
그래서 기존에 있던 책과 같은 형태를 초월한 짱짱 멋진 텍스트 라는 의미에서 hyperText라는 이름을 붙인거다.

그러면 이제 해석이 끝났다. 
"짱짱 멋진 텍스트들을 아주 효율적으로 전달하기 위한 규칙"

2. Stateless
자 그럼 http가 뭔지 이제 알았는데, 얘의 특징이 Stateless(무상태) 같은게 있다. 
이건 설명만 잘하면 쉽다. 
기본적으로 http는 server-client 구조라는게 전제로 깔려있는데 이것도 역시 HTTP의 특징 중 하나다. 
근데 이 서버클라이언트라는게 자꾸 컴퓨터랑 연관지어서 생각하니 디게 어렵게만 들린다. 
그냥 컴퓨터라는건 잊고, 음식점으로 빗대서 생각해보자. server(종업원), client(고객) 이라고 생각해보자.
이 두 사람간의 관계에선 대화가 발생한다.
고객이 하는 말은 요청, 종업원이 하는 말은 응답이다. 
이 대화의 규칙이 프로토콜이라고 생각하면 된다. 

자 그럼 다시 http로 돌아가서,
근데 이 http의 종업원은 상당히 멍청하다.
이 대화를 들어보자. 


Client : "이 음식은 어떤건가요?"
Server : "이 이러이러해서 ... 음식입니다."
Client : "아 그럼 그거 주세요."
Server : "예..? 그게 뭔데요?"

이게 Stateless다. 이전 대화에서 있었던 존재는 까맣게 잊어버리는 것이 규칙이기 때문에, 
애초에 Client는 Server가 기억하고 있을거란 생각은 갖다버리고 "무슨무슨 음식 주세요." 라며 주문할 때 필요로 하는 내용들을 제대로 명시해서 한꺼번에 전달해주어야한다. 

3. Connectionless
자 위에서 첫번째 두번째 특징인 server-Client, Stateless 에 대해서 알아봤다. 
이번에 Connectionless에 대해서 알아보자. 
이것도 앞의 예를 생각하면 쉽게 이해할 수 있다. 
우리는 식당에 방문하면 종업원과 상시 대화하고 있는가? 일반적으로 그렇지 않다. 주문이 끝나면 음식을 먹고 계산하면서 다시 대화를 한다. 
이게 비연결성, Connectionless 다. 필요한 요청과 응답이 끝나면 그대로 연결이 끊어지는 것. 
왜 이런 것이냐 라고 묻는다면, 종업원 입장이 되어보자. 알바를 하고 있는데, 손님들이 미쳐가지고 계속 나한테만 말걸면 내가 상대할 수 있는 손님의 수에 한계가 생긴다. 
그래서 그렇다. 서버도 마찬가지로 다수의 클라이언트들과 연결을 유지하고 있으면 부담이 생기기 때문에 이런 연결방식을 채택하게 된 것이다. 


이제 이거 설명했으니 REST 특징도 쓸 수 있겠다.. 

LIST

'Dev > Basic' 카테고리의 다른 글

[Front Basic] HTML  (0) 2023.06.14
[Git] Git  (0) 2023.06.12
[REST] REST API  (0) 2023.04.27
[REST] REST  (0) 2023.04.26
[Arch] MSA || Monlolithic  (0) 2023.04.18