본문 바로가기
public void static main()/Lecture

[HTTP웹기본지식] HTTP_03_1

by 햄리뮤 2021. 1. 12.
반응형

아~~~ 오늘 뭔가 많은 것을 수업해주셨다.

그래도 오늘은 회사 정시 퇴근해서 와서 좀(많이) 쉬고 이제 끄적거리네...

 

모든것이 HTTP

클라이언트 서버 구조

• 무상태 프로토콜(스테이스리스), 비연결성

• HTTP 메시지

• 단순함, 확장 가능

 

오늘의 강의 주제! HTTP!! 오늘은 HTTP에 대해서 공부해보자!! (feat. 파워 블로거분들)

 

클라이언트 서버 구조

• Request Response 구조

• 클라이언트는 서버에 요청을 보내고, 응답을 대기

• 서버가 요청에 대한 결과를 만들어서 응답

 

클라이언트와 서버의 관계 [출처] https://opentutorials.org/course/3084/18890

 

기본적으로 클라이언트와 서버는 웹 브라우저에서 특정 페이지를 요청하면 웹 서버는 해당 페이지를 반환해주는 역할을 한다.

 

클라이언트와 서버간의 사이에는 두 가지정도의 연결 방법이 있는데!

Stateless Stateful 이 있다

Stateful과 Stateless [출처] https://medium.com/@rachna3singhal/stateless-over-stateful-applications-73cbe025f07

Stateless 

클라이언트가 서버에 요청할 때 이전 상태를 소멸시키고 접속한다는 것이고 서버는 사용자의 히스토리를 기억하고 있지 않다는 것이다. 즉 한번의 요청과 응답이 이루어지면 클라이언트와 서버와의 연결선이 끊어지며 클라이언트와 서버가 주고받았던 데이터들은 다음 요청 및 응답에 존재하지 않는 것이다! 이방식은 주로 http에 사용되는 방식이며 이는 서버의 부하를 줄여준다!

 

💯정리!

- 웹서버 통신(http)특성상 사용자(브라우저)의 이전 상태 Client(쿠키) or Server(세션) 정보를 기록하지 않는 접속!

- 브라우저가 데이터를 전송할 때마다 연결하고 바로 끊어버리는 방식! (이름값 함!)

 

- Client와의 세션 정보를 기억할 필요가 없으므로 이러한 정보를 서버에 저장하지 않음!

- 세션 State(상태)에 무응답

- UDP와HTTP 등이 있음

- 단점: 클라이언트가 추가 데이터 전송

 

 

Stateless 해결 방법

 

상태 기억하기 1 - 쿠키

서비스를 운영하려면 서버가 클라이언트를 기억해야 할 경우가 많이 있는데, 클라이언트를 기억할 수 있는 방법은 없을까?

HTTP는 이러한 문제점을 해결하기 위해 브라우저 단에서 쿠키라는 것을 저장하여 서버가 클라이언트를 식별할 수 있도록 함!

( HTTP 헤더 : set-cookie )

 

 

상태 기억하기 2 - 세션

쿠키는 사용자 정보가 브라우저에 저장되기 때문에 공격자로부터 위변조의 가능성이 높아 보안에 취약함.

이와 달리 세션은 브라우저가 아닌 서버단에서 사용자 정보를 저장하는 구조이며

따라서 쿠키보다는 안전하다고 할 수 있음!

 

그런데 세션 정보도 중간에 탈취 당할 수 있기 때문에 보안에 완벽하다고 할 수 없습니다.

또한 세션을 사용하면 서버에 사용자 정보를 저장하므로, 서버의 메모리를 차지하게 되고, 만약 동시 접속자 수가 많은 서비스일 경우에는 서버 과부화의 원인이 됩니다. (라고 victorydntmd.tistory.com/286 님께서 말씀해주셨음!)

 

 

상태 기억하기 3 - 토큰을 사용하는 OAuth, JWT

쿠키와 세션의 문제점들을 보완하기 위해 토큰( Token )기반의 인증 방식 도입!

토큰 기반의 인증 방식의 핵심은 보호할 데이터를 토큰으로 치환하여 원본 데이터 대신 토큰을 사용하는 기술!

그래서 중간에 공격자로부터 토큰이 탈취당하더라도 데이터에 대한 정보를 알 수 없으므로, 보안성을 높은 기술이라 할 수 있음!.

대표적으로는 OAuth와 JWT이 있음!.

 

Stateful 

