웹 서버 (Web Server)
웹 서버는 텍스트, 이미지, 비디오 및 애플리케이션 데이터와 같은 웹 사이트 콘텐츠를 요청하는 클라이언트에 전달한다. 가장 일반적인 유형의 클라이언트는 사용자가 링크를 클릭하거나 브라우저에 표시된 페이지에서 문서를 다운로드할 때 웹사이트에서 데이터를 요정하는 웹 브라우저 프로그램이다.
웹 서버는 HTTP (Hypertext Transfer Protocol)를 사용하여 웹 브라우저와 통신한다. 대부분의 웹 페이지 콘텐츠는 HTML(Hypertext Markup Language)로 인코딩된다. 컨텐츠는 정적(텍스트 및 이미지) 또는 동적(계산된 가격 또는 고객이 구매하도록 표시한 항목 목록)일 수 있다. 동적 컨텐츠를 제공하기 위해 대부분의 웹 서버는 비지니스 논리를 통신으로 인코딩하는 서버 측 스크립팅 언어를 지원한다. 일반적으로 지원되는 언어에는 ASP(Active Server Page), JavaScript, PHP, Python 및 Ruby가 있다.
웹서버는 일반적으로 요청되는 컨텐츠의 전달 속도를 높이기 위해 컨텐츠를 캐시할 수 있다. 이 프로세스를 웹 가속이라고도 한다.
브라우저가 웹 서버에서 호스팅되는 파일을 필요로 할 때마다 브라우저는 HTTP를 통해 파일을 요청한다. 요청이 올바른 (하드웨어) 웹 서버에 도달하면 (소프트웨어) HTTP 서버는 요청을 수락하고 요청된 문서를 찾아 HTTP를 통해 브라우저로 다시 보낸다. (서버가 요청한 문서를 찾지 못하면 대신 404 응답을 반환한다.)
Protocol
- 프로토콜은 규약이라는 의미를 가지고 있다.
- 컴퓨터 네트워크에서 데이터를 주고 받을 때 이러한 규약에 맞춰 개발함으로써 서로 정보를 교환할 수 있게 된 것이다.
- 컴퓨터 네트워크에서 데이터를 보내고 받는 성격에 따라 프로토콜이 만들어졌다.
- 웹 문서를 주고 받을 때는 HTTP를 사용해야하고 파일을 주고 받을 때는 FTP, 메일은 SMTP, POP 등 전송 계층과 유형에 따라 다양하게 만들어져있다.
HTTP (Hypertext Transfer Protocol)
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜(규약)이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다. 클라이언트-서버 프로토콜이란 보통 웹 브라우저인 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.
=> 웹 상에서 통신을 할 때 어떤 형식(HTTP)으로 통신을 하자고 정해놓은 약속
HTTP Method란?
HTTP 메서드는 수행할 작업의 종류를 나타내기 위해 서버에 보내는 메시지이다. 이러한 방법을 사용하면 브라우저와 서버 간의 더 풍부한 통신이 가능하다. 가장 일반적으로 사용되는 방법은 GET 및 POST이다.
GET: 어떠한 데이터를 서버로부터 받아올 때 사용하는 메서드이다.
POST: 일반적으로 무언가를 생성하기 위해 서버에 데이터 블록을 수락하도록 요청한다.
PUT: 데이터를 업데이트할 때 사용한다.
DELETE: 데이터를 서버에서 삭제할 때 사용한다.
GET Method
get 메서드는 URL 매개변수를 사용하여 서버에서 데이터를 요청한다. 웹에서 가장 일반적으로 사용되는 HTTP 방법이다. GET 요청 매개변수는 이름-값 쌍으로 형식이 지정된다.
get 요청은 다음 사항들을 수행할 수 있다. (구글에 검색했을 때를 생각하면 이해하기 쉽다.)
1. 서버에서 데이터 검색 - 일반적으로 웹 페이지
2. 길이 제한이 있는 서버로 데이터 보내기 (쿼리스트링)
3. 브라우저 기록에 남음
4. 캐시가 됨
get 요청은 다음 사항들을 수행할 수 없다.
1. 민감한 데이터(ex. 비밀번호, 신용카드정보) 처리
2. 서버에서 데이터 수정
POST Method
post 메서드는 리소스를 변경하기 위해 서버에 데이터를 보낸다. POST 데이터는 사용자가 볼 수 없는 요청 본문으로 전송된다.
post 요청은 다음을 수행할 수 있다
1. 리소스 데이터, 즉 서버의 데이터 수정
2. 민감한 데이터를 처리하는 데 사용 (사용자가 볼 수 없는 요청으로 전송되기 때문이다.)
3. 길이 제한 없이 데이터 보내기
post 요청은 다음을 수행할 수 없다
1. 캐시에 저장
2. 브라우저 기록에 남기기
PUT Method vs PATCH Method
공통점
- 둘 다 어떠한 데이터를 수정하기 위해서 사용된다.
차이점
- PUT: 데이터 전체 교체, 데이터 교체 시 모든 필드 필요
- PATCH: 데이터 부분 교체, 데이터 교체 시 일부 필드 필요
// /users/1
{
"username": "Ronaldo",
"email": "ronaldo@gmail.com"
}
// PUT /users/1
{
"username": "Ronaldo", // 수정하지 않아도 넣어주어야 한다.
"email": "cristiano@gmail.com"
}
// PATCH /users/1
{
"email": "cristiano@gmail.com"
}
Stateless (무상태, 상태 비연결)
Stateless는 HTTP의 특징 중 하나이며 서버가 클라이언트의 상태를 저장하지 않는 것을 의미한다. 반대되는 개념은 stateful.
상태 비저장 프로토콜은 서버가 여러 요청 기간 동안 각 사용자에 대한 정보나 상태를 유지할 필요가 없다. 이는 성능을 위한 것인데, 각 요청에 대한 연결을 재설정하는데 소요되는 시간/대역폭을 최소화하기 위한 것이다. 이에 따라 서버 확장이 용이하다는 장점이 있다. 하지만 정보를 저장하지 않기 때문에 클라이언트가 데이터를 추가 전송해야한다. 또, 모든 상태를 stateless로 구성할 수는 없다고 한다.
서버가 첫 요청을 받은 후에도 내가 누구인지 알기 바라면 인증 절차를 거쳐야 한다.
1. 로그인 절차를 거친다.
2. 서버가 유저 정보를 담고 있는 토큰을 발행한다.
3. 서버가 클라이언트에게 토큰을 전달한다.
4. 클라이언트가 토큰을 소유한다 (쿠키나 스토리지에).
5. 토큰과 함께 서버에 요청을 보낸다.
6. 서버는 토큰을 디코딩해 유저가 누군지 알 수 있다.
Connectionless (비연결성)
HTTP는 연결을 유지하지 않는 모델이다. 요청에 대해 응답을 보내면 TCP/IP 연결을 끊는다, 이를 통해 최소한의 자원으로 서버유지를 가능하게 한다. 일반적으로 초 단위 이하의 빠른 속도로 응답을 한다. 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우에 비연결성의 특징은 효율적으로 작동한다. 이를테면, 1시간 동안 수 천명이 서비스를 사용해도 실제 서버에서 처리하는 요청은 수십개로 매우 작을 것이다. 구글에서 계속 검색 버튼을 누르지는 않기 때문이다. 하지만 티켓 예매와 같은 경우나 트래픽이 많고 큰 규모의 서비스를 운영할 때는 비연결성의 한계가 나타난다. 반대되는 개념은 connection oriented.
참고
https://m42-orion.tistory.com/106
[HTTP] HTTP는 Stateless, Connectionless하다
이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다! ⛅️ HTTP는 Stateless하다. ✅ Stateless? ● Stateless란 서버가 클라이언트의 상태
m42-orion.tistory.com
HTTP, Stateless, Connectionless, HTTP 메시지 개념
HTTP, 무상태, 비연결성, HTTP 메시지를 간략하게 알아보자🧐
velog.io
[네트워크/HTTP] HTTP란? - 특징(무상태와 비 연결성) - 하나몬
⚡️ HTTP 개념, 역사, 특징 간략히 알아보기 ❗️HTTP란? HTTP는 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)이다. HTTP는 1989년부터 1991년에 발명되었다. HTTP는 월드 와이드 웹(WWW)에 내재된 프
hanamon.kr
'NETWORK' 카테고리의 다른 글
[Network] HTTP Status Code (0) | 2024.01.17 |
---|---|
[Network] HTTP Message (0) | 2024.01.17 |
웹 서버 (Web Server)
웹 서버는 텍스트, 이미지, 비디오 및 애플리케이션 데이터와 같은 웹 사이트 콘텐츠를 요청하는 클라이언트에 전달한다. 가장 일반적인 유형의 클라이언트는 사용자가 링크를 클릭하거나 브라우저에 표시된 페이지에서 문서를 다운로드할 때 웹사이트에서 데이터를 요정하는 웹 브라우저 프로그램이다.
웹 서버는 HTTP (Hypertext Transfer Protocol)를 사용하여 웹 브라우저와 통신한다. 대부분의 웹 페이지 콘텐츠는 HTML(Hypertext Markup Language)로 인코딩된다. 컨텐츠는 정적(텍스트 및 이미지) 또는 동적(계산된 가격 또는 고객이 구매하도록 표시한 항목 목록)일 수 있다. 동적 컨텐츠를 제공하기 위해 대부분의 웹 서버는 비지니스 논리를 통신으로 인코딩하는 서버 측 스크립팅 언어를 지원한다. 일반적으로 지원되는 언어에는 ASP(Active Server Page), JavaScript, PHP, Python 및 Ruby가 있다.
웹서버는 일반적으로 요청되는 컨텐츠의 전달 속도를 높이기 위해 컨텐츠를 캐시할 수 있다. 이 프로세스를 웹 가속이라고도 한다.
브라우저가 웹 서버에서 호스팅되는 파일을 필요로 할 때마다 브라우저는 HTTP를 통해 파일을 요청한다. 요청이 올바른 (하드웨어) 웹 서버에 도달하면 (소프트웨어) HTTP 서버는 요청을 수락하고 요청된 문서를 찾아 HTTP를 통해 브라우저로 다시 보낸다. (서버가 요청한 문서를 찾지 못하면 대신 404 응답을 반환한다.)
Protocol
- 프로토콜은 규약이라는 의미를 가지고 있다.
- 컴퓨터 네트워크에서 데이터를 주고 받을 때 이러한 규약에 맞춰 개발함으로써 서로 정보를 교환할 수 있게 된 것이다.
- 컴퓨터 네트워크에서 데이터를 보내고 받는 성격에 따라 프로토콜이 만들어졌다.
- 웹 문서를 주고 받을 때는 HTTP를 사용해야하고 파일을 주고 받을 때는 FTP, 메일은 SMTP, POP 등 전송 계층과 유형에 따라 다양하게 만들어져있다.
HTTP (Hypertext Transfer Protocol)
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜(규약)이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다. 클라이언트-서버 프로토콜이란 보통 웹 브라우저인 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미한다.
=> 웹 상에서 통신을 할 때 어떤 형식(HTTP)으로 통신을 하자고 정해놓은 약속
HTTP Method란?
HTTP 메서드는 수행할 작업의 종류를 나타내기 위해 서버에 보내는 메시지이다. 이러한 방법을 사용하면 브라우저와 서버 간의 더 풍부한 통신이 가능하다. 가장 일반적으로 사용되는 방법은 GET 및 POST이다.
GET: 어떠한 데이터를 서버로부터 받아올 때 사용하는 메서드이다.
POST: 일반적으로 무언가를 생성하기 위해 서버에 데이터 블록을 수락하도록 요청한다.
PUT: 데이터를 업데이트할 때 사용한다.
DELETE: 데이터를 서버에서 삭제할 때 사용한다.
GET Method
get 메서드는 URL 매개변수를 사용하여 서버에서 데이터를 요청한다. 웹에서 가장 일반적으로 사용되는 HTTP 방법이다. GET 요청 매개변수는 이름-값 쌍으로 형식이 지정된다.
get 요청은 다음 사항들을 수행할 수 있다. (구글에 검색했을 때를 생각하면 이해하기 쉽다.)
1. 서버에서 데이터 검색 - 일반적으로 웹 페이지
2. 길이 제한이 있는 서버로 데이터 보내기 (쿼리스트링)
3. 브라우저 기록에 남음
4. 캐시가 됨
get 요청은 다음 사항들을 수행할 수 없다.
1. 민감한 데이터(ex. 비밀번호, 신용카드정보) 처리
2. 서버에서 데이터 수정
POST Method
post 메서드는 리소스를 변경하기 위해 서버에 데이터를 보낸다. POST 데이터는 사용자가 볼 수 없는 요청 본문으로 전송된다.
post 요청은 다음을 수행할 수 있다
1. 리소스 데이터, 즉 서버의 데이터 수정
2. 민감한 데이터를 처리하는 데 사용 (사용자가 볼 수 없는 요청으로 전송되기 때문이다.)
3. 길이 제한 없이 데이터 보내기
post 요청은 다음을 수행할 수 없다
1. 캐시에 저장
2. 브라우저 기록에 남기기
PUT Method vs PATCH Method
공통점
- 둘 다 어떠한 데이터를 수정하기 위해서 사용된다.
차이점
- PUT: 데이터 전체 교체, 데이터 교체 시 모든 필드 필요
- PATCH: 데이터 부분 교체, 데이터 교체 시 일부 필드 필요
// /users/1
{
"username": "Ronaldo",
"email": "ronaldo@gmail.com"
}
// PUT /users/1
{
"username": "Ronaldo", // 수정하지 않아도 넣어주어야 한다.
"email": "cristiano@gmail.com"
}
// PATCH /users/1
{
"email": "cristiano@gmail.com"
}
Stateless (무상태, 상태 비연결)
Stateless는 HTTP의 특징 중 하나이며 서버가 클라이언트의 상태를 저장하지 않는 것을 의미한다. 반대되는 개념은 stateful.
상태 비저장 프로토콜은 서버가 여러 요청 기간 동안 각 사용자에 대한 정보나 상태를 유지할 필요가 없다. 이는 성능을 위한 것인데, 각 요청에 대한 연결을 재설정하는데 소요되는 시간/대역폭을 최소화하기 위한 것이다. 이에 따라 서버 확장이 용이하다는 장점이 있다. 하지만 정보를 저장하지 않기 때문에 클라이언트가 데이터를 추가 전송해야한다. 또, 모든 상태를 stateless로 구성할 수는 없다고 한다.
서버가 첫 요청을 받은 후에도 내가 누구인지 알기 바라면 인증 절차를 거쳐야 한다.
1. 로그인 절차를 거친다.
2. 서버가 유저 정보를 담고 있는 토큰을 발행한다.
3. 서버가 클라이언트에게 토큰을 전달한다.
4. 클라이언트가 토큰을 소유한다 (쿠키나 스토리지에).
5. 토큰과 함께 서버에 요청을 보낸다.
6. 서버는 토큰을 디코딩해 유저가 누군지 알 수 있다.
Connectionless (비연결성)
HTTP는 연결을 유지하지 않는 모델이다. 요청에 대해 응답을 보내면 TCP/IP 연결을 끊는다, 이를 통해 최소한의 자원으로 서버유지를 가능하게 한다. 일반적으로 초 단위 이하의 빠른 속도로 응답을 한다. 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우에 비연결성의 특징은 효율적으로 작동한다. 이를테면, 1시간 동안 수 천명이 서비스를 사용해도 실제 서버에서 처리하는 요청은 수십개로 매우 작을 것이다. 구글에서 계속 검색 버튼을 누르지는 않기 때문이다. 하지만 티켓 예매와 같은 경우나 트래픽이 많고 큰 규모의 서비스를 운영할 때는 비연결성의 한계가 나타난다. 반대되는 개념은 connection oriented.
참고
https://m42-orion.tistory.com/106
[HTTP] HTTP는 Stateless, Connectionless하다
이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다! ⛅️ HTTP는 Stateless하다. ✅ Stateless? ● Stateless란 서버가 클라이언트의 상태
m42-orion.tistory.com
HTTP, Stateless, Connectionless, HTTP 메시지 개념
HTTP, 무상태, 비연결성, HTTP 메시지를 간략하게 알아보자🧐
velog.io
[네트워크/HTTP] HTTP란? - 특징(무상태와 비 연결성) - 하나몬
⚡️ HTTP 개념, 역사, 특징 간략히 알아보기 ❗️HTTP란? HTTP는 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)이다. HTTP는 1989년부터 1991년에 발명되었다. HTTP는 월드 와이드 웹(WWW)에 내재된 프
hanamon.kr
'NETWORK' 카테고리의 다른 글
[Network] HTTP Status Code (0) | 2024.01.17 |
---|---|
[Network] HTTP Message (0) | 2024.01.17 |