들어가며
HTTP는 Hyper-Text Transfer Protocol over TCP/IP로서 우리가 흔히 실생활에서도 많이 사용을 하고 있습니다. 예를 들어서 인터넷에 접속하면 우리는 HTTP요청을 하고, 그 요청에 대한 응답을 받는형태로 인터넷을 통해 정보를 주고 받고 있습니다. 그렇다면 HTTP란 무엇이며 특징은 어떤 것이 있는지 알아보겠습니다. 또한 Request와, Response의 Method, Structure, 그리고 Response Code에 대해서 설명하겠습니다.
특징
- Connectionless : Connectionless로는 예를들어 우리가 채팅 프로그램, 게임을 만든다면 데이터를 주고받는 통로를 만든 후에 즉, 연결을 유지하면서 통신을 하게 됩니다. 하지만 HTTP는 연결을 유지하지 않은체 데이터를 주고 받을 수 있습니다.
- Stateless : Stateless는 요청을 독립적인 트랜잭션으로 취급하는 통신을 의미합니다. 즉 이전 요청과 다음 요청간에 관계가 없기 때문에 저장공간을 동적으로 따로 할당할 필요가 없기 때문에 서버에서는 요청간에 관계에 대해서 고려할 필요가 없습니다. 그렇기 때문에 클라이언트가 트랜잭션 도중 다운이 되어도 서버에서는 이를 처리할 필요가 없게 됩니다. 하지만 이 방법은 요청마다 추가 정보를 포함해야 하기 때문에, 요청시에 항상 해석해야하는 단점이 있습니다.
- Request-Response (또는 Request-Reply) : Request-Response는 request-reply라고도 불리우고 있는데, 이 방법은 말 그대로 한 컴퓨터에서 어떤 데이터를 요청을 보내면, 다른 컴퓨터에서는 그 요청에 대한 응답을 보내는 방식을 의미합니다. 웹페이지야 말로 request-response의 예라고 할 수 있습니다.
Http의 Request Structure
Division |
Example |
Request Line |
GET /index.html HTTP/1.1 |
Request Header |
Host:www.example.com:80 User-Agent:Mozilla/5.0 Accept:text/html Accept-Language:en-us Accept-Encoding:gzip, delate Connection:keep-alive |
An Empty line |
<carriage return> |
Optional Message Body |
POST Data |
Request Methods
Request Method |
Description |
GET |
지정된 URL의 정보를 가져온다. |
POST |
지정된 URL로 Body에 포함된 정보를 제출한다. |
PUT |
지정된 URL에 저장될 정보를 전달한다. |
DELETE |
지정된 Resource를 삭제한다. |
HTTP Response Structure
Division |
Example |
Response line |
HTTP/1.1 200OK |
Response Header |
Host:www.example.com:80 |
An Empty line |
<CR><LF>, carriage return |
Message Body |
HTML Contents |
Response Status Code
Range |
Status Code |
Description |
1xx |
|
|
2xx |
200 |
OK |
3xx |
301 |
Moved Permanently |
302 |
Found |
|
304 |
Not Modified |
|
4xx |
400 |
Bad Request |
401 |
Unauthorized |
|
403 |
Forbidden |
|
404 |
Not Found |
|
5xx | 500 | Internal Server Error |
503 | Service Unavailable |
Multipurpose Internet Media Extension Type
Internet Media Type
Content-type
syntax
<type>/<subtype>;[<parameter-name>=<parameter-value>]
example
Content-Type : text/html;charset=UTF-8
'Programming > Web' 카테고리의 다른 글
[Django] 03.데이터베이스 연동하기(migration, model 생성) (0) | 2017.12.17 |
---|---|
[Django] 04. 어플리케이션 View 만들기 (0) | 2017.12.17 |
[Django] 02.프로젝트 만들기 및 시작하기 (간단한 설문조사 어플리케이션 만들기) (0) | 2017.12.17 |
[Django] 01. 설치 및 환경 설정 (0) | 2017.12.17 |
[Web] React 시작하기 (0) | 2017.02.07 |