[Naver Cloud Camp 7] 교육 정리

네이버 클라우드 캠프 71일차 230803

우기37 2023. 8. 4. 09:36

#1 교육정리

1) HTTP

 

 

 

#2 HTTP

Http란)

HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.

 

HTTP는 클라이언트-서버 프로토콜입니다. 요청은 하나의 개체, 사용자 에이전트(또는 그것을 대신하는 프록시)에 의해 전송됩니다. 대부분의 경우, 사용자 에이전트는 브라우저지만, 무엇이든 될 수 있습니다. 예를 들어, 검색 엔진 인덱스를 채워넣고 유지하기 위해 웹을 돌아다니는 로봇이 그러한 경우입니다.

 

이미지 출처 : https://toma0912.tistory.com/69

 

예를들면, 클라이언트(client) 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작합니다.

 

- 요청 : client -> server

- 응답 : server -> client

 

클라이언트 : 서버에 요청하는 클라이언트 소프트웨어가 설치된 컴퓨터. chrom, firefox, ie등의 클라이언트 소프트웨어를 이용한다. 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.

 

서버 : 클라이언트의 요청을 받아서, 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터. Apache, nginx, IIS, lighttpd 등이 서버 소프트웨어다.

웹서버는 보통 표준포트인 80번 포트로 서비스한다.

 

HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아닙니다. Plain text로 부터 JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있으며, 보통은 클라이언트가 어떤 정보를 HTML 형태로 받고 싶은지, JSON 형태로 받고 싶은지 명시해주는 경우가 많습니다.

 

각각의 개별적인 요청들은 서버로 보내지며, 서버는 요청을 처리하고 response라고 불리는 응답을 제공합니다. 이 요청과 응답 사이에는 여러 개체들이 있는데, 예를 들면 다양한 작업을 수행하는 게이트웨이 또는 캐시 역할을 하는 프록시 등이 있습니다.

이미지 출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

 

Connevetless & Stateless)

HTTP는 Connectless 방식으로 작동한다. 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. 기본적으로는 자원 하나에 대해서 하나의 연결을 만든다. 이런 작동방식은 각각 아래의 장점과 단점을 가진다.

  • 장점 : 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다. 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.
  • 단점 : 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다. 이러한 HTTP의 특징을 stateless라고 하는데, Connectless로 부터 파생되는 특징이라고 할 수 있다. 클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다. 예컨데, 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있다.

* Cookie는 클라이언트와 서버의 상태 정보를 담고 있는 정보조각이다. 로그인을 예로 들자면, 클라이언트가 로그인에 성공하면, 서버는 로그인 정보를 자신의 데이터베이스에 저장하고 동일한 값을 cookie형태로 클라이언트에 보낸다. 클라이언트는 다음 번 요청때 cookie를 서버에 보내는데, 서버는 cookie 값으로 자신의 데이터베이스를 조회해서 로그인 여부를 확인할 수 있다. 자세한 내용은 아래 세션 관리에서 다룬다.

 

 

정리하자면, HTTP 통신은 아래와 같은 특징을 갖고 있습니다.

 

Java 와 Http 연관성)

저의 경우 현재는 Java로 Http에 연결하여 통신하고 있으며 아래와 같이 설명 할 수 있습니다.

 

- Java로 웹 서버 개발: Java는 다양한 웹 서버 개발 프레임워크와 라이브러리를 제공합니다. Java를 사용하여 웹 애플리케이션 서버를 구축하고 HTTP 요청을 처리하여 동적인 웹 페이지를 생성하거나 데이터를 처리합니다. 대표적인 Java 웹 서버 개발 프레임워크로는 Spring, Java Servlet, JavaServer Faces(JSF) 등이 있습니다.

- Java로 웹 클라이언트 개발: Java는 웹 클라이언트 애플리케이션을 개발하는 데도 사용됩니다. 웹 브라우저와는 별도로 독립적인 Java 애플릿이나 JavaFX 애플리케이션을 사용하여 웹 페이지에서 동적인 기능을 구현하거나 웹 서버와 통신하는데 사용됩니다.

- Java HTTP 클라이언트 라이브러리: Java는 HTTP 프로토콜을 기반으로 하는 통신을 쉽게 구현할 수 있는 HTTP 클라이언트 라이브러리를 제공합니다. 예를 들어, java.net.HttpURLConnection 클래스를 사용하여 웹 서버와 HTTP 통신을 수행할 수 있습니다.

- RESTful 웹 서비스 개발: Java를 사용하여 RESTful 웹 서비스를 개발하는데도 많이 활용됩니다. REST는 HTTP 프로토콜을 기반으로 한 웹 서비스 디자인 패턴으로, Java를 이용하여 RESTful 웹 서비스를 구현할 수 있습니다.

- Java는 강력한 다중 플랫폼 지원과 넓은 커뮤니티 지지로 인해 웹 개발에서 널리 사용되며, HTTP를 기반으로 한 웹 서비스를 효과적으로 구현하는 데 많은 도움을 줍니다.


Http Client와 Session - 1. 쿠키를 이용하여 클라이언트를 구분하기)


 

 

Http Client와 Session - 2. 쿠키를 이용하여 클라이언트를 구분하기)

 

 

Http Client와 Cookie)