HyperText Transfer Protocol의 두문자어로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 초기에는 HTML과 같은 하이퍼텍스트를 주로 전송했지만, 최근에는 Plain text, JSON, XML 등 다양한 형태의 정보도 전송하는 애플리케이션 레이어 프로토콜이다.
*하이퍼 텍스트: 참조(하이퍼링크)를 통해 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. 기존의 문서가 순차적이면서 서열형 구조라면, 하이퍼텍스트는 링크에 따라 그 차례가 바뀌는 임의적이면서 나열형인 구조를 가진다.
*어플리케이션 레이어 프로토콜 : 컴퓨터 네트워크에서 인터넷 프로토콜 컴퓨터 네트워크를 통하는 프로세스 간 통신 접속을 위해 설계되어 통신 프로토콜과 방식을 위해 보유된 추상 계층이다.
클라이언트는 UI/UX에 집중하고 서버에서 비즈니스 로직과 데이터를 처리하는 등 서버와 클라이언트의 역할을 분리한 클라이언트-서버 구조이다.
🧐 클라이언트-서버 구조란? 클라이언트는 유저와 상호작용을 담당하고, 서버는 리소스요청과 응답에 대한 처리를 하도록 역할이 분리되어 있는 구조이다. HTTP프로토콜을 통해 서버-클라이언트 간 request와 response를 주고 받는다.
-클라이언트 서버와 연결된 모든 단말기와 웹에 접근하는 단말기 내 소프트웨어를 지칭하는 것으로 보통은 브라우저를 나타낸다. 사용자의 입력을 처리하여 서버에 요청을 보내는 역할을 한다.
-서버 클라이언트의 요청을 받아 처리하고 클라이언트에게 응답을 보낸다. 어떠한 형태로든 클라이언트의 요청을 받아 응답을 제공하면 서버가 될 수 있다.
TCP/IP 기반
브라우저가 웹 서버와 통신하기 위해 사용하는 주요 프로토콜로 TCP/IP기반으로 서버와 클라이언트의 요청과 응답을 전송한다.
🧐 TCP/IP 프로토콜이란? 전송 제어 프로토콜인 TCP와 인터넷 프로토콜인 IP의 합성어로 인터넷 동작의 중심이 되는 통신규약이다.
-TCP 역할: 데이터 흐름 관리, 데이터 전달 보증 -IP 역할 : 패킷 목적지 주소 지정, 경로 제어, 비신뢰성, 비연결형
IP는 기본 데이터 단위인 데이터그램이 목적지에 성공적으로 도달되는 것을 보장하지 않는 비신뢰성의 특징과 전달되는 데이터그램의 상태정보를 유지하지 않으며 각 데이터그램이 독립적으로 처리되는 비연결형의 특징을 갖는다. 따라서 전송 제어 프로토콜인 TCP와 함께 사용한다. 즉, TCP/IP를 기반으로 한다는 것을 IP주소 지정과 TCP의 안정적인 전송 특성을 활용해 논리적 연결을 수행하며 순서대로, 신뢰할 수 있는 데이텉 교환이 이루어진다는 것이다.
비연결성(Connectionless)
연결 상태를 유지하지 않는 비연결성 프로토콜(Connectionless)이다.
🧐 비연결성이란? 클라이언트와 서버가 한 번 연결을 맺고 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 끊어버리는 성질이다.
연결을 유지하면 리소스가 계속 사용되고, 부족해지면 다른 사용자가 이용하지 못하기 때문에 더 많은 연결을 위해 비연결 지향으로 설계되었다. 하지만, 서버가 클라이언트를 기억하고 있지 않아 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결 시도/해제의 과정을 거쳐야 해 3 way handske의 시간이 추가되어 오버헤드가 발생한다는 단점이 있다. HTTP 1.0부터는 keep-alive 헤더를 통해 연결을 유지할 수 있다. (HTTP 1.1붙터 별도 명시가 없으면 모든 연결이 지속연결로 간주) 자원 하나를 요청했을 때 이와 묶여 있는 모든 자원을 요청하기 위해 연결을 유지한 상태로 연결 횟수가 줄어들어 효율적인 처리가 가능하다.
무상태성(Stateless)
각각의 요청을 독립적인 트랜잭션으로 취급하는 무상태 프로토콜(Stateless)이다.
🧐 무상태란? 비연결성을 가지기 때문에 서버는 클라이언트를 식별할 수 없어 매번 새로운 인증을 해야 한다. 이러한 번거로움을 해결하는 대표적인 방법은 아래와 같다.
-쿠키/세션 기반 인증 브라우저가 서버와 연결이 되면 서버는 해당 클라이언트에 대한 유일한 값인 세션 ID를 부여하고 세션 스토리지에 저장한다. HTTP헤더에 실어 클라이언트에게 보내면 브라우저는 세션 ID를 포함하는 쿠키를 저장하고 있고, 이후 요청 시 헤더의 쿠키에 세션 ID를 담아서 전송한다. 서버는 클라이언트의 요청의 쿠키 내 세션 ID와 세션 스토리지에 담긴 세션 ID를 대조해 인증 여부를 판단한다. 즉, 세션은 서버에서 가지고 있는 정보이고 쿠키는 서버에서 발급된 세션을 열기 위한 키 값인 세션ID를 보관하는 곳이다.
-토큰 기반 인증 토큰은 인증을 위해 사용되는 암호화된 문자열이다. 서버는 토큰을 생성해서 클라이언트로 보내고, 클라이언트는 HTTP 헤더에 실어 서버에 전송하며 유효성을 검사한다. 토큰을 사용하면 서버나 세션에 의존하지 않고 클라이언트측에서 들어오는 요청만으로 작업을 처리하기 때문에 상태를 유지하지 않으므로 Stateless한 구조를 갖는다. 토큰은 제한된 수명을 가지고 만료되면 새로 생성되어야 한다.
HTTP는 웹 서버와 브라우저 사이에 정보를 송수신하는데 사용하는 클라이언트와 서버 프로토콜이다.
1989년 영국의 컴퓨터 과학자인 팀 버너스 리(Tim Berners-Lee)가 월드 와이드 웹(World Wide Web)을 고안하면서 설계한 프로토콜이다.
주로 HTML 문서를 주고 받는데 사용한다.
HTML(HyperText Markup Language) : 웹을 이루는 구성 요소이다. 웹 페이지가 어떤 구조로 이루어져 있는지 브라우저가 알 수 있도록 하는 마크업 언어!!❌프로그래밍 언어 아님❌ - HyperText : 웹 페이지를 다른 페이지로 연경하는 링크이다. - Markup Language: 태그 같은 수많은 요소를 사용<h1>이런 태그</h1>하는 언어
Protocol: 규칙이다. 특정 기기 간에 데이터를 주고받기 위해 정의되었다. “나는 이렇게 줄게! 넌 저렇게 받아! 난 너가 준거 요렇게 받을게!
HyperText Transfer Protocol의 두문자어로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 초기에는 HTML과 같은 하이퍼텍스트를 주로 전송했지만, 최근에는 Plain text, JSON, XML 등 다양한 형태의 정보도 전송하는 애플리케이션 레이어 프로토콜이다.
*하이퍼 텍스트: 참조(하이퍼링크)를 통해 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. 기존의 문서가 순차적이면서 서열형 구조라면, 하이퍼텍스트는 링크에 따라 그 차례가 바뀌는 임의적이면서 나열형인 구조를 가진다.
*어플리케이션 레이어 프로토콜 : 컴퓨터 네트워크에서 인터넷 프로토콜 컴퓨터 네트워크를 통하는 프로세스 간 통신 접속을 위해 설계되어 통신 프로토콜과 방식을 위해 보유된 추상 계층이다.
클라이언트는 UI/UX에 집중하고 서버에서 비즈니스 로직과 데이터를 처리하는 등 서버와 클라이언트의 역할을 분리한 클라이언트-서버 구조이다.
🧐 클라이언트-서버 구조란? 클라이언트는 유저와 상호작용을 담당하고, 서버는 리소스요청과 응답에 대한 처리를 하도록 역할이 분리되어 있는 구조이다. HTTP프로토콜을 통해 서버-클라이언트 간 request와 response를 주고 받는다.
-클라이언트 서버와 연결된 모든 단말기와 웹에 접근하는 단말기 내 소프트웨어를 지칭하는 것으로 보통은 브라우저를 나타낸다. 사용자의 입력을 처리하여 서버에 요청을 보내는 역할을 한다.
-서버 클라이언트의 요청을 받아 처리하고 클라이언트에게 응답을 보낸다. 어떠한 형태로든 클라이언트의 요청을 받아 응답을 제공하면 서버가 될 수 있다.
TCP/IP 기반
브라우저가 웹 서버와 통신하기 위해 사용하는 주요 프로토콜로 TCP/IP기반으로 서버와 클라이언트의 요청과 응답을 전송한다.
🧐 TCP/IP 프로토콜이란? 전송 제어 프로토콜인 TCP와 인터넷 프로토콜인 IP의 합성어로 인터넷 동작의 중심이 되는 통신규약이다.
-TCP 역할: 데이터 흐름 관리, 데이터 전달 보증 -IP 역할 : 패킷 목적지 주소 지정, 경로 제어, 비신뢰성, 비연결형
IP는 기본 데이터 단위인 데이터그램이 목적지에 성공적으로 도달되는 것을 보장하지 않는 비신뢰성의 특징과 전달되는 데이터그램의 상태정보를 유지하지 않으며 각 데이터그램이 독립적으로 처리되는 비연결형의 특징을 갖는다. 따라서 전송 제어 프로토콜인 TCP와 함께 사용한다. 즉, TCP/IP를 기반으로 한다는 것을 IP주소 지정과 TCP의 안정적인 전송 특성을 활용해 논리적 연결을 수행하며 순서대로, 신뢰할 수 있는 데이텉 교환이 이루어진다는 것이다.
비연결성(Connectionless)
연결 상태를 유지하지 않는 비연결성 프로토콜(Connectionless)이다.
🧐 비연결성이란? 클라이언트와 서버가 한 번 연결을 맺고 클라이언트 요청에 대해 서버가 응답을 마치면 연결을 끊어버리는 성질이다.
연결을 유지하면 리소스가 계속 사용되고, 부족해지면 다른 사용자가 이용하지 못하기 때문에 더 많은 연결을 위해 비연결 지향으로 설계되었다. 하지만, 서버가 클라이언트를 기억하고 있지 않아 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결 시도/해제의 과정을 거쳐야 해 3 way handske의 시간이 추가되어 오버헤드가 발생한다는 단점이 있다. HTTP 1.0부터는 keep-alive 헤더를 통해 연결을 유지할 수 있다. (HTTP 1.1붙터 별도 명시가 없으면 모든 연결이 지속연결로 간주) 자원 하나를 요청했을 때 이와 묶여 있는 모든 자원을 요청하기 위해 연결을 유지한 상태로 연결 횟수가 줄어들어 효율적인 처리가 가능하다.
무상태성(Stateless)
각각의 요청을 독립적인 트랜잭션으로 취급하는 무상태 프로토콜(Stateless)이다.
🧐 무상태란? 비연결성을 가지기 때문에 서버는 클라이언트를 식별할 수 없어 매번 새로운 인증을 해야 한다. 이러한 번거로움을 해결하는 대표적인 방법은 아래와 같다.
-쿠키/세션 기반 인증 브라우저가 서버와 연결이 되면 서버는 해당 클라이언트에 대한 유일한 값인 세션 ID를 부여하고 세션 스토리지에 저장한다. HTTP헤더에 실어 클라이언트에게 보내면 브라우저는 세션 ID를 포함하는 쿠키를 저장하고 있고, 이후 요청 시 헤더의 쿠키에 세션 ID를 담아서 전송한다. 서버는 클라이언트의 요청의 쿠키 내 세션 ID와 세션 스토리지에 담긴 세션 ID를 대조해 인증 여부를 판단한다. 즉, 세션은 서버에서 가지고 있는 정보이고 쿠키는 서버에서 발급된 세션을 열기 위한 키 값인 세션ID를 보관하는 곳이다.
-토큰 기반 인증 토큰은 인증을 위해 사용되는 암호화된 문자열이다. 서버는 토큰을 생성해서 클라이언트로 보내고, 클라이언트는 HTTP 헤더에 실어 서버에 전송하며 유효성을 검사한다. 토큰을 사용하면 서버나 세션에 의존하지 않고 클라이언트측에서 들어오는 요청만으로 작업을 처리하기 때문에 상태를 유지하지 않으므로 Stateless한 구조를 갖는다. 토큰은 제한된 수명을 가지고 만료되면 새로 생성되어야 한다.
HTTP는 웹 서버와 브라우저 사이에 정보를 송수신하는데 사용하는 클라이언트와 서버 프로토콜이다.
1989년 영국의 컴퓨터 과학자인 팀 버너스 리(Tim Berners-Lee)가 월드 와이드 웹(World Wide Web)을 고안하면서 설계한 프로토콜이다.
주로 HTML 문서를 주고 받는데 사용한다.
HTML(HyperText Markup Language) : 웹을 이루는 구성 요소이다. 웹 페이지가 어떤 구조로 이루어져 있는지 브라우저가 알 수 있도록 하는 마크업 언어!!❌프로그래밍 언어 아님❌ - HyperText : 웹 페이지를 다른 페이지로 연경하는 링크이다. - Markup Language: 태그 같은 수많은 요소를 사용<h1>이런 태그</h1>하는 언어
Protocol: 규칙이다. 특정 기기 간에 데이터를 주고받기 위해 정의되었다. “나는 이렇게 줄게! 넌 저렇게 받아! 난 너가 준거 요렇게 받을게!