티스토리 뷰
개요
✔ HTTP(Hyper Text Transfer Protocol) ?
- No Data Encryption Implemented !
- Stateless system
- As an "application layer protocol", HTTP remains focused on presenting the information, but cares less about the way this information travels from one place to another. Unfortumately, this means that HTTP can be intercepted and potentially altered, making both the information and the information receiver vulnerable.
✔ HTTPS(Hypertext Transfer Protocol Secure) ?
- Encrypted Connections ! (more advanced, and much more secure)
- Stateless system
- It is powered by Transport Layer Security(TLS), the standard security technology that establishes an encrypted connection between a web server and a browser.
* stateless system
클라이언트와 서버관계에서 서버가 클라이언트의 상태를 보존하지 않는다. 즉, 클라이언트의 요청에 대해 서버가 응답을 마치면 연결을 끊어버리는 성질을 나타낸다. Connectionless(비연결성)으로 인해 서버는 클라이언트를 식별할 수 없는데, 이를 stateless라고 한다.
* TLS
인터넷 통신을 하는 두 사용자가 서로의 신원정보를 인증하는 절차를 갖는 프로토콜이다. 이 방법을 사용하면 제 3자가 정보를 감청 또는 조작할 수 없다.
1. HTTP (Hyper Text Transfer Protocol)
The Hypertext Transfer Protocol is used to load pages on the Internet using hyperlinks.
HTTP는 Hypertext인 HTML을 전송하기 위한 통신 규약이며 서버/클라이언트 모델을 따라 인터넷 상에서 정보를 주고받기 위한 규칙이다. Application 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 하지만 HTTP는 암호화되지 않은 방법으로 데이터를 전송하여 악의적인 감청과 데이터 변조가 가능할 수 있다. 이를 해결하기 위해 등장한 것이 HTTPS이다.
* 정리
Hyper Text Transfer Protocol
웹 상에서 클라이언트와 서버 간에 요청/응답(request/response)으로 정보를 주고받을 수 있는 프로토콜
HTTP 특징
✔ 주로 HTML 문서를 주고받는데 쓰인다.
✔ TCP와 UDP를 사용하며, 80번 포트를 사용한다.
✔ 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊어진다.
→ 비연결(Connectionless)
✔ 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.
→ 무상태(Stateless)
HTTP의 동작 방식
클라이언트(Client)
서버에게 요청을 보내는 리소스 사용자
ex) 웹 브라우저, 모바일 애플리케이션, IoT 등
서버(Server)
클라이언트에게 요청에 대한 응답을 제공하는 리소스 관리자
클라이언트가 브라우저를 통해서 어떠한 서비스를 URL을 통해 서버에 요청(Request)하면 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태로 동작한다.
HTTP 요청 메서드
GET
특정 리소스를 받기 위한 요청이다. 따라서 리소스의 생성, 수정 및 삭제 등에는 사용하지 않는다.
POST
리소스를 생성하거나 컨트롤러를 실행하는데 사용한다.
PUT
변경 가능한 리소스를 업데이트하는데 사용되며 항상 리소스 식별 정보를 포함해야 한다.
PATCH
변경 가능한 리소스의 부분 업데이트에 사용되며 항상 리소스 식별 정보를 포함 해야한다.
* PUT을 사용해 전체 객체를 업데이트하는 것이 관례여서 PATCH는 거의 사용되지 않는다.
DELETE
특정 리소스를 제거하는데 사용한다. 일반적으로, Request body가 아닌 URL 경로에 제거하려는 리소스의 ID를 전달한다.
HEAD
클라이언트가 본문 없이 리소스에 대한 헤더만 검색하는 경우 사용한다. 일반적으로 클라이언트가 서버에 리소스가 있는지 확인하거나 메타 데이터를 읽으려는 때만 GET 대신 사용한다.
OPTIONS
클라이언트가 서버의 리소스에 대해 수행 가능한 동작을 알아보기 위해 사용한다. 일반적으로 서버는 이 리소스에 대해 사용할 수 있는HTTP 요청 메서드를 포함하는 Allow 헤더를 반환한다. (CORS에 사용한다.)
[ Request ]
curl -X OPTIONS http://example.org -i
[ Response ] -- Allow 헤더 포함
HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Expires: Thu, 20 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
x-ec-custom-error: 1
Content-Length: 0
* CORS(Cross Origin Resource Sharing) ?
클라이언트 애플리케이션과 다른 Origin을 가진 서버 애플리케이션이 서로 통신할 수 있도록 허용하는 프로토콜이다.
출처(Origin)란 URL 구조에서 살펴본 Protocol, Host, Port를 합친 것을 말한다.
CORS에서, OPTIONS 메소드를 통해 프리플라이트 요청 (preflight, 사전 전달), 즉 사전 요청을 보내 서버가 해당 parameters를 포함한 요청을 보내도 되는지에 대한 응답을 줄 수 있게 한다.
HTTP 메세지
요청(Request)
포트 번호가 생략 된 것은 80번 포트(HTTP의 기본 포트)이기 때문이다.
응답(Response)
상태 코드(Status Code)
HTTP의 단점
HTTP는 브라우저와 웹 서버가 통신함에 있어서 주고 받는 데이터가 암호화 되지 않고 날 것 그대로 전송되어진다는 단점이 있다.
만약 해커가 중간 통로를 도청하게 된다면 중요한 정보들을 탈취해 낼 수 있을 것이다. 만약 이러한 데이터가 로그인 기능에서 사용하는 아이디 비밀번호 등의 개인정보라면 치명적일 수 있다. 뿐만 아니라 정상적인 데이터를 중간에서 악의적으로 변조시키는 것도 가능하다.
2. HTTPS(Hypertext Transfer Protocol Secure)
HTTPS는 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 '보안' 요소가 추가되었다는 것이 가장 큰 차이점이다. HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화 된다. HTTPS는 TLS(Transport Layer Security) 프로토콜을 통해 세션 데이터를 암호화한다.
* TLS(Transport Layer Security)
전송 계층의 보안으로 기존의 SSL(Secure Socket Layer)가 표준화 된 용어이다.
* 정리
Hyper Text Transfer Protocol Over Secure Socket Layer
웹 통신 프로토콜인 HTTP의 보안이 강화된 버전의 프로토콜
HTTPS의 기본 TCP/IP 포트로 443번 포트를 사용
'Study > CS' 카테고리의 다른 글
[컴퓨터구조] ARM 프로세서(ARM Processor) (0) | 2022.07.09 |
---|---|
[네트워크] TLS/SSL handshake (0) | 2022.07.03 |
[네트워크] 대칭키 공개키 (0) | 2022.06.26 |
[네트워크] OSI 7계층 (0) | 2022.06.26 |
[운영체제] 경쟁 상태(Race Condition) 란 (0) | 2022.06.19 |
- Total
- Today
- Yesterday
- 리스트
- 스터디
- 자료구조
- 완전탐색
- CS 스터디
- 자료구조와알고리즘 23강
- 리스트2
- 연결리스트활용
- CS
- It
- 이진탐색
- 보험
- 운영체제
- 이차 리스트
- CS.
- 정렬
- 자바
- 프로세스 주소공간
- SW
- 리스트함축
- 프로그래머스강의
- 알고리즘
- 데이터베이스
- 파이썬
- https
- 프로그래머스
- Greedy sort
- 네트워크
- 코드업 기초
- 리스트 복사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |