HTTP & HTTPS

이진화행·2022년 3월 2일
0

Parkjin

목록 보기
12/14

1. HTTP

HTTP란?

HTTP(Hyper Text Transfer Protocol)이란 서버/클라이언트 모델을 따라 데이터를 주고 받기위한 프로토콜이다. HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고있다. 따라서 HTTP서버가 80번 포트에서 요청을 기다리고있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.

HTTP구조

HTTP는 애플리케이션 레벨의 프로토콜 TCP/IP 위에서 작동한다. HTTP는 상태를 가지고 있지 않는 Stateless프로토콜이며 Method, Path, Version, Headers, Body등으로 구성된다.

HTTP는 암호화가 되지않은 평문 데이터를 전송하는 프로콜이기 떄문에, HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 3자가 조회할수있다. 이러한 문제를 해결하기위해 HTTPS가 등장했다.

2. HTTP

HTTPS란?

HTTPS(HyperText Transfer Protocol over Secure Socket Layer)는 HTTP에 데이터 암호화가 추가된 프로토콜이다. 443번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼수없도록 암호화한다.

대칭키 암호화와 비대칭키 암호화?

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방싱을 모두사용하고있다.

  • 대칭키 암호화
    클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
    키가 노출되면 위험하지만 연산속도가 빠르다
  • 비대칭키 암호화
    비대칭키 암호화는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화한다. 공개키와 개인키는 서로를 위한 1쌍의 키이다. 공개키 :모두에게 공개가능한키 / 개인키 : 나만 가지고 알고있어야하는키
    1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
    키가 노출되어도 비교적으로 안전하지만 연산속도가 느림

암호화를 공개키로 하느냐 개인키로 하느냐에 따라 얻는 효과가 다른데, 공개키와 개인키로 암호화하면 다른 효과를 얻을수있다.

  • 공개키 암호화 : 공개키로 암호화를 하면 개인키로만 복호화할수있다. (개인키는 나만가지고있으므로 나만볼수있다.)
  • 개인키 암호화 : 개인키로 암호화하면 공개키로만 복호화 할수있다. (공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.)

HTTPS과정

  • 클라이언트(브라우저)가 서버로 최초 연결시도를 한다
  • 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨준다
  • 브라우저는 인증서의 유효성을 검사하고 세션키를 발급한다
  • 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송한다
  • 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
  • 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함
    프로토콜?
    컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신하지 않으면 안된다. 어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하고, 어떤 언어로 이야기하며 어떻게 이야기를 종료할까와 같은 규칙을 정할 필요가 있다. 위와 같이 서로다른 하드웨어와 운영체제 등이 서로 통신하기위해 모든 요소에 규칙이 필요하다. 이러한 규칙을 프로콜이라한다.

TCP/IP?
TCP/IP(Transmission Control Protocol/Internet Protocol)는 데이터가 의도된 목적지에 닿을 수 있도록 보장해주는 통신규약이다. 인터넷으로 디바이스르 연결하는 네트워크 프로토콜의 집합이며 개별적인 네트워크 프로토콜로 사용될수 있다. TCP/IP는 인터넷 기본 통신언어이다. 기본적으로 TCP/IP를 사용하면 한 컴퓨터가 데이터 패킷을 컴파일하고 올바른 위치로 전송하여 인터넷을 통해 다른 컴퓨터와 통신할수있다.
TCP(Transmission Control Protocol)
최상위 계층인 TCP는 많은 양의 데이터를 가져와서 패킷으로 컴파일 한다음 동료 TCP계층에서 수신하도록 전송하여 패킷을 유용한 정보 / 데이터로 바꾸는 역할을 한다. TCP는 전달받은 패킷을 재조립하고, 패킷에 손상이 있거나 손실된 패킷이 있다면 재전송을 요청하는 패킷을 전송하여 재전송을 받는다. *패킷 : 데이터를 일정한 크키로 자른 단위로 인터넷에서 정보를 전달하는 단위

  • 전송제어 프로토콜, 네트워크의 정보전달을 통제하는 프로토콜
  • 데이터의 전달을 보증하고 보낸 순서대로 받게해준다
  • 3 Way Handshaking와 4 Way Handshaking등을 활용한 신뢰성있는 전송가능
    IP(Internet Protocol)
    인터넷에서 컴퓨터의 위치를 찾아서 데이터를 전송하기위해 지켜야 할 규약이다. 모든 컴퓨터에게 인터넷을 하기위해 특별한 주소를 부여하는데 이 주소를 IP주소라한다. IP는 4개의 숫자로 구성되며 숫자의 크기에 따라 IPv4(32비트, 각 수자는 1바이트), IPv6(128비트, 각숫자는 4바이트)로 나뉜다. 일반적으로는 IPv4는 10진수로 표현하며 각자리는 . 으로 구분하고 IPv6는 각자리를 4자리 16진수로 표현하며 각자리는 :로 구분한다. 맨아래 계층인 IP는 올바른 목적지를 찾는 패킷 GPS역할을한다.
  • 패킷 교환 네트워크에서 정보를 주고받는데 사용하는 정보 위주의 규약
  • 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당

OSI(Open Systems Interconnection)7 Layer?
ISO(국제표준기구)에서 만든 네트워크를 7계층으로 만든 모델이고, 프로토콜(통신규약)을 통하여 계층의 존재하는 네트워크 통신을 한다.
TCP/IP가 많이 사용되면서 흔히 사용되던 OSI 7계층을 더욱 추상화 한 TCP/IP 4계층이 등장했다.

출처:https://mangkyu.tistory.com/98
출처:https://coding-factory.tistory.com/613
출처:https://needjarvis.tistory.com/158

profile
기술블로그

0개의 댓글