티스토리 뷰

Study/CS

[네트워크] HTTP & HTTPS

나갱 2022. 7. 2. 20:50

개요

 

✔ 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 작동 방식


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를 합친 것을 말한다.

 

URL의 구조

 

CORS에서, OPTIONS 메소드를 통해 프리플라이트 요청 (preflight, 사전 전달), 즉 사전 요청을 보내 서버가 해당 parameters를 포함한 요청을 보내도 되는지에 대한 응답을 줄 수 있게 한다. 

 


HTTP 메세지

요청(Request)

HTTP Request

포트 번호가 생략 된 것은 80번 포트(HTTP의 기본 포트)이기 때문이다. 

 

응답(Response)

HTTP Response

상태 코드(Status Code)

 

 


HTTP의 단점

HTTP는 브라우저와 웹 서버가 통신함에 있어서 주고 받는 데이터가 암호화 되지 않고 날 것 그대로 전송되어진다는 단점이 있다.

만약 해커가 중간 통로를 도청하게 된다면 중요한 정보들을 탈취해 낼 수 있을 것이다. 만약 이러한 데이터가 로그인 기능에서 사용하는 아이디 비밀번호 등의 개인정보라면 치명적일 수 있다. 뿐만 아니라 정상적인 데이터를 중간에서 악의적으로 변조시키는 것도 가능하다. 

 

 

 

 


2. HTTPS(Hypertext Transfer Protocol Secure)

 

 

 

HTTPS는 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 '보안' 요소가 추가되었다는 것이 가장 큰 차이점이다. HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화 된다. HTTPS는 TLS(Transport Layer Security) 프로토콜을 통해 세션 데이터를 암호화한다.

 

HTTP 와 HTTPS

 

* TLS(Transport Layer Security)

전송 계층의 보안으로 기존의 SSL(Secure Socket Layer)가 표준화 된 용어이다.

 

* 정리

Hyper Text Transfer Protocol Over Secure Socket Layer

웹 통신 프로토콜인 HTTP의 보안이 강화된 버전의 프로토콜

HTTPS의 기본 TCP/IP 포트로 443번 포트를 사용

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함