본문 바로가기

CS BASIC/네트워크와 정보통신

[CS BASIC] HTTP, HTTPS, HTTP Method

1. HTTP란?

HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜

 

1.1. 프로토콜(Protocol) 이란?

  • 둘 이상의 통신개체간에 교환되는 메세지 포멧과 순서뿐 아니라, 메세지의 송수신과 이벤트에 따른 행동들을 정의한다.
  • 여러 계층으로 나눠진 네트워크 구조에서 동일 계층에서 사용하는 표준화된 통신 규약으로,네트워크 기능을 효율적으로 발휘하기 위한 협정

1.1.1. 프로토콜의 주요기능

  • 단편화와 재합성
  • 캡슐화
  • 주소지정, 순서지정, 흐름제어
  • 연결제어, 오류제어, 동기화, 다중화

 

1.2. HTTP의 기본 구조

① 시작 라인 (Start line)

  • 기본적으로 HTTP 버젼에 대한 정보를 가지고 있으며, Response인지 Request인지에 따라 약간 형태가 다르다.

 

② 헤더 (Header)

  • header-field : field-value 으로 구성되어 있다.
  • HTTP 전송에 필요한 모든 부가정보를 가지고 있다.

 

③ 메시지 본문 (Message Body)

  • 메세지의 본문, 통신을 통해 보내고자 하는 Data를 담고 있다.

1.3. HTTPS

  • HTTPS는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발한 넷스케이프 웹 프로토콜이며, 전자 상거래에서 널리 쓰인다.
  • 기존의 HTTP 프로토콜은 서버에서부터 브라우저로 전송되는 데이터가 암호화되지 않는다는 보안상 취약점이 있었다.
  • 그래서 중간에 데이터가 쉽게 도난당할 우려가 있으므로 이에 대한 보안이 추가된 HTTPS가 등장하게 되었다.
  • HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다.
  • HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다.
  • SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.
  • HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.
  • HTTPS는 TLS(전송 계층 보안) 프로토콜을 사용해서 보안을 유지한다.
  • TLS는 데이터 무결성을 보장해서 데이터가 전송 중에 수정되거나 손상되는 것을 방지하며 사용자가 접속하려는 웹사이트와 통신하고 있음을 증명할 수 있는 인증 기능도 가지고 있다.

 

1.3.1. 대칭키 암호화와 비대칭키 암호화

  • HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다.
  • 대칭키 암호화
    • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
    • 키가 노출되면 매우 위험하지만 연산 속도가 빠름
  • 비대칭키 암호화
    • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용한다
    • 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다.
    • 공개키: 모두에게 공개가능한 키
    • 개인키:  수신자가 보유하고 있으며 암호화된 데이터에 대해 복호화하기 위해 사용하는 키

 

공개키와 개인키로 암호화하면 각각 다음과 같은 효과를 얻을 수 있다.

 

공개키 암호화

  • 공개키로 암호화를 하면 개인키로만 복호화할 수 있다.
  • 개인키는 수신자만 소유하고 있으므로 인가된 사용자만 내용을 확인할 수 있다.

개인키 암호화

  • 개인키로 암호화하면 공개키로만 복호화할 수 있다.
  • 공개키는 모두에게 공개되어 있으므로, 발신자가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.

 

 

1.4. HTTP VS HTTPS

구분 HTTP HTTPS
FULL NAME Hypertext Transfer Protocol Hypyertext Transfer Protocol Secure
기본 프로토콜 종류 HTTP/1, HTTP/2 → TCP/IP
HTTP/3 → QUIC 
HTTP요청 및 응답을 추가로 암호화하기 위하여 SSL/TLS와 HTTP/2 사용함
기본 포트 80 443
용도 텍스트 기반 웹 사이트 모든 최신 웹사이트
보안 추가 보안 기능 없음 퍼블릭 키 암호화에 SSL 인증서 사용
장점 인터넷을 통한 통신 지원 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선

 

  • HTTPS는 암호화 과정이 포함되어 있으므로 HTTP 보다 보안에 더 안전하다.
  • 하지만 HTTPS를 사용하면 암호화/복호화 과정이 필요하므로 HTTP 보다 속도가 느리다.
  • HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
  • 개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용해도 된다.

 

1.4.1. HTTP Method

① GET

서버에게 Resource를 보내도록 요청하는데 사용 (서버의 Resource를 읽음)

② HEAD

GET과 동일하지만 서버에서 Body를 Return 하지 않음

  • Resource를 받지 않고 오직 찾기만 원할때
  • object가 존재할 경우 응답의 상태 코드를 확인할때
  • 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인

③ PUT

서버에 문서를 쓸때 사용 (GET과 반대)

  • PUT 메소드는 서버가 Client 요청의 Body를 확인한다.
  • 요청된 URL에 정의된 새로운 Resource를 생성하기 위함
  • 요청된 URL이 존재할 경우 대체하여 사용

④ POST

Server에 Input Data를 보내기 위함 (HTML form에 많이 사용)

  • PUT vs. POST
    • PUT은 서버의 Resource에 Data를 저장하기 위한 용도
    • POST는 서버에 DATA를 보내기 위한 용도

⑤ TRACE

Client로 부터 Request Packet이 방화벽, Proxy Server, Gateway등을 거치면서 packet의 변조가 일어날 수 있는데, 이 때 Server에 도달 했을 때의 최종 Packet의 Request Packet을 볼수 있다.

  • 즉, Original Data와 서버에 도달했을 때의 비교본 Data를 서버의 응답 Body를 통해 확인 할 수 있다.
  • 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
  • 최초 Client의 요청에는 Body가 포함될수 없다.

⑥ OPTION

Target Server의 지원 가능한 method(ex> GET, POST …)를 알아보기 위해 사용한다.

⑦ DELETE

  • 요청 Resource를 삭제하도록 요청
  • HTTP 규격에는 Client의 요청에도 서버가 무효화 시킬수 있도록 정의되어 있다.
  • DELETE Method는 항상 보장되지 않는다.