하이퍼텍스트를 빠르게 교환하기 위한 프로토콜의 일종
💡 하이퍼텍스트(HyperText)
- Text 방식 : 책을 펼쳐 목차를 확인 후 해당 페이지로 책장을 넘겨 이동
- 클릭 한 방에 텍스트에 접근 가능(순차적 접근법)
- 다른 페이지 뿐만 아니라 같은 페이지 내의 다른 정보로도 순간이동 가능(비순차적 접근법)
W3 상에서 정보를 주고받을 수 있는 프로토콜
💡 월드 와이드 웹(World Wide Web, WWW, W3) = 웹(the Web)
- 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간
- 인터넷 상에서 동작하는 하나의 서비스
→ 웹 ≠ 인터넷- 인터넷에서 HTTP 프로토콜, 하이퍼텍스트, HTLM형식 등을 사용하여 그림과 문자를 교환하는 전송 방식
💡 통신 프로토콜(=통신 규약)
- 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계
- 기능
- 신호체계
- 인증
- 오류 감지
- 오류 수정
클라이언트와 서버 사이에 이루어지는 요청(request)/응답(response) 프로토콜
ex) 클라이언트(웹 브라우저)가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보 요청 → 서버가 요청에 응답하여 필요한 정보를 사용자에게 전달
주로 HTML 문서를 주고받는 데 사용
사용
웹페이지 URI : http://
비상태연결(Stateless, Connectless) → 비연결성 프로토콜
💡 공통 헤더
Date
: HTTP 메시지 생성 일시Connection
: 클라이언트와 서버 연결에 대한 설정Cache-Control
: 캐시 관련Pragma
: HTTP/1.0에서 사용하던 캐시 제어Content-Type
,Content-Encoding
,Content-Length
,Content-Language
: 본문 설정
ex) Content-Type: text/html; charset-latin-1
→ 해당 개체가 html 텍스트 문서이고, iso-latin-1 문자 인코딩 방식으로 표현
구성
요청 내용(라인)
GET
, POST
, PUT
, DELETE
헤더
방식 : key - value
종류 : 아래 표 외에도 여러가지 존재
종류 | 설명 |
---|---|
Host | 요청이 전송되는 target의 host URI 정보 ex) google.com |
User-Agent | 요청을 보내는 클라이언트에 대한 정보 ex) 웹 브라우저에 대한 정보 |
Referer | 직전에 머물러 있던 페이지 정보 |
Accept류 | 클라이언트가 받을 수 있는 컨텐츠 정보(응답 타입) ex) Accept-charset , Accept-language , Accept-encoding |
Cookie | 쿠키 값 |
Authorization | 인증 토큰 정보 |
Origin | 맨 처음 시작 요청 주소값 |
빈 줄(empty line/blank line) : 요청에 대한 모든 메타 정보가 전송되었음을 알림
기타 메시지(HTTP Body) : 빈 줄 아래 작성된 메시지 본문
예시
<!-- 요청 내용 -->
GET /restapi/v1.0 HTTP/1.1
<!-- 헤더 -->
Accept: application/json
Authorization: Bearer UExBMDFUMDRQV1MwMnzpdvtYYNWMSJ7CL8h0zM6q6a9ntw
HTTP 메소드 | 설명 | 요청에 Body 존재 | 응답에 Body 존재 | 안전 | 멱등 | 캐시 가능 | 비고 |
---|---|---|---|---|---|---|---|
GET | 클라이언트가 서버에게 URL에 해당하는 자료의 전송 요청 | X | O | O | O | O | ▪ Safe Method ▪ Idempotent Method |
HEAD | GET 요청 반환 데이터 중헤더 부분만 요청 | X | X | O | O | O | ▪ Safe Method ▪ Idempotent Method |
POST | 클라이언트가 서버에서 처리 가능한 자료 전송 ex) 게시판 글 작성시 클라이언트의 문서를 서버로 전송 | O | O | X | X | O | |
PATCH | 클라이언트가 서버에게 지정한 URL의 데이터 일부 수정 요청 | O | O | X | X | O | |
PUT | 클라이언트가 서버에게 지정 URL에 지정한 데이터 저장 요청 | O | O | X | O | X | Idempotent Method |
DELETE | 클라이언트가 서버에게 지정한 URL 정보 제거 요청 | X | O | X | O | X | Idempotent Method |
TRACE | 클라이언트가 서버에게 송신한 요청 내용 반환을 요청 | X | O | O | O | X | |
CONNECT | 클라이언트가 특정 종류의 프록시 서버에게 연결 요청 | O | O | X | X | X | |
OPTIONS | 해당 URL에서 지원하는 요청 메세지의 목록 요청 | 선택 | O | O | O | X |
💡 Safe Method
요청 전송시 서버 측 데이터에 변화가 있어서는 안됨
💡 Idempotent Method
동일한 요청이 한 번 전송되었을 때와 여러 번 연속하여 전송되었을 때의 서버 측의 처리 결과가 동일해야 함
200
HTTP/1.1 404 Not Found
301
, 302
에 사용되는 헤더로 변경된 주소 지정max-age : n초 단위로 캐시 신선도 설정(캐시 유지 시간)
GET
request<!-- 상태표시 행-->
HTTP/1.1 200 OK
<!-- 응답 헤더필드-->
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전
데이터의 적절한 보호 보장
소켓 통신에서 일반 텍스트를 이용
SSL이나 TLS 프로토콜을 통해 세션 데이터 암호화
→ 전자 상거래에서 널리 쓰임
💡 SSL(Secure Sockets Layer), 보안 소켓 계층
▪ 웹사이트와 브라우저(혹은 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결 보안을 유지하는 표준 기술
▪ 해킹 방지
💡 TLS(Transport Layer Security), 전송 계층 보안
▪ 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약
▪ 전송 계층 종단간 보안 및 데이터 무결성 확보
- 종단간 전송
송신 컴퓨터의 응용프로그램(프로세스)에서 수신 컴퓨터의
응용프로그램으로의 전달
보호 수준 결정 요소
기본 TCP/IP 포트 : 443
웹페이지 URL : https://
공개키 | 개인키 | |
---|---|---|
설명 | 모두에게 공개 가능한 키 | 나만 가지고 알고 있어야 하는 키 |
암호화 | 개인키로만 복호화 → 본인만 조회 가능 | 공개키로만 복호화 → 신뢰성 보장 |
HTTP | HTTPS | 비고 | |
---|---|---|---|
암호화/복호화 | X | O | |
속도 | 빠름 | 느림 | 오늘날에는 거의 차이 x |
추가 비용 | X | O | 인증서 발급 및 유지 관련 |
적용 | 단순 정보 조회 | 민감한 데이터 전송 ex) 개인 정보 |
📖 참고