미안하다 이거 보여주려고 어그로 끌었다.🤥

설명하는 사람은 진짜 전설이다.
저는 대덕소프트웨어마이스터고 2학년 오준상 이라고 합니다.
현재 Typescript로 Entry ver.5의 메인 프론트 엔드 개발을 맡고 있습니다.
웹 프론트 엔드에 대한 궁금증이나 js,ts에 관련해서 궁금증이 생기면 제 페이스북 메신저로 연락 주시면 항상 답변해 드리도록 하겠습니다.

HTTP에 대해서 모르던 거 정말 실화냐?😮

제 생각에는 HTTP를 처음 보는 사람들이 많을 것이라고 생각합니다.

따라서 너무 깊게 들어가지는 않고 적당한 선을 지키면서 설명하도록 하겠습니다.

그래서 HTTP가 무엇일까요?

우리가 크롬이나 인터넷 익스플로어 같은 "브라우저"에서 여러가지 url들을 입력해서 이동하게 됩니다.

그 때, 관찰력이 좋은 분은 그 주소 뒤에 HTTP나 HTTPS라는 것이 있는 것을 확인 한 적이 있을겁니다.

일단 HTTP는 "Hyper Text Transfer Protocol"라고 합니다. 그대로 해석해 보면,

"신난 글자 변환 프로토콜" "글자 전환 프로토콜"입니다.

프로토콜은 그냥 데이터 통신을 위한 규약이라고 이해하면 됩니다.

결론적으로는 인터넷에서 데이터를 주고받는 통신 규약이라고 이해하면 될 것 같습니다.

TCP / UDP

HTTP에서 사용하는 통신 방법은 TCP와 UDP가 있습니다.
이 두개를 명료하게 설명해 주는 사진이 있습니다.

https://cdn.clien.net/web/api/file/F01/7948515/b76ff17b66c34.jpg

TCP

사진을 보면 알겠지만 TCP의 큰 특징은 직접 연결해서 연결 통신을 진행한다는 것입니다.

직접 연결되어 있으면, 통신이 안정적이고 흐름제어 및 혼잡제어를 할 수 있습니다.

직접 연결하게 되므로, 1:1 연결을 전재로 깔고 갑니다.

UDP

사진에 나오다 시피 UDP비 연결 통신을 진행한다는 것입니다.

보내는 쪽에서는 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없고, 또 확인할 필요도 없도록 만들어진 프로토콜 이라고 이해하면 편합니다.

하지만, 비 연결 통신인 만큼, 신뢰도가 떨어지고 흐름 제어 및 혼잡 제어가 힘들어 집니다.

HTTP 응답 코드📩

어쨋던지 HTTP는 인터넷 통신 규약이라고 말씀을 드렸습니다.

앞쪽의 강의에서 웹과 서버에 관련하여 배웠을 것입니다. 여기서 서로 통신할 때, HTTP를 사용합니다.

이 때, 서버와 통신이 잘 되었는지 아니면 문제가 생겼다는 것을 알기 위해서 상황에 따라서 코드를 지정해 놓았습니다.

그것을 HTTP 응답 코드 라고 합니다.

응답 코드는 밑의 주소에 자세하게 나와있다. 밑의 글에는 자주 쓰이는 코드를 정리하겠습니다.

https://ko.wikipedia.org/wiki/HTTP#%EC%9D%91%EB%8B%B5_%EB%A9%94%EC%8B%9C%EC%A7%80

HTTP 메소드 ✉️

이제 서버와 웹에서 통신이 잘 되는지 안되는 지를 알 수 있게 되었습니다.

그런데 서버에서 프론트 엔드의 요청이 무엇을 원하는지, 어떤 행동을 해서 어떤 정보를 넘겨 주어야 하는지 알아야 합니다.

그걸 웹에서 요청을 보낼 때 메소드 라는 미리 지정 해놓은 단어를 이용해서 서버에게 귀띔을 해줄 수 있습니다.

밑의 표에서 자주 쓰는 메소드들을 정리해 놓겠습니다.

HTTP 요청🤝

위에서 메소드와 상태 코드에 대해서 알아 보았으니, 이제 요청을 어떻게 보내는지에 대해 알아봅시다.

우선 HTTP 요청은 3 파트로 나눌 수 있습니다.

요청 라인, 헤더, 바디

간단하게 생각하면 3가지로 구성되어 있습니다. 요청을 사진으로 보여드리도록 하겠습니다.

상태 라인

우선 요청 라인에서 표현 되는 정보는, 위에서 했던 메소드URL 그리고 HTTP 버전이 담겨 있습니다.
요청 후 돌아오는 응답 에서는 HTTP 버전, 상태 코드, 응답 이유가 담겨 있습니다.

헤더

자료의 타입이나 통신에 대한 정보를 가지고 있는 파트입니다.

그리고 바디가 시작되기 전에 헤더와 바디 사이에 공백이 반드시 존재합니다.

바디

요청에 필요한 데이터가 담겨있는 부분입니다.

이런 3 부분이 모여서 HTTP 요청을 이룹니다.

HTTPS?🔒

그럼 이제 HTTP에 대해서는 대충 이해가 가는데 그럼 뒤에 S는 무엇인가?

HTTPSHyperText Transfer Protocol over Secure Socket Layer 라고 할 수 있습니다.

쉽게 말하자면, HTTP는 맞는데 조금 더 안전하게 사용이 가능한 HTTP라고 할 수 있습니다.

HTTPS에서는 어떻게 HTTP 보다 높은 안전성을 가질 수 있게 되었을까요?

우선 HTTPS에서 사용하는 보안 방식을 한번에 설명할 수 있는 사진 첨부 후 설명 덧붙이겠습니다.

여기를 보면, 라는 것으로 자신이 보낼 요청을 암호화 하고 있습니다. 하지만 암호화만 하면

아무런 소용이 없습니다. 요청은 누군가가 읽어야 의미가 있는 것이기 때문이죠. 그래서 이 암호문을 해독할 수 있는

자신이 글을 암호화 할때 사용한 키를 공개 키 저장소 라는 곳에 등록합니다. 그리고 만약 그 암호문을 받았다면,

상대방의 암호 키를 공개 키 저장소 에서 가져오고 그 암호 키로 다시 암호문을 평문 으로 돌려서 요청을 받는 형식으로 이루어져 있습니다.

마치며...🙇

초반에 HTTP 보면 이해가 안가 는게 정상입니다. 네 인정합니다.

하지만 프론트 엔드나 백 엔드에서 반드시 알고 있어야 하는 개념입니다.

맨 처음에 선을 넘지 않겠다고 했던 것 같은데 쓰다 보니 조금 어려운 개념을 넣은 것 같습니다.

언젠가는 알아야 할 개념들 이라 꼭 넣고 싶었던 것들을 채우다 보니 길고 어려워 졌네요.

그리고 이 글을 작성하면서 제가 잘 모르던 부분을 다시 채울 수 있는 좋은 기회 였다고 생각합니다.

다음 글은 개발 언어 및 환경에 관련된 글입니다. 다시한번 긴 글 읽어 주셔서 감사합니다👍

profile
대덕소프트웨어마이스터고등학교의 입학전형 시스템을 만드는 EntryDSM팀 입니다.

0개의 댓글