CS_HTTP / HTTPS

5w31892p·2023년 4월 5일
0

CS_Study

목록 보기
6/9

체크리스트
1. http 설명 가능?
2. http 통신 흐름 설명 가능?
3. https 설명 가능?


IP 주소 (Internet Protocol Address)

  • 인터넷에 연결된 장치의 고유 주소
  • 인터넷에 연결된 모든 pc는 ip를 가짐
  • IPv4(32bit) 보편화 -> 대체할 버전은 IPv6(128bit)

Domain Name System (DNS)

  • 도메인 네임 : ip 주소를 문자로 표현
  • DNS : ip주소에 도메인 네임 할당하고 이를 관리하는 시스템
  • 도메인 : URL

포트

  • 운영체제 통신의 종단점
  • ip주소를 통해 목적지 도달 후 어떤 프로세스에서 데이터 받을지 알아야할 때 쓰이는 것이 포트번호

DNS 서버에서 IP 정보 보내는 방법

회선 통신 / 패킷 통신

회선 통신

  • 회선 교환(Circuit Switching) 방식
  • 회선의 트래픽이나 이동 효율 전혀 고려하지 않은 채 미리 정하는 방식

패킷 통신

  • 패킷 교환 (Packet Switching) 방식
  • 미리 이동 경로 정하지 않고, 데이터를 패킷 이라는 작은 단위로 나눠 전송하는 방식
  • 전송 전 쪼개지고, 수신지 도착했을 때 각 패킷의 고유 번호 순서대로 결합되어 원래 데이터로 완성
  • 전송 당시 가장 효율적인 경로를 설정하여 최종 목적지까지 이동함

TCP/IP

IP

  • 가장 효율적인 방법으로 전송
  • 전달 여부나 순서 보장 안함

TCP

  • 안전하게 전달
  • IP 위에서 동작
  • 전달, 순서 모두 보장
  • 흐름제어 : 송신, 수신측의 데이터 처리 속도 차이 해결
  • 혼잡제어 : 송신 측의 처리 속도 차이 해결

TCP handshake

  • 3-way handshake
    • 정확한 데이터 전송을 보장하기 위해 연결 설정
  • 4-way handshake
    • 데이터 전송 완료 후 연결 설정 해제

TCP/IP의 목적은 효율적으로 빠르게 (ip), 안전하게(tcp) 전달하려는 것


HTTP(HyperText Transfer Protocol)

  • 클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜
  • 단방향성 : 클라이언트 요청이 있어야만 서버 응답 가능
  • 비연결성(connertionless) : 요청에 응답하면 연결 종료
    • 실시간 통신 불가
      • 웹소켓 사용 : TCP 기반 통신 프로토콜
      • 웹소켓 이전에는 폴링, 롱폴링, 스트리밍 등을 사용해 실시간 처럼 보이게 하는 방식을 사용함
  • 평문 통신으로 도청 위험
  • 통신 상대 검증된 상대인지 확인하지 않기 때문에 위장이 가능
  • 완전성 증명 어려워 변조 위험

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

http method

  • 클라이언트가 웹 서버에게 요청의 목적이나 종류를 알리는 수단 (명시)
  • GET, POST, PUT, PATCH, DELETE

http status code

  • 클라이언트가 보낸 요청 처리 상태를 응답에서 알려주기 위한 정보
  • 400번대 클라이언트 오류
  • 500번대 서버 오류

HTTP 통신흐름

  1. URL 주소 중 도메인 네임 부분을 DNS 서버에 검색하고, DNS 서버에서 해당 도메인 네임에 해당하는 IP주소 찾아옴
  2. URL정보와 찾아온 IP주소를 포함하는 HTTP 요청 메세지를 생성하여 TCP 프로토콜을 사용하여 인터넷 망을 통해 해당 IP주소의 컴퓨터로 전송
  3. 요청 메세지를 받은 컴퓨터(서버)는 웹 페이지 URL 정보 중 PATH와 HTTP Method에 맞는 액션을 취함
  4. HTTP 응답 메세지로 만들어지고 TCP 프로토콜을 사용하여 인터넷 망을 통해 요청했던 컴퓨터(클라이언트)로 전송
  5. 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력

HTTPS

대칭키

  • 암호화 및 복호화에 드는 비용 적음
  • 키를 함께 사용하기 때문에 전달이 어려움

비대칭키

  • 한 쌍의 두개의 키로 구성
    • 하나는 공개키, 하나는 개인키
  • 공개키로 암호화 -> 개인키로 복호화
  • 개인키로 암호화 -> 공개키로 복호화
  • 보안성 뛰어남
  • 구현 어려움, 암호화와 복호화 속도 느림
  • 주로 전자서명과 메시지 송신에 사용
    • 통신사 이메일 주민번호 앞자리 등으로 인증하는 것

HTTPS

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

SSL/TLS Handshake

  1. 서비스를 서빙하는 서버가 CA로부터 CA 인증서를 발급받는다. [인증서 기간 만료까지 1회성]
    1. 서비스를 서빙하는 서버는 CA에 자신의 도메인 정보와 서버 측 공개 키를 보낸다.
    2. 인증기관은 받은 두 데이터를 자신의 개인키로 암호화한 CA 인증서를 서버로 보낸다.
  2. 브라우저에서 도메인을 쳐서 요청을 보내 클라이언트(브라우저)와 서버가 TCP 연결을 맺는다.
  3. 버는 브라우저가 보내준 Cipher Suite 중 하나를 고르고, 자신의 SSL/TLS 프로토콜 버전을 브라우저에게 알리면서, 서버 자신의 도메인에 대한 CA 인증서를 보낸다.
  4. 브라우저는 브라우저에 내장된 CA의 공개 키를 이용하여 CA 인증서를 복호화하여 인증서가 유효한지 검증한 후, 서버 측의 공개 키를 얻는다.
  5. 브라우저는 앞으로 서버와 통신하는데 있어 암호화를 위해 사용할 대칭 키를 만들고, 그 대칭 키를 사이트 공개 키로 암호화하여 서버로 보낸다.
  6. 서버는 자신의 개인 키를 사용하여 암호화된 것을 복호화하여 사용자 대칭 키를 얻어 낸다.
  7. 이렇게 얻은 대칭 키를 활용하여 서버와 클라이언트가 서로 데이터를 안전하게 암/복호화 하면서 통신할 수 있게 된다.

  1. http
    클라이언트와 서버 간의 자원을 교환하기 위한 TCP/IP 기반 통신 프로토콜
  2. https
    SSL/TLS 프로토콜을 사용해 HTTP를 암호화하여 주고 받을 때 쓰는 통신 프로토콜
  3. 브라우저에 naver.com 치면 어떤 일이?
    1. 웹 브라우저에 www.naver.com 입력.
    2. 사용자가 입력한 URL 주소 중 도메인 네임 부분을 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 응답 메세지는 웹 브라우저에 의해 브라우저 렌더링 과정을 거쳐 화면에 출력되어 사용자가 볼 수 있게 된다.

0개의 댓글