클라이언트가 자신의 이전 상태를 기록하고 있다는 것이고 서버는 사용자의 상태를 기억하고 있다가 유용한 정보로 활용한다는 것이다! 더 쉽게 말하면 클라이언트와 서버가 서로 요청 및 응답에 대한 히스토리를 가지고 통신을 할 수 있는 스트림이 계속 유지되는 것을 말한다. 이방식은 TCP, Socket, Message Queue등에 적합하며 이는 서버의 부하가 크다!

 

💯정리!

- 웹서버가 사용자(브라우저)의 상태 Client(쿠키) orr Server(세션) 정보를 기억하고 있다가 유용한 정보로 활용함!

- 서버에서 클라이언트 세션을 유지할 필요가 없을 때 서버 리소스를 절약하는 장점이 있다.

 

 

비 연결성(connectionless)

클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질을  말한다!

 

(다른 블로그에서..)

클라이언트와 서버 사이에 연결을 확립하지 않고 데이터를 전송하는 방법이다. 따라서 오류 확인을 하지 못하므로 신뢰성 없는 전송이라고 할 수 있다. 하지만! 연결확립에 걸리는 시간이 없어 전송 속도가 빠르다!

 

비 연결성의 한계와 극복!

- TCP/IP 연결을 새로 맺어야함! - 3 Way Handshake 시간 추가

- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지 등등 수많은 자원이 함게 다운로드

- 지음은 HTTP지속연결 (Persistent Connections)로 문제 해결

- HTTP/2, HTTP/3에서 더 많은 최적화

 

 

연결성(Connection-Oriented)

클라이언트와 서버 사이의 논리적 연결을 확립하고 데이터를 전송하는 방법으로 패킷들의 순서가 맞지 않을 위험이 적고 오류 발생 시 재전송을 하여 신뢰성 있는 전송이라고 할 수 있음!

비연결성, 연결성 구조 [출처] https://www.csestack.org/difference-connection-oriented-connectionless-services-protocol/

 

오늘은 여기까지! 강의 내용은 더있지만 다음 포스팅에서...! 하자!! 

 

 

공부에 도움을 주신 모든 분들 너무너무 감사합니다! 그냥 에라 모르겠다 하고 잘까 하다가 덕분에 공부했습니다!

 

[출처] 김영한 강사님 강의 www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다. 초급 기타 교양 ・ 기타 웹 개발 네트워크 웹 개발 Back-End 온라인 강의 프론트엔드/백엔드, 웹/모바일 앱 개발 등 웹 기

www.inflearn.com

[출처] cupjoo.tistory.com/54

 

서버와 클라이언트의 동작

이 포스트에서는 초기 Client-Server 모델부터 현재 사용되는 웹 어플리케이션 서버까지 어떻게 발전되어왔는지 알아보려 한다. 1. 웹 클라이언와 서버 1) 웹 서버와 클라이언트 기본적으로 클라이

cupjoo.tistory.com

[출처] 5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%99%80-HTTP-%EB%B0%8F-REST

 

[Stateful/Stateless] Stateful vs. Stateless 서비스와 HTTP 및 REST

Contents 0. Prologue 1. Stateful Service 2. Stateless Service 3. Why Stateless Service 4. Stateless Service 및 HTTP, 그리고 REST Stateful/Stateless 서비스의 개념을 알아보고, 이를 바탕으로 Stateless..

5equal0.tistory.com

[출처] junshock5.tistory.com/83

 

Stateful, Stateless (웹서버 통신 방식)

Stateless 웹서버 통신(http) 특성상 사용자(브라우저)의 이전 상태 client(쿠키) or server(세션) 정보를 기록하지 않는 접속이란 의미입니다. 브라우저가 데이터를 전송할 때마다 연결하고 바로 끊어버

junshock5.tistory.com

[출처] swdevelopment.tistory.com/144

 

네트워크 / stateful과 stateless란?

*Stateful stateful은 클라이언트가 자신의 이전 상태를 기록하고 있다는 것이고 서버는 사용자의 상태를 기억하고 있다가 유용한정보로 활용한다는 것이다. 더 쉽게 말하면 클라이언트와 서버가 서

swdevelopment.tistory.com

[출처] victorydntmd.tistory.com/286

 

[HTTP] HTTP 특성(비연결성, 무상태)과 구성요소 그리고 Restful API

이번 글에서는 HTTP의 가장 큰 특징인 비연결성, 무상태 그리고 HTTP 상태코드(status)와 메서드(method), 헤더(header)에 대해 알아보도록 하겠습니다. 1. 비연결성 ( Connectionless ) 비연결성은 클라이언트

victorydntmd.tistory.com

** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.

이곳 저곳에서 구글링한 것과 강의들은

내용이 정리가 되었습니다.

그림들은 그림밑에 출저표시를 해놓았습니다.

문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **

 

반응형

댓글