Web & HTTP

달공·2023년 3월 27일
0

네트워크

목록 보기
1/1

웹의 동작 방식에 대해 이해하기 위해 먼저 기본적인 개념들을 정리했다.

웹에 연결된 컴퓨터는 클라이언트와 서버라고 한다.

웹브라우저 동작 과정에서 사용되는 개념들로, 보다 쉽게 이해하기 위해 예를 들었다.

클라이언트 : 쉽게 말해 요청자. 서버의 서비스를 받아 사용하는 장치, 프로그램이다.

(⚡ 긴 도로 한 쪽 끝에 위치한 집에서 반대 끝에 있는 무인마트로부터 물을 사려는 나)

서버 : 응답자. 네트워크를 통해 클라이너트에게 서비스를 제공하는 시스템이다.

(⚡ 물을 요청하니 물에 대해 종류별로 제공해주는 마트)

TCP / IP : 인터넷이 컴퓨터 네트워크 사이에서 정보를 주고 받는데 이용되는 프로토콜 통신 규약.

(⚡ 주문을 하고, 물을 살 수 있게 해주는 운송 장치)

WAS : 서버에게 동적 컨텐츠 제공을 요청 받고 DB와 연동하여 데이터를 처리한 뒤 생성한 파일을 서버에게 반환해 동적 페이지를 처리한다.

(⚡ 물에 대한 DB 요청 시 WAS에서 서버에 물 목록 반환)

DNS (Domain Name System Servers) : 웹사이트를 위한 주소록과 같다. 사용자가 브라우저에 웹 주소를 입력할 때, 브라우저는 그 웹사이트를 검색하기 전에 DNS를 살펴본다. 해당 웹사이트가 있는 서버가 어떤 것인지 찾기 위함이다.

(⚡ 마트의 위치가 어디 인지 확인하기 위한 과정)

HTTP : 클라이언트와 서버가 서로 통신할 수 있게 하기 위한 언어를 정의하는 어플리케이션 규약.

(⚡ 물을 주문하기 위해 사용하는 언어 )


웹브라우저 동작 과정

우리가 컴퓨터나 핸드폰을 통해 웹 브라우저를 통해 웹페이지에 접속했을 때 어떤식으로 동작하는 지 알아보았다.

  1. 사용자가 웹브라우저를 통해 접속 하고 싶은 웹 페이지의 URL 주소를 입력한다.

  2. 웹 브라우저는 DNS 서버로 가서 웹사이트가 있는 서버의 진짜 주소 (IP주소) 물어본다.

  1. DNS 서버가 IP 주소를 알려주면, 브라우저는 해당 IP 주소에 있는 서버를 찾아간다. ( 랜덤한 숫자를 적은 종이를 가지고 함께!! )

  2. 웹브라우저는 서버와 숫자가 적힌 종이를 주고 받으며 3WAY - HANDSHAKE 과정을 마친다.

  1. 웹브라우저는 URL 주소에 있는 데이터를 요청하고, 서버는 이를 보내준다. (HTTP Request & HTTP Response)
  1. 웹브라우저는 받은 데이터를 사용자가 이해할 수 있도록 해석한 내용을 화면에 출력한다.

URI & URL

URI와 URL을 혼용해서 사용하는 경우가 있다. 두 차이를 정확히 몰랐는데, 이번 기회를 통해 비교할 수 있었다.

결론부터 보면, URI는 URL의 의미를 품고 있다.

URI (Uniform Resource Identifier) : 자원의 위치 뿐만 아니라 자원에 대한 고유 식별자로서 URL 의미를 포함한다.

URL (Uniform Resource Locator) : 자원이 실제로 존재하는 위치를 가리킨다.

즉, URI는 식별하고, URL은 위치를 가리킨다.

예를 들어보자.

1) https://withmoonlab.tistory.com/index

위의 예시에서 withmoonlab.tistory.com에서 index라는 경로를 타나내고 있다.

서버에서 해당 라우팅에 대한 자원을 전송해줄 것이며 이는 자원이 실제로 존재하는 위치이므로 URL이다.

2) https://withmoonlab.tistory.com/162

위의 예시의 경우, withmoonlab.tistory.com 에서 162의 ID 값을 가지고 있는 자원을 식별하고 있다.

따라서, 해당 예시는 URL이자 , URI라고 할 수 있다.

HOST : 해당 위치에는 도메인 네임 혹은 IP 주소가 들어간다. 컴퓨터의 주소를 표시하는 영역이다.

PORT : 컴퓨터에서 실행되고 있는 수많은 프로세스들의 주소이다. 기본적으로 포트번호를 입력하지 않았을 때는, 프로토콜이 가지고 있는 기본 포트번호가 적용된다. ( HTTP : 80, HTTPS : 443)


쿠키와 세션

▶ 쿠키 : 웹사이트에 접속할 때 클라이언트 로컬에 저장되는 Key-Value쌍의 작은 데이터 파일

  • 구성 요소 : 쿠키이름, 쿠키값, 만료시간, 전송할 도메인명, 전송할 경로, 보안연결여부, HttpOnly여부

[쿠키 동작 방식]

  1. 클라이언트가 서버에 TEST 요청을 한다..

  2. 서버는 클라이언트 요청의 유효성을 확인하고 응답 헤더에 set-cookie : ~ 를 추가혀 응답한다.

  3. 클라이언트는 이후 서버에 요청할 때 전달 받은 쿠키를 자동으로 요청 헤더에 추가하여 요청한다.

▶ 세션 : 브라우저가 종료되기 전까지 클라이언트 요청 유지해주는 기술

  • 각 클라이언트에게 고유 ID를 부여한다. (해당 ID로 클라이언트를 구분하여 요구에 맞는 서비스 제공 가능)

  • 세션은 서버에 저장하기 때문에 저장공간이 필요하며, 부하가 발생할 수 있다.

  • 보안이 취약한 쿠키의 한계점 극복을 위해 세션을 사용하며, 쿠키를 기반으로 동작하지만 사용자 정보를 클라이언트 측이 아닌 서버 측에서 관리한다는 점이 다르다.

<세션 동작 방식>

  1. 클라이언트가 서버에 로그인 요청을 한다.

  2. 서버는 클라이언트 로그인 요청에 대한 유효성 확인 후, 고유 ID와 SESSION ID이름으로 저정한다.

  3. 서버가 응답할 때, 응답헤더에 set-cookie : ~ sessionid:~를 추가하여 응답한다.

4.클라이언트는 이후 서버에 요청할 때, 전달 받은 sessionid 값을 자동으로 요청헤더에 추가한다.

  1. 서버에서는 요청헤더의 sessionid 값을 저장된 세션 저장소에서 찾아보고 유효한지 확인 후, 작업을 처리한다.

HTTP vs HTTPS

▶ HTTP (Hypertest Transfer Protocol)

  • 클라이언트와 서버 사이에 이루어지는 request/response를 위한 프로토콜

  • 웹브라우저와 서버간의 웹페이지와 같은 자원을 주고 받을 때 쓰는 통신 규약

  • 일반 텍스트로 이루어진 HTML 문서를 주고 받는데 사용된다.

  • 데이터가 평문으로 전송된다.

▶ HTTPS (HyperText Transfer Protocol over Secure Socket Layer)

  • HTTP의 보안이 강화된 버전

  • 소켓 통신에서 일반 텍스트를 이용하며, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다.

profile
백엔드 개발자가 되는 그날까지 집중!

0개의 댓글