브라우저에 URL을 치면 발생하는 일

① 브라우저가 DNS 서버에서 도메인 명으로 IP 주소를 가져옴

② 이후, 브라우저는 HTTP Request 요청 메세지를 작성하고,
     OS의 프로토콜 스택에 메세지 전송을 의뢰함

③ 프로토콜 스택이 LAN에 제어 정보를 담은 패킷을 LAN 어댑터에 넘김

④ LAN 어댑터는 제어 정보가 담긴 패킷을 전기신호로 변환시켜, LAN 케이블로 송출

⑤ 송신한 패킷은 허브, 스위치, 라우터를 경유해서 Provider에게 전달됨

⑥ 패킷은 수많은 Access 회선을 통해서 POP를 거쳐서 인터넷 핵심부에 들어감

⑦ 이후, 많은 고속 라우터들 사이로 패킷이 상대방 서버까지 도달

⑧ 서버 측의 LAN에 패킷이 도착하면, 방화벽이 패킷을 검사

⑨ 패킷에 이상이 없을 경우, 캐시 서버가 먼저 응답 데이터가 있는지 확인

⑩ 캐시 서버에 응답 데이터가 없을 경우, 웹 서버에 전송

⑪ 패킷이 웹 서버에 도착하면, 프로토콜 스택이 패킷을 추출해서 WAS에 전달

⑫ 추출된 패킷을 받은 WAS는 Response 응답 메세지를 작성하여, 클라이언트에 전송.
     응답 메세지의 전송은 본 과정 방법을 다시 수행하여 클라이언트에 전달됨.




쿠키와 세션

  • HTTP는 상태와 연결에 대한 정보를 저장하지 않으므로, 이를 도와주는 것이 쿠키와 세션

1) 쿠키

  • 사용자 정보가 담긴 텍스트 파일
  • 브라우저에 저장
  • 통신할 때 HTTP 헤더에 포함되어 전송
  • HTTP 통신 과정에서, 쿠키 정보가 노출될 수 있어서 보안이 떨어짐

2) 세션

  • 사용자 정보를 서버에 저장
  • 브라우저 종료될 때까지, 정보가 유지
  • 서버에 저장되므로, 보안이 강화됨

Question) "쿠키와 세션에 대해 설명해주세요."

HTTP의 경우, 상태와 연결에 대한 정보를 저장하지 않아서,
이것을 도와주는 것이 쿠키와 세션 입니다.

  • 쿠키는 사용자 정보가 저장된 텍스트 파일 입니다.
    브라우저에 저장되면서, 통신할 때 HTTP 헤더에 포함되어 전송 됩니다.
    HTTP 통신 과정에서 쿠키 정보가 노출될 수 있기 때문에, 보안에 취약 하다는 특징이 있습니다.

  • 세션은 사용자 정보를 서버에 저장하는 것 입니다.
    브라우저가 종료될 때까지 정보가 유지 됩니다.
    서버에 저장되기 때문에, 보안이 강화 된다는 특징이 있습니다.




REST API 와  RESTful

1) REST API

  • REST 기반으로 서비스 API 를 구현한 것

  • Representational State Transfer
    : 자원(Resource)의 표현(Representation)으로 상태(State)를 주고 받는 것(Transfer)

    • 자원 = URI

    • 행위 = HTTP Method


2) RESTful

  • REST 원리를 잘 따르는 시스템
    => 자원을 URI로 표현하고, 행위에 적절한 HTTP Method를 사용

Question) "REST API 에 대해 설명해 주세요."

  • REST API는 REST를 기반으로 서비스 API를 구현한 것 입니다.
    REST는 자원의 표현으로 상태를 주고 받는 것을 의미 합니다.
    자원을 URI로 표현하고, 자원에 대한 행위는 HTTP Method로 표현 합니다.

  • RESTful은 REST 원리를 잘 따르는 시스템을 의미 합니다.
    자원을 URI로, 행위에 맞는 적절한 HTTP Method를 사용한 것이 RESTful한 메소드 입니다.
    예시로 들어보면, CRUD 기능을 모두 HTTP의 POST 메소드로 처리한 것을
    RESTful 하지 않다 고 할 수 있습니다.




HTTP 응답 코드

1) 100번대

  • 조건부 응답
  • 요청을 받았고, 처리중을 의미

2) 200번대

  • 요청이 성공적으로 처리 되었음(Successful Response)을 의미

3) 300번대

  • 리다이렉션(Redirection) 의미
  • 클라이언트를 지정된 위치로 이동시킴

4) 400번대

  • 클라이언트의 오류를 의미
  • HTTP 요청이 잘못되거나, 권한이 없는 경우

5) 500번대

  • 서버의 오류를 의미
  • 서버가 요청을 제대로 수행하지 못할 경우

Question) "HTTP 응답 코드에 대해 설명해 주세요."

HTTP 응답 코드의 종류는 크게 5가지가 있습니다.

  • 100번대는 조건부 응답으로, 요청을 받아서 처리중을 의미 합니다.
  • 200번대는 Successful Response로, 요청이 성공적으로 처리 되었음을 의미 합니다.
  • 300번대는 리다이렉션으로, 클라이언트를 지정된 위치로 이동시키는 것을 의미 합니다.
  • 400번대는 클라이언트의 오류로, HTTP 요청이 잘못되거나 권한이 없을 경우 발생 합니다.
  • 500번대는 서버의 오류로, 서버가 요청을 제대로 수행하지 못할 경우 발생 합니다.




HTTPS

  • 암호화 프로토콜을 사용하여, HTTP 통신을 안전하게 하는 프로토콜
  • HTTP → 암호화 → TCP 통신
  • HTTP의 3가지 문제점을 보완하기 위함
    • 암호화를 하여 도청 방지, 변조 방지
    • 인증서를 통해 통신 상대를 확인하여 위장 방지



HTTP의 문제점 3가지

1) 도청

  • HTTP는 암호화를 하지 않아서, 전송 도중 도청이 가능
    ex) 패스워드를 전송 했는데, 중간에 누군가가 패스워드를 알아낼 수 있음

2) 위장

  • 통신 상대를 확인하지 않음
    ex) 계정 정보를 입력하여 네이버에 전송 했는데, 목적지가 네이버인지 확인하지 않고 바로 전송함.
           네이버의 DNS 서버가 해킹 당할 경우, 네이버가 아닌 다른 곳으로 정보가 전송될 수 있음.

3) 변조

  • 응답의 완전성을 보장하지 못함
  • 응답을 중간의 누군가가 수정할 수 있음

Question) "HTTPS 에 대해 설명해 주세요."

HTTPS는 암호화 프로토콜을 사용하여, HTTP 통신을 안전하게 하는 프로토콜 입니다.
HTTP는 3가지 문제점이 존재 합니다.

  • 첫 번째는 평문 통신을 하여, 도청이 가능 합니다.
  • 두 번째는 통신 상대를 확인하지 않아서, 위장이 가능 합니다.
  • 세 번째는 응답의 완전성을 보장할 수 없어서, 변조가 가능 합니다.

    따라서, 이러한 HTTP의 3가지 문제점을 보완하기 위해 HTTPS를 사용 합니다.
    구체적으로는 HTTP에서 통신하는 소켓에 암호화 프로토콜을 사용하여, TCP와 통신하도록 합니다.




profile
Silver Star

0개의 댓글