HTTP, HTTPS란 무엇일까??

적자생존·2022년 7월 11일
0

Study

목록 보기
1/10

1. HTTP

가. HTTP란?

Hyper Text Transfer Protocol의 줄인 말로 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜
즉 인터넷에서 데이터를 주고 받을 수 있는 프로토콜

나. HTTP의 특징

1) 클라이언트 서버 구조

Request, Response 구조를 가지며 클라이언트가 Request(요청)을 보내면 서버가 이에 해당하는 결과에 대한 Response(응답)을 한다.

2) 무상태 프로토콜

각각의 요청이 독립적으로 여겨진다는 특징으로 서버는 클라이언트의 상태를 유지하지 않는다.
이를 위해서 쿠키나 세션, 토큰방식의 OAuth, JWT가 사용된다.

어떤 서버에서 요청이 와도 동일하게 처리가 가능하다

서버 1이든 서버 100 이든 클라이언트는 이전에 자신이 요청한 정보를 저장해놓고 해당 메세지를 함께 보내는 것이다.

그렇기 때문에 서버 100은 클라이언트가 이전에 어떤 요청을 하였는지 다른 서버를 조회할 필요없이 보낸 요청에 대한 응답만 하면 된다.

이렇기 때문에 서버의 개수에 비례해서 성능을 올릴 수 있고 하나의 서버에서 장애가 발생하면 다른 서버로 대체 가능하다.

3) 비 연결성

HTTP의 기본은 연결을 유지하지 않는다.

클라이언트가 서버에게 리소를 요청(Request)을 하고 응답(Response)를 받으면 연결을 끊어버린다.

이 경우 서버의 부담을 줄일 수 있지만 요청할 때마다 연결을 해야하는 오버헤드 비용이 발생한다.

이를 위해 헤더의 Connection: keep-alive 속성으로 지속적인 연결 상태를 유지할 수 있다. HTTP1.1 부턴 지속적 연결 상태가 기본이다.

다. HTTP의 Method

1) GET 서버에게 조회할 리소스를 요청(READ,조회)

2) POST 서버에게 본문(body)에 생성할 데이터를 삽입하여 전송(CREATE, 생성)

3) PUT 서버에게 본문에 수정할 데이터를 삽입하여 전송(UPDATE, 수정)

4) DELETE 서버에게 삭제할 리소를 요청(DELETE, 삭제)

5) PATCH 리소를 일부만 변경

6) HEAD GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환

7) OPTIONS 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에서 사용)

8) CONNECT 대상 자원으로 식별되는 서버에 대한 터널을 설정

9) TRACE 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

라. HTTP Method의 속성

1) 안전성

계속해서 메소드를 호출해도 리소스를 변경하지 않는다는 뜻으로 GET 메소드가 안전하다고 볼 수 있음

2) 멱등성

계속해서 메소드를 호출해도 결과가 똑같다는 뜻으로 GET, PUT, DELETE는 멱등하다고 볼 수 있고 POST, PATHCH는 멱등하다고 볼 수 없다.

3) 캐시가능성

캐싱을 해서 데이터를 효율적으로 가져올 수 있다는 뜻으로 GET, HEAD, POST, PATCH가 캐시가 가능하지만 실제로는 GET, HEAD만 주로 캐싱이 쓰인다고 한다.

마. 응답 상태코드

1) 1xx

요청이 수신되어 처리중

2) 2xx

요청 정상 처리

3) 3xx

요청을 완료하려면 추가 행동이 필요

4) 4xx

클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음

5) 5xx

서버오류, 서버가 요청을 처리하지 못함

2. HTTPS

가. HTTPS란?

HTTP의 보안이 강화된 버전으로 HTTP에 SSL이라는 기술을 더해서 데이터를 암호화 하는 기술

나. 암호화 기본 개념

암호화는 기본적으로 어떤 정보를 아무나 읽지 못하도록 키를 가지고 특정 알고리즘을 돌려 정보를 숨기는 것

1) 공개키와 비밀키

공개키는 모두가 볼 수 있는 키이며 비밀키는 소유자만이 가지고 있는 키로 암/복호화에 사용됨

2) 대칭키 암호화

서버와 클라이언트가 암호화/복호화에 동일한 비밀키를 사용하는 방식으로 키를 공유하는데 어려움은 있으나 속도가 빨라짐

3) 비대칭키 암호화

서버와 클라이언트가 암/복호화에 각각 다른 비밀키를 사용하는 방식으로 공개키를 통해서 암호화 하고 비밀키를 통해서 복호화 함

4) 인증기관(Certificate Authority, CA)

클라이언트가 접속을 요청한 서버가 의도한 서버가 맞는지 인증해주는 역할을 하는 보증된 기업들로 클라이언트가 서버에 요청을 해서 인증기관이 발급한 인증서를 받은 뒤 인증기관의 공개키로 복호화하여 신뢰할 만한 인증서인지 검증하며 인증기관의 공개키로 복호화 되는 자료는 오직 인증기관의 비밀키로 암호화한 경우밖에 없기 때문에 복호화 되면 신뢰할 만한 것이다.

다. 동작방식

HTTPS는 대칭키 암호화를 사용함

1) 클라이언트가 서버에게 접속요청을 하면 서버는 CA에서 발급받은 인증서를 보낸다. 인증서에는 CA의 비밀키로 암호화된 사이트정보와 공개키가 들어있다.

2) 클라이언트는 인증서를 받아 CA의 공개키로 복호화하여 접속요청한 서버가 신뢰할만한지 검증한다.

3) 복호화가 되면 인증서가 신뢰할 만하기 때문에 데이터를 주고받을 대칭키를 생성한다.

4) 대칭키를 서버의 공개키로 암호화하여 서버에게 전송한다.

5) 서버는 자신의 비밀키로 클라이언트가 보낸 대칭키를 복호화한 뒤 그 대칭키를 통해 데이터를 주고받는다.

참고자료

https://kotlinworld.com/97

https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-http-http%EB%9E%80-%ED%8A%B9%EC%A7%95-%EB%AC%B4%EC%83%81%ED%83%9C-%EB%B9%84%EC%97%B0%EA%B2%B0%EC%84%B1/

https://kyun2da.dev/CS/http-%EB%A9%94%EC%86%8C%EB%93%9C%EC%99%80-%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C/

profile
적는 자만이 생존한다.

0개의 댓글