컴퓨터네트워크

HTTP와 HTTPS

Younghun 2023. 12. 7. 16:04

1. HTTP (Hypertext Transfer Protocol)

1) 특징

  • HTTP는 응용 계층에서 두 애플리케이션이 데이터를 주고 받기 위한 규약이다.
  • 서버-클라이언트 모델로 구성되며, 요청과 응답으로 동작한다.
  • 예시) 웹 브라우저(클라이언트)가 서버에 HTML 혹은 JSON을 요청하는 경우
  • 80번 포트를 기본으로 사용한다.
  • 평문으로 데이터를 주고 받기 때문에, 통신 내용을 제3자가 조회할 수 있다.

2) 구조

  • TCP/IP 위에서 동작한다.
  • Stateless하게 통신한다.
  • Method, Path, Header, Body, Status Code 등으로 구성된다.

3) 요청 메소드 종류

  • GET : 데이터를 조회할 때 사용
  • POST : 데이터를 생성할 때 사용
  • PUT : 데이터를 수정할 할 때 사용
  • DELETE : 데이터를 삭제할 때 사용

4) 응답 상태코드 종류

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 성공적으로 처리했다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트 요청에서 오류가 발생했다.
  • 5XX (서버 오류) : 서버의 요청 처리에 오류가 발생했다.

2. HTTPS (Hypertext Transfer Protocol Secure)

1) 특징

  • HTTP에 데이터 암호화가 추가된 프로토콜이다.
  • 443번 포트를 기본으로 사용한다.
  • SSL(보안 소켓 계층)을 이용해서 클라이언트와 서버를 안전하게 연결한다.

2) 암호화 방식

  • 대칭키를 사용하면 키가 탈취될 수 있다는 위험이 존재한다.
  • 공개키를 사용하면 HTTP 메시지의 길이가 큰 경우에 성능이 느리다. (공개키 알고리즘은 암호화, 복호화 알고리즘이 매우 복잡함)
  • 그래서 HTTPS에서는 공개키로 암호화한 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

암호화 과정

  1. A는 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화해서 B에게 보낸다.
  2. B는 암호문을 받고 자신의 비밀키로 복호화한다.
  3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
  4. A는 자신의 대칭키로 암호문을 복호화한다.
  5. 앞으로 해당 대칭키로 계속 통신한다.

즉, 사용자 측에서는 대칭키 알고리즘을 통해 안전하게 키 교환을 한 후 해당 키로 대칭키 알고리즘을 통해 통신하게 된다.