본문 바로가기
프로그래밍 지식/기본지식

웹 브라우저 및 HTTP

by Ing_til_death 2021. 10. 19.

  브라우저

 

- 브라우저: 프론트언어들을 내장하여 정보를 보여주는 도구, 프로그램.  

- 콘솔환경: 설치해야하느 환경 vs 웹환경: 설치를 하지않아도 되는 환경.(서버에서 api 가져온다)

- 스토리지: localStorage(파일로 저장), cookie(파일로 저장), 세션스토리지(메모리에)

// 어떤 형태로 저장되는지가 어디에 저장되는지의 차이다. 세션은 메모리에 저장되기에 끄면 날라간다. 

 

HTTP -> 브라우저 <- html, css , jS (브라우저가 중간매개체)

// 브라우저만 있으면 프론트를 해석할 수 있기에 웹이 각광.

 

- HTTP 배워야하는 구성

더보기

 

- HTTP 특성

 

- request / response 구조

 

- HTTP Server 직접 만들어보기

Simple HTTP Server 만들기

 

Thread 적용하기

 

HttpRequest, HttpResponse 객체 만들기

 

HttpSession 객체 만들기

 

- HTTPS?

 

암복호화

 

Hash 알고리즘

 

TSL

 

 

 

● HTTP 프로토콜(Text 기반)

 

- 통신 규격. 브라우저에서 요청해서 HTML 문서 덩어리가 호출(url), 그리고 이 때 통신 규격에 맞게 보내주고.... 그리고 엔진이 해석해서 클라이언트에게 보여주는 것이다. 

 

==> 스프링도 request, get을 잘 이해하는 것이 중요하다. 

 

- 우편처럼 어디서 오고 어디로 보내는 게 정해져있다.

 

이전에는 콘솔 중심이었지만 프로그램설치가 필요없는 웹이 발전. 웹은 http 통신을 활용하기 떄문에 항상 같은 모습으로 보인다.  http:// => http에 필요한 규격으로 통신하고 있다는 의미. HTTP를 통하여 서버로부터 웹페이지나 그림 정보를 요청하면 응답하여 필요 정보를 사용자에게 전달 출력.

 

HTTP

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜(규약)이다. 모든 프로그램은 이 규약에 맞춰 개발에서 서로 정보를 교환할 수 있게 되었다.

규약은 편지 우편과 같다. 보내는 사람-받는 사람 (클라이언트-서버)

HTTP는 비연결성을 갖는다. 이는 1request2request 끼리 관계가 없다는 뜻이다.

- 왠만하면 Method CRUD를 지키면서 만들어야한다.

 

HTTP 특징

HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.

TCP/IP를 이용하는 응용 프로토콜이다.

(컴퓨터와 컴퓨터 간에 데이터를 전송할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)

HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.

(이러한 단점을 해결하기위해 CookieSession이 등장하였다.)

HTTP는 연결을 표시하지않는 프로토콜이기 때문에 요청/응답 형식으로 동작한다.

 

Client => Request Server=> Response

 

예시

규격과 어떻게 보내는지를 배운 것이다.

Host 부터가 header

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

https://namu.wiki/w/HTTP

 

홈페이지- 쿠키에 가면 Name(key), Value 가 있다. 그래서 새로고침을 해도 유지가된다. 근데 하면 사라진다. setcookie라는 것으로 설정. 처음에는 없으니 세션 객체를 형성해서 만든다. 세션 키에 해당하는 값으로 객체 이름을 만들어서. 그리고 이를 브라우저에 보내서 저장.

 

 

----------- HTTP 서버를 구축하였다. 다만, 싱글쓰레드에서만 돌아간다. 하나의 요청을 처리하는데 시간이 걸리기에 다음 요청을 처리하기가 느리다.

 

Accept: 내가 받을 것이 무엇인지

 

# 개발자도구- network에서 확인 가능

 

# 세션과 쿠키는 개발자도구-application에 있다.

 

## HTTPS

 

HTTPS의 목적

HTTP 데이터의 암호화

웹사이트가 신뢰할 수 있는 사이트인지 판별

 

 

암호화에는 두가지 방식이 있다.

공개키방식(비대칭키): 두 개의 키가 있다. 이 키들은 세트이고, A(비공개키)로 암호화하면 반대편 B(공개키)로 복호화해야한다. ==> 서버에 있는 비공개키만 공개되지않으면 공개키는 공개되도 상관없다.

대칭키방식: 동일한 키로 암호화, 복호화 가능. 공개키보다 빠르게 통신가능. 매번 랜덤으로 키 생성하기 때문에 안전하다.

 

=> HTTPS가 두 가지 목적을 달성하기 위한 방식은 SSL(=TLS) 방식이다. HTTP 데이터와 SSL을 통해 HTTPS 구현

 

## 실제 HTTP 데이터가 어떻게 암호화가 되는지 과정

SS 핸드세이크 과정을 거치면 대칭키가 교환이 된다. , 클라이언트와 서버가 각각 키를 갖는다.

처음에 http 접속하면 클라이언트가 사용할 수 있는 대칭키의 알고리즘 방법을 알려준다.

그러면 서버가 받아서 이 알고리즘으로 하자 하고 응답을 주면서 인증서(TLS)를 같이 첨부한다.

인증서를 보내는데, 이 인증서를 공개키와 보내고 인증기관(CA)이 있다.

이를 클라이언트가 받고,

.................... 뒤부분은 너무 어려워서 그냥 생략했다....

 

 

 

 

'프로그래밍 지식 > 기본지식' 카테고리의 다른 글

소프트웨어  (0) 2021.10.19
컴퓨터 사이언스의 기본기  (0) 2021.10.19
프로그래밍 언어  (0) 2021.10.19
객체지향언어  (0) 2021.10.19
기본  (0) 2021.06.15

댓글