HTTP

Haiseong Jeong·2022년 10월 11일
1
post-thumbnail

HyperText Transfer Protocol

직역해보면 '하이퍼텍스트를 전송하는 프로토콜'이다.

우선 프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계를 뜻한다. 컴퓨터 사이의 약속이다.

하이퍼텍스트는 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. 쉽게말해 링크를 타고 다니면서 다른 문서로 이동할 수 있는 문서다. HTML의 <a> 태그를 생각하면 된다. HTML이 HyperText Markup Language이므로 하이퍼 텍스트는 HTML 문서라고 생각하면 된다.

정리해보면 HTML 문서를 전송하는 약속이다. 초기에는 웹 브라우저와 웹 서버 간의 커뮤니케이션을 위해 디자인되어 HTML과 같은 하이퍼미디어 문서를 주로 전송했다. 하지만 최근에는 Plain text, JSON, XML 등 다양한 형태의 정보도 전송하는 프로토콜이 되었고 모바일 애플리케이션 및 IoT 등과의 커뮤니케이션과 같이 다른 목적으로도 사용되고 있다.

Request와 Response

클라이언트는 서버에게 필요한 정보를 요청한다. 이 요청을 Request라고 한다. 요청을 받은 서버는 클라이언트에게 응답을 보낸다. 응답은 Response라고 한다.


Request는 다음과 같이 구성된다. 1번째 줄에 HTTP 요청 메서드를 맨 앞에 적고 그 뒤에는 path, 그 뒤에는 프로토콜의 종류와 버전을 적는다. 2번째 줄부터는 헤더를 적는다. 헤더에는 요청하는 정보 등 요청에 필요한 정보가 들어간다.




Response는 다음과 같다. 1번째 줄에 프로토콜의 종류와 버전, HTTP 상태 코드, HTTP 상태 메시지가 들어간다. 2째줄 이후에 Reponse Headers가 들어간다.

HTTP 요청 메서드

요청 메서드에는 여러 종류가 있다. 메더드는 각 역할에 맞는 메서드를 사용하는것이 좋다. 사실 개발을 하다보면 GET과 POST 메서드만 사용되는 경우가 많으나 각 목적에 맞는 메서드를 사용하는게 좋다.

GET

특정 리소스를 받기 위한 요청이다. 따라서, 리소스의 생성, 수정 및 삭제 등에 사용해서는 안된다.

POST

리소스를 생성하거나 컨트롤러를 실행하는 데 사용한다.

PUT

변경 가능한 리소스를 업데이트하는 데 사용되며 항상 리소스 식별 정보를 포함해야 한다.

PATCH

변경 가능한 리소스의 부분 업데이트에 사용되며 항상 리소스 식별 정보를 포함해야 한다.

DELETE

특정 리소스를 제거하는 데 사용한다.

클라이언트가 본문 없이 리소스에 대한 헤더만 검색하는 경우 사용한다.

OPTIONS

클라이언트가 서버의 리소스에 대해 수행 가능한 동작을 알아보기 위해 사용한다.

HTTP의 특징

클라이언트 서버 구조

앞선 설명처럼 클라이언트와 서버 구조로 되어있다.

무상태 프로토콜 (Stateless)

서버가 클라이언트 상태를 보존하지 않는다. 이 특성으로 서버의 확장성이 높아진다. 하지만 클라이언트가 데이터를 추가적으로 보내야하는 문제가 생긴다.

비 연결성 (Connectionless)

연결을 유지하는 구조가 아닌 연결 상태를 유지하지 않는 구조다. 이 장점으로 여러 요청을 빠르게 응답을 할 수 있다. 하지만 트래픽이 많고 큰 규모의 서비스를 운영할 때는 비 연결성은 한계를 보인다.

사진출처

profile
나는 개발자다. 5000만큼 코딩한다.

0개의 댓글