HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)에 대해 알아보자

heauchi·2024년 7월 26일

When I Was Mentee - Front

목록 보기
13/21
post-thumbnail

🌐HTTP

http 는 본래 hyper text를 전송하기 위한 프로토콜로 만들어졌지만, 웹기술의 발전과 사용자의 요구의 다양화로 현재는 다양한 소스들을 전송할 수 있습니다. 특징으로는 비연결성, 무상태성이 있으며 OSI(Open Systems Interconnection : 개방형 시스템 상호연결 ) 7계층에서 Application 계층을 담당하기도 합니다.

http 의 비연결성, 무상태성, http 메시지가 어떤식으로 구성되어있는지, http의 보안문제를 해결하기 위한 https에 대해서도 알아보겠습니다.

💔비연결성

비연결성은 우리가 일반적으로 알고있는 통화와 반대되는 개념으로 통화는 한번 연결되면 끊기 전까지 계속 유지되면서 데이터를 주고받지만 http는 한번 연결을 맺고 클라이언트가 요청을 보냄, 요청에 대한 응답을 서버가 마침 그러면 연결을 끊어버리는 성질입니다.

불특정 다수와 계속 통신해야하기 때문에 이런 특성을 가지고 있습니다. 다수의 클라이언트와 연결을 계속 유지하면 많은 리소스가 발생하기 때문입니다.

서버는 클라이언트를 기억하고 있지 않으므로 동일한 클라이언트의 모든 요청에 대해, 매번 새로운 연결을 시도/해제의 과정을 거쳐야 하므로 연결/해제에 대한 오버헤드가 발생한다는 단점이 있습니다.

🐦‍⬛무상태성

서버는 들어온 요청을 보고 클라이언트가 어떤 놈인지 식별할 수 없는데 그것을 상태가 없다고 이야기 합니다. 여기서 상태는 서버가 클라이언트의 과거 요청이나 현재 세션에 대한 정보를 기억하고 있는 것을 의미합니다.

지금 http 에서는 각 요청이 독립적으로 처리되므로 클라이언트가 로그인 요청을 보내고 이후 다른 요청을 보낼 때마다 서버는 그 클라이언트가 로그인 했는지 아닌지를 기억하지 못하기 때문에 매 요청은 서버에 아무런 정보를 남기지 않는 독립된 요청입니다.

실무적인 관점에서 무상태성은 한계가 있는데 모든것을 무상태로 설계할 수 없기 때문입니다. 예를 들어 로그인이 필요 없는 단순한 소개 서비스는 무상태로 가능하지만, 보통의 서비스는 로그인 한 유저의 상태를 서버에서 유지해야 합니다.

✉️HTTP 메시지

WEB-🌐-HTTP-09-HTTP-30-까지-알아보는-통신-기술

http 는 한번 만들어지고 계속 쓴게 아니라 지속적인 업데이트 과정을 거친 프로토콜입니다.

각각의 문제점과 발전과정은 위에 적혀있습니다.

이 글에서는 가장 많이 사용되고 응용된 1.x 버전에 대해서 기술하겠습니다.

📤요청

요청은 다음의 요소들로 구성됩니다.

Method, URL, Version, Headers, 공백, Body

Meathod : http 메서드는 클라이언트가 수행하고자 하는 동작을 정의한 get, post를 지칭하며 리소스를 가져오거나 (GET) HTML 폼의 데이터를 전송할 수 있습니다(POST)

URL : 요청대상의 경로를 표시합니다.

Version : 사용된 http 버전을 표시합니다.

Headers : Http 전송에 필요한 모든 부가 정보를 담고 있습니다.(메시지 크기, 압축 여부, 인증, 브라우저 정보, 서버 정보, 캐시 등..)

공백 : 헤더와 바디를 구분하기 위한 라인입니다.

Body : 실제 전송할 데이터 (HTML 문서, 이미지, 영상, JSON등..)

📥응답

HTTP-🌐-상태-코드-1XX-5XX-총정리판-📖

응답은 다음의 요소들로 구성됩니다.

Version, Status Code, Status Message, Header, 공백, Body

Version : 사용된 http 버전

Status Code : 클라이언트가 보낸 요청이 성공인지 실패인지 숫자 코드로 나타낸다

Header : http 전송에 필요한 모든 부가 정보를 담고 있다. (메시지 크기, 압축 여부, 인증, 브라우저 정보, 서버 정보, 캐시 등)

Body : 전송 받은 데이터

🔐HTTPS

HTTP에 S(Secure)를 붙인 보안버전으로 클라이언트가 서버로 Http 요청을 보내기 전에 암호화 과정을 거쳐서 스니핑을 당해 내용이 노출되는 것을 방지할 수 있습니다. HTTP는 보안을 전혀 신경쓰지 않기 때문에 그대로 네트워크를 통해 통신을 하면 전송 중간에 스니핑을 당해 민감한 정보를 들킬 수 있습니다.

이번 글에서는 차이점 정도만 알아두고 다음 글에서 암호화와 HTTPS의 특징에 대해서 더욱 자세히 알아보도록 하겠습니다.


참고문헌

인파님 블로그

0개의 댓글