HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다. 또한 www에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰이며, 오늘날 거의 모든 웹 앱에서 사용되고 있다
HTTP 프로토콜은 Request/Response 동작에 기반하여 서비스 제공한다는 특징을 가지고 있다.
연결 수립, 동작, 연결 해제의 단순함이 특징이다. (하나의 URL은 하나의 TCP 연결)
하지만 HTTP 1.0은 단순 동작(연결 수립, 동작, 연결 해제)이 여러 번 반복되어 동신 부하 문제가 발생한다는 단점이 있다. (데이터 여러 개 받으려면 연결-데이터-해제를 여러 번 했어야함)
HTTP1.1은 연결의 지속성을 가지고 있기 때문에 HTTP 1.0은 단순 동작이 여러 번 반복되어 생기는 부하 문제가 없다. (HTTP는 기본적으로 TCP를 이용하여 통신하는데, HTTP 1.0은 TCP 세션을 유지하지 않고, HTTP 1.1은 TCP 세션을 유지한다.)
Request Line : 요청 대상을 가리키는 문자
Request Line의 구조는 {요청 타입}{공백}{URI}{공백}{HTTP 버전}으로 이루워져 있다.
메소드 종류 (요청 방식) | 설명 |
---|---|
GET | Client가 Server로부터 문서를 읽어오려 할 때 사용 |
HEAD | Client가 문서가 아닌 문서에 대한 특정 정보를 원할 경우 사용 |
POST | Client가 Server에게 어떤 정보를 전송할 때 사용 |
PUT | Client가 Server에 특정 자원을 업로드할 떄 사용 |
PATCH | PUT과 비슷함, 기존 파일에서 변경 사항만을 포함 |
COPY | 파일을 다른 위치로 복사하기 위해 사용 |
MOVE | 파일을 다른 위치로 이동하기 위해 사용 |
DELETE | Server에서 문서를 제거하기 위해 사용 |
LINK | 문서에서 다른 위치로의 링크를 생성하기 위해 사용 |
UNLINK | LINK Method에 의해 생성된 링크를 삭제하기 위해 사용 |
OPTION | Client가 Server에게 사용 가능한 옵션을 질의하기 위해 사용 |
GET과 POST를 제외한 대부분의 메소드는 보안 문제 때문에 사용 못 하도록 막는다.
Headers : HTTP 요청 프로토콜의 다양한 옵션이 들어가는 공간
일반 헤더헤더 종류 | 설명 |
---|---|
Content-Length | 메시지 바디 길이를 나타낼 때 쓰인다. |
Content-Type | 메시지 바디에 들어있는 컨텐츠 종류 |
헤더 종류 | 설명 |
---|---|
Cookie | 서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할을 한다. |
Host | 요청된 URL에 나타난 호스트명을 상세하게 표시 |
User-Agent | Client Program에 대한 식별 가능 정보를 제공 |
헤더 종류 | 설명 |
---|---|
Server | 사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함 |
Set-Cookie | 쿠키를 생성하고 브라우저에 보낼 때 사용, 해당 쿠키 값을 브라우저가 서버에게 다시 보낼 때 사용한다. |
Body : 보내려는 데이터 (Body는 없을 수도 있다.)
Status Line : 요청 대상을 가리키는 문자
Status Line의 구조는 {HTTP 버전}{공백}{상태 코드}{공백}{상태 문구}으로 이루워져 있다.
상태 코드는 아래와 같다.
상태 코드 종류 | 상태 문구 | 설명 |
---|---|---|
200 | OK | Client의 요청이 성공했다는 것을 나타낸다. |
403 | Forbidden | Client가 권한이 없는 페이지를 요청했을 때 |
404 | Not Found | Client가 서버에 없는 페이지를 요청했을 때 |
500 | Internal Server Error | Server의 일부가 멈췄거나 설정 오류가 발생 |
503 | Service Unavailable | 최대 Session 수를 초과했을 때 |
Headers : HTTP 응답 프로토콜의 다양한 옵션이 들어가는 공간
일반 헤더헤더 종류 | 설명 |
---|---|
Content-Length | 메시지 바디 길이를 나타낼 때 쓰인다. |
Content-Type | 메시지 바디에 들어있는 컨텐츠 종류 |
헤더 종류 | 설명 |
---|---|
Cookie | 서버로부터 받은 쿠키를 다시 서버에게 보내주는 역할을 한다. |
Host | 요청된 URL에 나타난 호스트명을 상세하게 표시 |
User-Agent | Client Program에 대한 식별 가능 정보를 제공 |
헤더 종류 | 설명 |
---|---|
Server | 사용하고 있는 웹서버의 소프트웨어에 대한 정보를 포함 |
Set-Cookie | 쿠키를 생성하고 브라우저에 보낼 때 사용, 해당 쿠키 값을 브라우저가 서버에게 다시 보낼 때 사용한다. |