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계층에 해당하는 통신 프로토콜
HTTPS는 TCP상위에 TLS 또는 SSL 프로토콜을 조합한 형태
HTTP 프로토콜 메시지 구성
요청메시지
-
Request line(요청행)
-
요청 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 |
응답메시지
Status line
Status code
-
200 OK : 요청 성공, 400 Bad Request : 요청 오류 등
-
참조 : ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
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 동작방식
- CA는 서명 된 인증서를 발급하여 서버에 업로드합니다.
- 클라이언트가 서버와 통신을 위해서 서버에 식별 제공요청을 보냅니다.
- 서버는 클라이언트에게 TLS인증서와 서버의 public key를 보냅니다.
- 클라이언트는 CA를 통해서 해당 인증서가 신뢰할 수 있는지 확인합니다.
- 해당 인증서가 신뢰할 수 있는 인증서라면 클라이언트는 session key를 생성하고 해당 session key를 서버의 public key로 암호화하여 서버에 전송합니다.
- 서버는 해당 암호를 서버의 private key로 복호화하여 session key를 획득합니다.
- 이 후 모든 data는 해당 session key로 암호화하여 송수신합니다.
'네트워크' 카테고리의 다른 글
Network 기본 (0) | 2020.06.23 |
---|