Ch.Covelope

Http / Https 란? (http 와 https 차이) 본문

Networks

Http / Https 란? (http 와 https 차이)

Chrysans 2023. 4. 24. 14:46
728x90
반응형

 

http 이미지

 


 

1. http

HTTP란 Hypertext Transfer Protocol의 약자이다.

HTTP 는 HTML 문서와 같은 리소스를 가져올 수 있도록 해주는 프로토콜인데

HTTP 는 웹에서 이루어지는 모든 데이터 교환의 기초이며 클라이언트-서버 프로토콜이기도 하다

무상태성(STATUSLESS)을 가지며 이는 단방향 통신을 의미한다.

Method, Path, Version, Headers, Body 등을 가지고 있다.

 

요청이 있을 때만 서버가 응답 하여 해당 정보를 전송하고 연결을 종료한다.(단방향)

 

 

HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜로 보안에 취약하다.

(비번등을 주고 받으면 제 3자가 정보를 조회가능) - 80 번 포트 사용

 

 


2.https

HTTPS(Hyper Text Transfer Protocol Secure) 약자

HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다.

(HTTP를 SSL(Secure Sockets Layer)/TLS 프로토콜 위에서 돌아가도록 하여 클라이언트와 서버가 주고받는 데이터를 암호화한다.)

 

TLS 는 SSL의 보안 취약점들을 보안하여 계속 해서 릴리즈 되었고 SSL은 3.0 이후 공식적으로 사용종료가 되었어는데 이는 넷스케이프가 더이상 업데이트에 참여하지 않게 되어 소유권 변경을 위해서 TLS 로 변경 된거로 보면 될거 같다. 사실 SSL 과 TLS 는 같은 기능을 하는 프로토콜로 보면 된다.

 

HTTPS는 HTTP와 다르게 443번 포트를 사용하며,

네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.

 

SSL 인증서는 클라이언트와 서버 간의 통신을 제 3자가 보증해 주는 전자화된 문서이다.

 

 


 

 

HTTPS 에서는 SSL/TLS 핸드셰이크 단계가 존재하는데

핸드셰이크는 클라이언트와 서버 간의 메세지 교환이며 HTTPS 웹에 처음 커넥션 할때 진행한다.

 

 

  • 클라이언트 → 서버 메세지 전송 이때 핸드셰이크가 시작된다.
    • 이 메세지에는 TLS버전, 암호화 알고리즘, 무작위 바이트 문자열이 포함된다

 

  • 서버 → 클라이언트 메세지 전송
    • 클라이언트의 메세지의 응답으로 서버의 SSL인증서를 보낸다.
      • 인증서를 보내기 전에 사용자는 송수신을 위한 암호화 Cipher suite 중에서 어떤 것을 사용할 것인지 정하고 자신의 ssl프로토콜 버전을 알린다. 이후 인증서 전송

 

  • 클라이언트는 브라우저에 내장된 CA 의 공개키를 사용하여 인증서는 복호화하여 유효한 인증서 인지 검증하고 서버의 공개키를 가져온다

 

  • 클라이언트는 전달할 데이터를 암호화할 대칭키를 만들고 , 그 대칭키를 서버 공개키로 암호화하여 서버에 전달한다.

 

  • 서버는 자신의 개인키로 사용자 대칭키를 복호하 하여 사용자 대칭키를 얻는다.

 

  • 이후 ssl 핸드셰이크 과정으로 얻은 대칭키를 이용하여 안전하게 통신할 수 있다.

 

 


 

헤더와 바디

HTTP 통신에는 header 와 body 가 필요하다

브라우저에서 사용자가 요청하면 서버에서 응답을 해주는데 서버에서 사용자에게 응답을 해줄 때 통신선을 타고 요청한 데이터가 보내지는데 이때 직렬화를 해서 보낸다 사용자는 헤더에 담긴 데이터 타입을 통해서 해당 파일을 역정렬화 하여 요청한 데이터를 받을 수 있다.

사용자 - 서버 가 반대로 된 상황에서도 요청 응답을 할 때 헤더에는 해당 데이터의 정보를 바디에는 데이터를 담아서 통신한다.

 

URI(Uniform Resource Identifier)

인터넷 자원을 나타내는 고유 식별자로 id 같은 역할이며 유일해야 한다.

 

URL (Uniformed Resource Locator)

프로토콜을 포함하는 해당 자원의 위치를 말하며 일반적으로 도메인을 의미한다

 


 

pathParameter

 

 

특정한 하나의 데이터 또는 정제되지 않은 데이터가 필요한 경우에 사용될 수 있다.

 


queryParameter

 

 

  • url에서 특정한 조건을 주고 싶을 때 사용하는 매개변수 유형
  • 같은 API를 호출한다고 해도, 서로 다른 조건으로 나열하는 것이 필요한 상황에 사용
  • 쿼리 파라미터는 HTTP의 [GET], [DELETE] 요청에서만 사용하고, 유일 값을 식별하기 위한 용도가 아닌 옵션을 줄 때 사용

예)  • [GET] /products?price=3000 (3000원짜리 product)

       • [GET] /products?offset=0&limit=100 (페이지당 그려질 item 수 제한)

 

조건에 맞게 데이터를 정제하여 불러올 때 사용할 수 있다.

 


bodyParameter

 

  • XML. JSON, Multi Form 등의 데이터를 담는데 위에 queryParam, pathParam 등과 같이 주소에서 확인할 수 없다.
  • POST ,PUT, 요청 시 등록 또는 수정이 필요한 데이터를 서버에서 정의한 데이터 형식으로 바디에 담아서 보낸다.

 

XML 은 HTML과 비슷한 문자 기반의 마크업 언어지만 html처럼 데이터를 보여주기 위한 목적이 아닌 데이터를 저장하고 전달한 목적으로 만들어졌다.

 

 


 

 http Method

 

http method 이미지

 

 

GET

서버에게 Resource를 보내도록 요청하는 데 사용 (서버의 Resource를 읽음)

  • 요청 body - optional
  • 응답 body - yes

 

PUT

서버에 문서를 쓸 때 사용 (GET과 반대)

  • PUT 메소드는 서버가 Client 요청의 Body를 확인한다.
  • 요청된 URL에 정의된 새로운 Resource를 생성하기 위함
  • 요청된 URL이 존재할 경우 대체하여 사용
  • 요청한 데이터가 없으면 새로 쓰고 있으면 요청된 데이터로 수정한다.

 

POST

Server에 Input Data를 보내기 위함

  • PUT vs. POST

— PUT은 서버의 Resource에 Data를 저장하기 위한 용도

PUT 은 멱등성(순수 함수같은)을 가지며 요청된 데이터는 서버의 상태에 동일한 데이터로 저장된다.

— POST는 서버에 Data를 보내기 위한 용도

 

DELETE

  • 요청 Resource를 삭제하도록 요청

Create - POST

Read - GET

Update - POST,PUT

Delete - DELETE

 

참고 

Http method 라는 명칭 때문에 함수처럼 특정 method를 요청하면 바로 서버에서 실행하여 처리하는 거 같지만 사실 메소드 느낌보다는 말 그대로 요청이며 실제 처리는 서버에서 요청된 조건으로 처리한다. 그래서 요청을 하면 서버에서 거절할 수도 요청 조건에 맞게 처리할 수도 있다.

 


 

 

https://covelope.tistory.com/

 

Ch.Covelope

Chrys_Code_Develope.

covelope.tistory.com

 

 

 


 

728x90
반응형

'Networks' 카테고리의 다른 글

OSI 7 계층(osi 7 layer)  (0) 2023.05.11
Comments