HTTP, Hyper Text Transper Protocol

sanha_OvO·2021년 11월 13일
0

Frontend

목록 보기
4/7

HTTP : Hyper Text Transper Protocol
WWW상에서 HTML파일을 주고받을 수 있는 프로토콜이다.

HTTP프로톸톨은 일반적으로 tcp/ip 통신 위에서 동작하며 기본포트는 80번이다.

웹은 기본적으로 HTTP로 통신하기 때문에 웹 개발자라면 필수 덕목이라고 할 수 있겠다.


HTTP의 특징

http는 프로토콜인 만큼 규약이 정해져있다.

1. Request / Response

HTTP 통신은 요청과 응답을 통해서 이루어 진다.
클라이언트는 서버에게 요청을 보내고, 서버는 요청을 보낸 클라이언트에게 필요한 응답을 보낸다.

2. Stateless

HTTP의 특징 중 또 하나의 중요한 요소이다.

각각의 HTTP 통신은 데이터를 주고 받기위한 각가의 데이터 요청이 서로 독립적으로 관리가 된다.
덕분에 서버는 세션과 같은 별도의 추가 정보를 관리할 필요가 없어지며, 수많은 요청을 처리하느라 서버에 걸리는 부하에 대해 걱정을 더는 성능 상의 이점을 얻을 수 있다.

또한 독립적이기 때문에 과거의 요청 혹은 응답에 대해선 알 수 없다.
이 때문에 오가는 통신마다 필요한 모든 정보를 담아 요청해야 한다.


HTTP의 구조

위에 서술한 것 처럼 HTTP는 요청과 응답으로 이루어져 있다고 했다. 그럼 요청메세지와 응답메세지는 각각 어떻게 구성되어 있을까?

1. Request 메세지 구조
GET /main/login HTTP1.1

Host: sanha.com
Connection: keep-alive

{
	"user_email": "example@gmail.com"
	"user_password": "sanha"
}

요청은 크게 세부분을 이루어져 있다.

첫번째 줄은 Starter line으로 어떠한 요청을 하는지를 담고 있다.

HTTP의 요청 메소드에는 GET, POST, PUT, DELETE 등이 있다.

*** 대표적인 요청 메소드
GET : 서버에게 데이터 요청
POST : 클라이언트에서 데이터를 서버에게 보냄 (데이터의 생성, 수정, 삭제에 사용)
PUT : 서버에게 데이터 생성 요청
DELETE : 서버에게 데이터를 삭제 요청

두번째 부분은 header이며 요청에 대한 추가 정보를 담고 있다.
JSON과 비슷하게 Key:Value 형태로 이루어져 있다.

세번째 부분은 body이며 데이터가 담겨있는 부분이다.
예를 들어 로그인을 할 때, 유저의 아이디와 패스워드를 담아 보내는 부분이라고 생각하면 된다.
보낼 필요가 없는 경우에는 생략될 수도 있다.

2. Response 메세지 구조

응답도 요청과 마찬가지로 세부분으로 이루어져 있다.

첫번째 줄은 Starter line으로 어떠한 응답을 하는지를 담고 있다.
예를 들어 HTTP/1.1 200 SUCCESS인 경우, 'HTTP1.1버전으로 응답했고 요청에 대해 성공적으로 응답하여 200 상태 코드를 보낸다'라는 뜻이다.

두번째 부분은 header이며 요청과 마찬가지로 응답에 대한 추가 정보를 담고 있다.
JSON과 비슷하게 Key:Value 형태로 이루어져 있다.

세번째 부분은 body이며 데이터가 담겨있는 부분이다.
일반적으로 요청의 body와 동일하며 생략될 수도 있다.
JSON의 형태로 전달되는 경우가 많다.


대표적인 HTTP 상태코드

1. 2xx - 성공
  • 200 : GET 요처에 대한 성공
  • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
  • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환
2. 3xx - 리다이렉션
  • 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
  • 303 : See Other, 요청한 자원이 임시 주소에 존재
3. 4xx - 클라이언트 에러
  • 400 : Bad Request, 잘못된 요청
  • 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
  • 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
  • 404 : Not Found, 요청한 자원이 서버에 없음
4. 5xx - 서버 에러
  • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우
profile
Web Developer / Composer

0개의 댓글