HTTP(Hypertext Transfer Protocol)

  • 인터넷상에서 데이터를 주고 받고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
  • 일반적으로 80 port를 사용

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)

  • HTTP 및 SSL/TLS(보안 채널)를 조합시킨, 웹 서버 및 웹 브라우저 간의 보안용 프로토콜

  • HTTP(응용계층)와 TCP(전송계층) 사이에서 일종의 보안 계층을 구현

    • 보안 계층 : HTTP 메세지를 TCP로 보내기 전에 먼저 그것을 암호화하는 계층 (SSL/TLS) 

    • 암호화(Encryption)와 인증(Authentication) 변경감지등을 수행
    • SSL이나 TLS를 프로토콜을 통해 세션(session) 데이터를 암호화
    • 공개키 암호화방식 사용
  • 일반적으로 443 port를 사용

 

 

 

HTTP & HTTPS는 OSI 7 layer의 7계층에 해당하는 통신 프로토콜

HTTP vs HTTPS 프로토콜 스택 비교

HTTPS는 TCP상위에 TLS 또는 SSL 프로토콜을 조합한 형태

 

 

HTTP 프로토콜 메시지 구성

HTTP req/res 메시지 구조

요청메시지

  • Request line(요청행)

Request line 구조

  • 요청 Header

Request 요청 Header

  • blank line(빈줄)

    • 헤더의 끝을 의미

  • BODY

    • 요청방법의 메소드가 POST형식이 아니면 빈채로 전달

HTTP요청메시지 헤더 예시

     GET / HTTP/1.1          // 요청 행 (메소드,웹페이지 디렉토리,버젼)
Host: www.ktword.co.kr

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
User-Agent: Mozilla/5.0 (...) // 웹브라우저

 

응답메시지

Status line

Status line

Status code

Response Header

  • 복수의 Header항목을 갖을 수 있음

    • '이름:값' 형식

HTTP 응답 메시지 헤더 예시

HTTP/1.1 200 OK        // 응답 행 (버젼,응답 코드) 
Connection: Keep-Alive 
Content-Length: 6330 
Content-Type: text/html 
Date: Fri, 03 Apr 2015 07:27:57 GMT 
Keep-Alive: timeout=5, max=100 
Server: Apache/2.2.16 (Win32) PHP/5.3.13 
X-Powered-By: PHP/5.3.13

 

HTTPS

 

 

HTTPS 동작방식

ref: https://docs.pexip.com/admin/certificate_management.htm

  1. CA는 서명 된 인증서를 발급하여 서버에 업로드합니다.
  2. 클라이언트가 서버와 통신을 위해서 서버에 식별 제공요청을 보냅니다.
  3. 서버는 클라이언트에게 TLS인증서와 서버의 public key를 보냅니다.
  4. 클라이언트는 CA를 통해서 해당 인증서가 신뢰할 수 있는지 확인합니다.
  5. 해당 인증서가 신뢰할 수 있는 인증서라면 클라이언트는 session key를 생성하고 해당 session key를 서버의 public key로 암호화하여 서버에 전송합니다.
  6. 서버는 해당 암호를 서버의 private key로 복호화하여 session key를 획득합니다.
  7. 이 후 모든 data는 해당 session key로 암호화하여 송수신합니다.

 

인증서 발급 절차

'네트워크' 카테고리의 다른 글

Network 기본  (0) 2020.06.23

+ Recent posts