CS/CS지식

HTTP란?

개발..너... 2022. 5. 25. 17:42
HTTP 공부계기

 

HTTP에 대해선 정말 많이 들어봤고 자연스럽게 사용을 하고있었지만 나는 단순히 웹서버의 프로토콜 정도로만 생각을 해왔었다. 그런데 수업시간에 강사님이 get과 post을 알려주시는데 HTTP를 모르니 get과 post가 자꾸 추상적으로만 개념이 잡히고 제대로 이해가 되지 않았다. 그래서 이젠 JSP 수업도 들어갔으니!!! 서버를 만질일도 많아졌고!! 더이상 미룰 순 없다!!! 라고 생각하여 HTTP 공부를 시작해보았다.

 

 

 

HTTP란?

 

우리가 인터넷을 하는데 사용하는 꼭 필요한 프로토콜이다. 

예를들어 인터넷 브라우저 주소창에 http://www.google.com을 을 입력하고 Enter를 입력하게되면 해당 데이터가 여러 경로를 타고 들어가 구글 서버에 도착하게되고 구글서버에서는 html로 작성된 구글의 홈페이지를 사용자에게 보여준다. 

 

쉽게말하자면 너가 url 주소를 주소창에 입력하고 enter를 누르면 내가 홈페이지 서버에서 화면을 불러올께!라고 서로 손가락 걸고 약속을 했다면 http가 그 손가락인 것이다. 

 

http는 OSI7계층의 프로토콜이기도하다. 

 

 

HTTPS란?

 

HTTPS는 HTTP + Secure 이라는 개념이다. 

 

HTTPS는 HTTP보다 나중에 나온 개념으로 기존에는 HTTP만 사용해도 큰 문제가 없었지만 시간이 지나면서 민감한 개인정보들이 인터넷을 통해 오가면서 해킹에 대한 방어수단이 필요했다. 그것이 바로 HTTPS이다. 

 

HTTPS는 HTTP처럼 단순히 데이터를 주고받는 형식만이 아닌 symmetric-key(대칭키)를 통해서 데이터를 암호화시켜 해킹의 위험을 막아준다.

 

Symmetric-key는 어떠한 정보를 암호화 복호화할 때 사용을 하며 브라우저와 웹이 가지고 있는 키가 동일(대칭)한 경우를 말한다.

 

https://www.youtube.com/watch?v=kBlQiwXSx8A 

HTTPS의 동작 원리에 대해 잘 나와있는 강의 영상

 

HTTP VS HTTPS

 

현재 브라우저들은 대부분이 HTTPS로 개발된다.

HTTPS의 궁극적인 목표이자 가장 큰 장점인 보안이 확실하다는 점도 있지만 검색엔진에 최적화 되기위함도 있다. 

현재 구글은 HTTPS를 사용하는 웹사이트에 가산점을 부여한다.

그래서 구글에 더 노출되고 싶다면 HTTPS는 선택이 아닌 필수이다. 

또한 모바일페이지를 만들때도 HTTPS를 사용해야만하니 HTTP의 입지는 점점 더 좁아질 예정이다. 

 

 

 

GET & POST

 

 

get과 post는 Http 메서드 중 가장 많이 사용되는 메서드이다. 

Get은 가져온다는 개념이고 post는 수행한다는 개념으로 생각한다. 

 

[GET]

 

https://cocoon1787.tistory.com/526

 

Get은 클라이언트에서 서버로 어떠한 정보를 요청하기 위해 사용되는 메서드로서 위와 같이 URL뒤에 쿼리 스트링(key와 value)를 붙이고 HTTP 패킷의 헤더에 포함하여 서버에 데이터를 전송한다.

 

해당 value값이 사용자에게 드러나 보안에 몹시 취약하고 전송가능 데이터는 최대 255자로서 너무 긴 데이터는 전송이 불가능하다는 단점이 있다.

 

기본 전송 방식으로 사용이 쉬우며 웹 브라우저에서 직접 입력하여 전송이 가능하며 여러개의 데이터를 전송할 때 &로 구분하여 전송한다. 

 

 

[post]

 

https://cocoon1787.tistory.com/526

 

HTTP 패킷의 헤더에 Body 콘텐츠 타입을 명시하는 Content-type 헤더 필드를 포함하고 HTTP 패킷의 body에 데이터를 담아 서버로 전송한다. get에선 노출되었던 쿼리스트링의 내용이 body에 담겨 서버로 전송된다고 생각하면 된다.

 

보안에 유리하며 전송데이터의 용량이 무제한이라 긴 데이터 전송도 가능하다.

단, 전송시 서블릿에서 또 다시 가져오는 작업이 필요하므로 GET 방식보다 처리속도가 느리다.

Post를 통한 데이터 전송은 보통 HTML form을 통해 서버로 전송된다.

 

 

HTTPS.. 보안..! 중요하다!

 

HTTP... 드디어 HTTP가 뭔지 알았다!!라는 시원함과 동시에 보안이라는 부분에 곰곰히 생각해보게 되는 계기가 되었다.

결국 HTTPS가 만들어진 궁극적인 이유는 "보안"인 것인데 어느 분야든 마찬가지지만 IT에서 보안은 완벽한 보안 프로그램이 나오지 않는 이상 개발자들의 숙명과 같은 문제인 것 같다.

 

언젠가 나에게도 보안에 관련된 이슈가 발생될 것 같다는 막연한 불안감과 함께 IT신문을 읽을 때 보안관련된 기사가 나오면 좀 더 관심있고 꼼꼼하게 읽어야겠다라는 생각을 했다.