SSL / TLS 프로토콜

  • Secure Socket Layer / Transport Layer Security
  • 데이터를 암호화하여 전송하기 위한 보안 전송 계층의 프로토콜
  • 과거에는 SSL 을 사용했으나 현대에는 보완된 TLS 를 사용함

 

디지털 인증서와 CA

  • 서버는 디지털 인증서를 발급하는 CA 를 통해 인증서를 발급받는다.
  • 서버는 발급받은 인증서를 클라이언트에게 제공하여 인증을 처리한다.

 

SSL Handshake

Pre Master Secret 값은 서버가 인증서를 통해 전달한 공개키로 암호화하여 전송되며 서버는 해당 값을 공개키에 매칭되는 개인키로 복호화한다.

  • 암호화된 HTTP 데이터를 전송하기 위 정보를 교환하는 과정
    1. Client Hello
      • Pre Master Secret 을 생성하기 위한 클라이언트 랜덤 데이터와 클라이언트가 지원하는 암호화 방식 목록, 세션 ID를 전송
    2. Server Hello
      • Pre Master Secret 을 생성하기 위한 서버 랜덤 데이터와 인증서, Client Hello 단계에서 받은 암호화 방식 목록 중에서 사용 가능한 암호화 방식을 선택해서 전송. 
    3. Pre Master Secret 전송
      • 인증서를 수신한 클라이언트는 내장된 CA의 공개키를 이용해서 인증서를 복호화(브라우저는 CA 리스트를 가지고 있음)
      • 클라이언트는 서버 랜덤데이터와 클라이언트 랜덤데이터를 조합하여 Pre Master Secret 를 생성한 후 해당 값을 인증서에 포함된 서버의 공개키로 암호화하여 서버에 전송. 서버에서는 공개키에 매칭되는 개인키로 복호화한 Pre Master Secret 값을 통해 Session Key 를 얻어낸다.
    4. SSL Handshake 종료

 

전송 데이터의 암호화 / 수신 데이터의 복호화

데이터를 동일한 Session Key 를 통해 암호화 및 복호화

  • 클라이언트는 전송할 데이터를 Pre Master Secret 를 통해 얻은 Session Key 를 통해 암호화하여 전송
  • 서버는 Pre Master Secret 를 통해 얻은 Session Key 를 통해 수신한 데이터를 복호화하여 처리

'HTTP' 카테고리의 다른 글

HTTP / HTTPS  (0) 2022.08.02
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30

HTTP

  • 초본문 전송 규약. HyperText Transfer Protocol
  • W3 (World Wide Web) 상에서 정보를 주고 받을 수 있는 프로토콜
  • HTML ,Text 문서, 이미지, 음성, 영상, Json, Xml 등 거의 모든 형태의 데이터 전송 가능
  • 기본 TCP / IP 포트로 80을 사용

 

HTTP 의 특징

  • 클라이언트 - 서버 구조
    • 클라이언트는 서버에 요청을 보내고 응답을 대기하며 서버는 요청에 대한 결과를 만들어서 응답
  • 무상태 프로토콜(Stateless)
    • 서버가 클라이언트의 상태를 보존하지 않는다. 때문에 응답 서버를 바꾸거나 스케일 아웃 등의 서버 내부에서 작업을 하여도 클라이언트에 영향을 미치지 않으므로 서버의 확장성이 높아진다. 반면, 클라이언트는 매 요청마다 필요한 정보를 모두 보내야하므로 트래픽 측면에서 부담이 될 수 있다.
  • 비연결성
    • HTTP는 기본적으로 연결을 유지하지 않는 통신 모델이다. 요청과 응답이 종료되면 연결을 끊음으로서 자원 낭비를 방지한다.

 

HTTPS

  • HyperText Transfer Protocol over Secure Socket Layer
  • HTTP 의 보안이 강화된 버전
  • 통신의 인증과 암호화를 위해 HTTP의 커넥션의 양 끝단에서 일반 텍스트를 이용하는 대신 SSL 이나 TLS 프로토콜을 통해 세션 데이터를 암호화
  • 기본 TCP / IP 포트로 443을 사용

HTTPS 는 HTTP 에 보안 계층이 추가된 형태라 할 수 있다.

 

다음글

'HTTP' 카테고리의 다른 글

SSL/TLS 프로토콜  (0) 2022.08.08
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30

HTTP 상태코드

  • 클라이언트에게 요청에 대한 처리 상태를 알려주는 코드값
  • 크게 1xx, 2xx, 3xx, 4xx, 5xx 로 분류

 

상태코드의 종류

  • 1xx
    • 요청이 수신되어 처리중인 상태를 의미

 

  • 2xx
    • 요청이 정상적으로 처리되었음을 의미
    • 요청이 성공했음을 의미하는 200, 서버에서 리소스를 성공적으로 생성함을 의미하는 201 등이 있음

 

  • 3xx
    • 요청을 완료하기 위해 추가 동작이 필요함을 의미
    • 리다이렉트 등의 추가 동작을 통해 요청을 처리해야함

 

  • 4xx
    • 클라이언트의 요청이 잘못되어 오류가 발생하였음을 의미
    • 요청에 문법이 잘못되었거나 리소스에 접근하기 위한 권한이 없는 경우, 요청한 리소스를 찾을 수 없는 등 잘못된 요청을 통해 오류가 발생한 경우

 

  • 5xx
    • 서버의 문제로 오류가 발생한 경우

 

'HTTP' 카테고리의 다른 글

SSL/TLS 프로토콜  (0) 2022.08.08
HTTP / HTTPS  (0) 2022.08.02
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30

