스파르타 특강 - 11.25 HTTP, HTTPS 강의

병아리의최후·2022년 11월 25일
0

스파르타 특강

목록 보기
4/7

먼저 알아야 할 것들

  • IP주소 (Internet Protocol Address)

IP(Internet Protocol) 주소란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다.

즉, 인터넷에 연결된 모든 컴퓨터는 IP(주소)를 갖는다.

  • 도메인 네임 시스템(DNS, Domain Name System)

도메인 네임은 IP 주소를 사람들이 이해하기 쉽게 문자료 표현한 것을 의미한다.

하지만, 컴퓨터는 IP주소로 서로의 위치를 확인하고 통신하고, 도메인 네임은 식별할 수 없기 때문에, IP 주소에 도메인 네임을 할당하고 이를 관리하는 시스템을 DNS라고 한다.

  • 포트(port)

직역하면 '항구'라는 뜻으로, 컴퓨터 관련 분야에서의 의미로는 운영 체제 통신에서의 종단점을 뜻한다.

IP Address를 통해 목적지 호스트까지 도달한 후에는 어떤 프로세스(Process)에서 데이터를 받을 것인지 를 알아야 하는데 이 때 쓰이는 것이 포트번호(Port Number)다.

  • 회선통신과 패킷통신

  1. 회선통신

먼 옛날 사용하던 회선 교환(Circuit Switching) 방식

회선의 트래픽이나 이동 효율을 전혀 고려하지 않은 채 미리 정하는 방식

  1. 패킷 교환(Packet Switching) 방식

미리 이동 경로를 정하지 않고, 데이터를 패킷 (Packet) 이라는 작은 단위로 나누어 전송하는 방식

회선 통신과는 다르게, 각 패킷은 전송 당시 가장 효율적인 경로를 설정하여 최종 목적지까지 이동하게 된다.

  • TCP/IP

  1. IP란?

패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜
패킷 전달 여부를 보장하지 않고, 순서 역시 보장하지 않는다.

  1. TCP란?

패킷을 안전하게 전달해주는 전송 프로토콜
IP위에서 동작하고 데이터의 전달을 보장하고 순서도 보장한다.

  1. 흐름제어

송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법

  1. 혼잡제어

송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법

  1. TCP handshake
  • 3-way handshake
    • 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정
  • 4-way handshake
    • 두 종단 간 데이터 전송을 끝낸 후 연결 설정을 해제하는 과정
  1. TCP / IP
  • IP + TCP = 인터넷 프로토콜 + 전송 제어 프로토콜

  • TCP를 기반으로 한(신뢰성 통신을 하는) HTTP,FTP,SMTP 등 수 많은 프로토콜들이 IP 위에서 동작하기에 묶어서 TCP/IP라고 한다.

  • 결국에는 효율적으로 빠르게(IP) 보내면서 안전하게(TCP) 전달해주려는 목적

HTTP(HyperText Transfer Protocol)란?

  • 정의

클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜(규약, 약속)

  • 특징

  1. 단방향성 : 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있다.

  2. 비연결성(connectionless) : 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료. 따라서 실시간 통신을 할 수 없다.

  • 문제점

  1. HTTP는 평문 통신이기 때문에 도청이 가능하다.

  2. 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능하다.

  3. 완전성을 증명할 수 없기 때문에 변조가 가능하다.

이러한 문제점 해결을 위해 HTTPS 등장 !

HTTP 메소드(Method)와 상태코드(Status code)

  • HTTP 메소드

HTTP 메소드는 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단
이다.

  • 주요메소드 5가지
  1. GET : 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달

  2. POST : 주로 리소스를 새롭게 생성할 때 사용하며, 서버에 전달하고 싶은 데이터는 메시지 바디를 통해 전달

  3. PUT : 리소스가 있으면 대체하고 리소스가 없으면 생성

  4. PATCH : PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 때 사용

  5. DELETE : 리소스를 제거할때 사용

  • 메소드 속성

  1. 안전(Safe Methods)

    계속 호출해도 리소스를 변경하지 않는 특성

  2. 멱등(Idempotent Methods)

    동일한 요청을 여러 번 보내도 한 번 보내는 것과 똑같은 결과를 갖는 것
    Get, PUT, DELETE는 멱등하다고 볼 수 있지만, POST나 PATCH는 멱등하다고 볼 수 없다.

  3. 캐시가능(Cacheable Methods)

    응답 결과를 서버에 캐시 해서 사용해도 되는 메소드
    GET, HEAD, POST, PATCH가 캐시가 가능하지만 구현이 어려워 실제로는 GET과 HEAD만 주로 캐싱이 쓰인다고 한다.

  • HTTP 상태코드

클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주기 위한 정보

  1. 1xx (Informational): 요청이 수신되어 처리중

  2. 2xx (Successful): 요청 정상 처리

  3. 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 (보통 리다이렉션처리)

  4. 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음

  5. 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

HTTP 통신흐름

브라우저에 www.naver.com을 친다면??

  1. 웹 브라우저에 www.naver.com 입력.

  2. 도메인 네임 부분을 DNS 서버에 검색하고, DNS서버에서 해당 도메인 네임에 해당하는 IP주소를 찾아옴

  3. HTTP 프로토콜을 사용하여 페이지 URL정보와 찾아온 IP주소를 포함하는 HTTP 요청 메세지를 생성하고, 생성된 HTTP 요청 메세지는 TCP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 컴퓨터로 전송된다.

  4. HTTP 요청 메세지를 받은 컴퓨터(서버)는 웹 페이지 URL 정보 중 PATH와 HTTP Method에 맞는 액션을 취한다. (여기서는 naver 페이지를 띄우기 위해 필요한 html 등의 리소스를 찾을 것이다.)

  5. 생성된 응답 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메세지로 만들어지고 TCP 프로토콜을 사용하여 인터넷 망을 통해 요청했던 컴퓨터(클라이언트)로 전송된다.

  6. 도착한 HTTP 응답 메세지는 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력되어 사용자가 볼 수 있게 된다.

HTTPS 란?

HTTP(HyperText Transfer Protocol)의 보안(Secured)버전
SSL/TLS 프로토콜을 사용해 HTTP를 암호화하여 주고 받을 때 쓰는 통신 프로토콜

잠깐! 대칭키, 비대칭키 암호화 방식이란?

0개의 댓글

관련 채용 정보