[CS - 네트워크] HTTP & HTTPS

Jo HangJoon·2022년 10월 6일
0

CS 공부

목록 보기
9/17

질문의 핵심

  • HTTP란?
  • HTTP에 비해 HTTPS의 장점은?
  • 응답 메서드의 종류?
  • HTTP 요청 메시지?
  • HTTP의 특징?

1. HTTP(Hyper-Text Transfer Protocl)

HTTP란?

  • 하이퍼텍스트 문서를 교환하기 위한 응용 계층 프로토콜.
  • 웹 서버와 클라이언트 간에 데이터를 주고받기 위해 만들어놓은 통신 규약.
  • 초기에는 HTML을 주로 전송했지만, 최근에는 다른 다양한 형태의 정보도 전송한다.
  • 초기에는 웹 브라우저와 웹 서버 간의 커뮤니케이션을 위해 디자인되었지만, 최근에는 모바일 애플리케이션 및 IoT 등과의 커뮤니케이션 같은 다른 목적으로도 사용된다.
  • 클라이언트가 요청을 생성하기 위한 연결을 연 다음, 응답 받을 때까지 대기하는 클라이언트-서버 모델을 따른다.
  • 서버가 클라이언트의 요청에 응답한 후에는 클라이언트와 서버의 연결이 끊어지는 비연결성(Conectionless) 프로토콜 이다.
  • 서버가 두 요청 간에 어떠한 상태나 데이터를 유지하지 않는 무상태(Stateless) 프로토콜이다.
  • 일반적으로 안정적인 TCP/IP 레이어를 기반으로 사용한다.
  • 포트 번호는 80이다.
  • 암호화가 되지 않아 내용이 노출되는 보안 이슈가 존재한다. 이를 해결하기 위해 HTTPS 프로토콜이 등장했다.

HTTP 동작 방식

클라이언트(서버에게 요청을 보내는 리소스 사용자)가 브라우저를 통해서 어떠한 서비스를 URI서버(요청에 대한 응답을 제공하는 리소스 관리자)에 요청(Request)하면 서버는 해당 요청에 대한 결과를 응답(Response)한다.

1. TCP Connection

TCP 연결은 요청을 보내거나 응답받는데 사용된다. 클라이언트는 새 연결을 열거나, 기존 연결을 재사용하거나, 서버에 대한 여러 TCP 연결을 열 수 있다.

2. HTTP 메시지 전송

3. 서버에 의한 전송된 응답을 읽음

4. TCP 연결을 닫거나 다른 요청들을 위해 재사용

HTTP Message

요청

  1. HTTP Method + Path + 프로토콜 종류
  2. HTTP 요청 헤더, 리소스를 요청하는 경로

HTTP의 기본 포트인 80번 포트의 경우에는 포트 번호가 생략된다(위 그림).

HTTP 요청 메서드

  1. GET: 클라이언트가 서버에 리소스를 요청할 때.
  2. POST: 클라이언트가 서버의 리소스를 새로 만들 때.
  3. PUT: 클라이언트가 서버의 리소스를 수정할 때.
  4. DELETE: 클라이언트가 서버의 리소스를 삭제할 때.
  5. 그 외: PATCH, HEAD, OPTIONS, CONNECT, TRACE, ...

응답

  1. 프로토콜 종류 + HTTP 상태 코드 + HTTP 상태 메시지
  2. HTTP 응답 헤더

HTTP 상태 코드

  1. 1xx(정보): 요청을 받았으며 프로세스를 계속 진행함.
  2. 2xx(성공): 요청을 성공적으로 받았으며 인식했고 수용함.
  3. 3xx(리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요함.
  4. 4xx(클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없음.
  5. 5xx(서버 오류): 서버가 명백히 유효한 요청에 대한 충족을 실패.

2. HTTPS(Hyper-Text Transfer Protocol Secure)

HTTPS란?

  • HTTP에 데이터 암호화가 추가된 프로토콜.
  • 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 사용하여 클라이언트와 서버가 자원을 주고받을 때 사용하는 통신 규약.
  • HTTP에 Secure Socket이 추가된 형태로, 기존의 HTTP 통신에 SSL 혹은 TLS(Transport Layer Security) 프로토콜을 조합하여 세션 데이터를 암호화한다.
  • 공개키 암호화 방식을 사용한다.
  • 포트 번호는 443이다.
  • HTTP에 비해 속도가 느리다(요즘은 별로 차이나지 않는다). 또한, 인증서를 발급하고 유지하기 위한 추가 비용이 발생하다.
  • HTTPS는 검색엔진에 최적화되어있다.

HTTPS 동작 방식

  1. 클라이언트는 서버에 접속하면, 서버인증서(CA)를 받는다.
  2. 서버인증서 신뢰 여부 체크 후, 공개키를 추출한다.
  3. 클라이언트는 서버와 통신하는 동안만 사용할 대칭키를 임의로 만들고, 해당 대칭키를 공개키로 암호화 후 전송한다.
  4. 서버는 개인키로 클라이언트가 보낸 메시지를 복호화하여 대칭키를 추출하고, 해당 대칭키를 이용하여 클라이언트와 통신한다.

참조

0개의 댓글