HTTP 헤더

  • 클라이언트와 서버가 무엇을 해야하는지 결정하기 위해 사용되는 부가정보
  • 헤더 영역에 여러 헤더가 존재하며 키 : 값 형태로 하나의 헤더를 구성

 

HTTP 헤더의 종류

  • 일반 헤더
    • 클라이언트와 서버 양쪽, 즉 요청과 응답에 모두 사용되는 헤더
    • 메시지 바디로 전송되는 데이터와는 관련이 없는 헤더 
      • ex) Date: Sat, 30 Jul 2022 15:35:02 GMT
  • 요청 헤더
    • HTTP 요청 메시지에 사용되는 헤더
    • 요청을 통해 서버로부터 클라이언트가 받고자 하는 데이터의 정보나 클라이언트 자체에 대한 정보를 포함
      • ex) Accept: text/html
  • 응답 헤더
    • HTTP 응답 메시지에 사용되는 헤더
    • 서버가 클라이언트에게 서버에 관련된 정보를 제공
      • ex) Server: Apache
  • 엔티티 헤더
    • HTTP 메시지의 본문에 관련된 정보를 제공
      • ex) Content-Type: text/html; charset=utf-8

브라우저의 개발자 도구를 통해 확인할 수 있는 헤더 정보들

'HTTP' 카테고리의 다른 글

HTTP / HTTPS  (0) 2022.08.02
HTTP 상태코드  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
URL - 통합 자원 식별자  (0) 2022.07.30
HTTP 메시지  (0) 2022.07.29

HTTP 메서드

  • 클라이언트가 서버에게 요청시 서버에게 무엇을 해야하는지 알려주는 정보

 

HTTP 메서드의 종류

  • GET
    • 서버의 리소스를 조회
    • 서버에 전달하고 싶은 데이터가 있을 경우 쿼리 파라미터를 통해서 전달
  • POST
    • 서버에 처리해야 할 데이터를 전송.
    • 데이터는 HTTP 메시지 바디를 통해 전달
    • 일반적으로 데이터를 저장, 등록할 때 사용
  • PUT
    • 서버에 있는 리소스를 새로운 데이터로 대체
    • 파일 시스템에서 파일을 새로운 파일로 덮어쓰기와 같은 개념
  • PATCH
    • 서버에 있는 리소스를 전송한 데이터를 통해 수정
    • 파일 시스템에서 파일을 열어 수정한 것과 같은 개념
  • DELETE
    • 서버에 있는 리소스를 삭제

 

HTTP 메소드의 안정성 / 멱등 / 캐시가능여부

출처 - https://ko.wikipedia.org/wiki/HTTP

  • 안정성
    • 서버에게 리소스를 요청시 서버에 어떠한 작용도 없다는 것을 의미함
      • 요청시 리소스 및 관련 데이터를 조회하는 GET, HEAD, OPTIONS, TRACE 메소드의 경우 안전한 메소드에 속함
      • 요청이 리소스를 등록, 수정, 삭제 등 변경을 요청하는 POST, PUT, DELETE, PATCH 메소드의 경우 안전하지 않음
  • 멱등
    • 서버에게 같은 내용의 요청을 여러번 하더라도 결과가 동일한 경우 (서버에서 단일 클라이언트의 요청만 처리할 경우)
    • GET의 경우 몇 번을 요청하더라도 같은 결과가 조회됨
    • POST의 경우 요청 수에 따라 결과가 달라질 수 있음 (ex - 게시판에 게시글을 등록 시. 같은 내용으로 여러번 등록시 처음 등록된 글과 마지막에 등록된 글은 내용만 동일한, 다른 게시글 번호를 가진 다른 리소스)
    • PUT의 경우 요청 수에 상관없이 같은 내용으로 요청한다면 최종적으로 그 내용으로 리소스가 대체됨
    • DELETE의 경우 요청 수에 상관없이 해당 리소스가 삭제된 상태가 됨
  • 캐시 가능
    • 응답 결과 리소스를 캐시, 저장할 수 있는 경우

'HTTP' 카테고리의 다른 글

HTTP / HTTPS  (0) 2022.08.02
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
URL - 통합 자원 식별자  (0) 2022.07.30
HTTP 메시지  (0) 2022.07.29

URL - Uniform Resource Identifier

  • 통합 자원 식별자
  • 리소스가 어디 있는지 설명하는 것으로 리소스를 식별

 

URL 의 구조

클라이언트에서 요청 URL에 따라 서버에 요청

  • 스키마 - 리소스를 요청하기 위해 어떤 프로토콜을 사용해야하는지에 대한 정보
  • 호스트 주소 - 리소스에 접근할 수 있는 서버의 IP 주소
  • 포트 번호 - 리소스를 호스팅하고 있는 장비 내에서 리소스에 접근할 수 있는 프로세스를 식별하기 위한 값
  • 리소스 경로 - 리소스가 서버의 어느 경로에 있는지 알려주는 정보
  • 쿼리 파라미터 - 서버 애플리케이션이 요청을 처리하기 위해 필요한 추가 정보를 전달하기 위해 사용
    • 키=값 형태로 한 쌍을 구성하며 파라미터가 여러개일 경우 & 문자로 파라미터 쌍을 구분함

'HTTP' 카테고리의 다른 글

HTTP / HTTPS  (0) 2022.08.02
HTTP 상태코드  (0) 2022.07.31
HTTP 헤더  (0) 2022.07.31
HTTP 메서드  (0) 2022.07.30
HTTP 메시지  (0) 2022.07.29

+ Recent posts