웹개발

HTTP(Hypertext Transfer Protocol)란?

티베트 모래여우 2020. 10. 23. 00:09
반응형

HTTP란?

HTTP는 Hypertext Transfer Protocol의 줄임말웹 상에서 브라우저와 서버가 데이터를 주고 받을때 사용하는 *프로토콜입니다. 이름에 Hypertext가 포함되어 있긴 하지만 사실 Hypertext 뿐만 아니라 텍스트, 미디어 등의 데이터도 전송할 수 있습니다.

(*프로토콜 : 통신 규약이라는 뜻으로 데이터를 주고 받는 방식에 대한 규칙 정도로 이해하시면 됩니다.)

URL 앞에 붙어있는 그 http 맞습니다.

 


특징

1. 요청과 응답

- HTTP 통신은 클라이언트의 요청(Request)과 그에 대한 서버의 응답(Response)으로 이루어집니다.

우리가 지금 보는 HTML 웹 페이지도 브라우저의 요청에 따라 서버가 응답한 결과물입니다.

2. TCP/IP 통신 위에서 동작

- TCP/IP 통신 위에서 동작하며 80번 포트를 사용합니다.

3 어떤 종류의 데이터라도 전송 가능

- 상술했듯이 HTML문서 말고도 단순 텍스트나 이미지, 오디오 등의 미디어 데이터도 전송 가능합니다.

4. Connectionless(비연결성)

- Connectionless는 한 가지 요청에 대한 응답을 받으면 그 연결을 끊어버리는 것을 의미합니다. 연결에 대한 리소스를 줄일 수 있는 장점이 있지만 같은 클라이언트에서 오는 요청도 계속 연결/해제 해야 한다는 단점이 있습니다.

5. Stateless(무상태)

- Connectionless의 특징을 가지기 때문에 서버는 클라이언트를 식별하지 못합니다. 따라서 같은 클라이언트에서 계속 요청을 보내더라도 그 요청은 각각 독립적으로 처리됩니다.

반가워요. 우리 초면이죠?


HTTP Method

우리가 HTTP를 이용하여 클라이언트에서 서버로 요청을 보낼 때 어떠한 목적으로 요청을 하는 것인지 정의를 내릴 수 있습니다. 예를 들면 조회(단순 열람)를 목적으로 하는지, 데이터 수정을 목적으로 하는지 등을 미리 정의내려서 요청을 보낼 수 있는데 이 때 HTTP Method라는 것을 사용합니다. 이는 HTTP Verbs라고 칭하기도 하며 주요 메소드는 다음과 같습니다.

이름

역할

GET

서버에게 데이터를 달라는 요청(열람)할 때 사용

HEAD

GET과 같지만 서버가 응답할 때 Body 없이 Header만 리턴

POST

서버에게 데이터를 전송하는 요청할 때 사용

PUT

서버에서 요청 *URI의 데이터를 수정하거나 새로 추가하도록 요청할 때 사용

PATCH

서버의 데이터를 일부 수정할 때 사용

DELETE

서버에서 요청 *URI​​의 데이터를 삭제하도록 요청할 때 사용

TRACE

클라이언트로부터 수신한 요청을 응답에 포함시켜서 전달
(디버깅용)

OPTIONS

서버에서 특정 데이터가 어떤 Method를 지원하는지 알아볼 때 사용

(* URI : 인터넷에서 사용되는 자원 식별자로, 쉽게 생각하면 URL의 상위 개념입니다.)

잠시 PUTPATCH 메소드에 대해 짚고 넘어가자면

둘 다 데이터를 수정할 때 사용하는 메소드는 맞지만 용도가 조금 다릅니다.

PUT은 요청시에 수정을 원하는 데이터에 대한 필드를 모두 채워서 보내야 하지만

PATCH는 일부 필드만 채워서 보내도 괜찮습니다.

예를 들어 다음과 같은 필드가 있고, 저기서 성별만 남자로 수정하길 원한다고 해 봅시다.

{
    name: "왕춘삼",
    gender: "중성",
}

이 경우 PUT을 사용하면 name필드와 gender필드를 모두 채워서 보내야 합니다.

하지만 PATCH를 사용하면 gender필드만 채워서 보내도 수정이 가능합니다.


HTTP 상태 코드

HTTP Status 코드라고 불리기도 하며 서버가 응답을 전송할 때 같이 전송하는 코드입니다.

3자리 숫자로 이루어져 있으며 요청에 대한 서버의 상태를 나타내줍니다.

앞 자리는 1~5의 숫자 중 하나이며 이 중 4와 5는 비정상적인 상황, 즉 오류가 있음을 의미합니다.

응답 코드는 종류가 꽤 많아서 대표적으로 몇 가지만 적어보겠습니다.

1XX - 정보 응답

· 100 Continue : 현재 요청이 진행중이며 문제 없다는 것을 의미합니다.

2XX - 성공 응답

· 200 OK : 요청이 성공적으로 완료되었음을 의미합니다.

· 201 Created : 요청이 성공적으로 완료되었고 새로운 리소스가 생성되었음을 의미합니다. 보통 POST아니면 PUT 요청 뒤에 따라옵니다.

3XX - 리다이렉션 메시지

· 300 Multiple Choice : 요청에 대해 하나 이상의 응답이 가능함을 의미합니다.

· 301 Moved Permanently : 요청한 리소스의 URI가 변경되었음을 의미합니다.

4XX - 클라이언트 에러 응답

· 400 Bad Request : 잘못된 문법으로 인해 서버가 요청을 이해하지 못했음을 의미합니다.

· 401 Unauthorized : 요청을 보낸 클라이언트가 인증되지 않았음을 의미합니다.

· 403 Forbidden : 요청을 보낸 클라이언트가 리소스에 접근할 권리가 없음을 의미합니다.

· 404 Not Found : 서버가 요청받은 리소스를 찾을 수 없음을 의미합니다.

· 408 Request Timeout : 요청 중 시간이 초과되었음을 의미합니다.

· 418 I'm a Teapot : 서버는 커피를 찻 주전자에 끓이는 것을 거절합니다.

5XX - 서버 에러 응답

· 500 Internal Server Error : 서버에 문제가 있지만 서버가 해당 문제를 처리할 줄 모름을 의미합니다.

· 502 Bad Gateway : 서버가 게이트웨이로부터 잘못된 응답을 받았음을 의미합니다.

· 503 Service Temporarily Unavailable : 일시적으로 서버를 이용할 수 없음을 의미합니다. 보통 유지보수를 위해 서버를 잠시 중단시켰거나 과부하로 인한 다운이 원인입니다.

· 504 Gateway Timeout : 서버가 게이트웨이 역할을 하고 있으며 다른 서버로부터 적시에 응답을 받지 못했음을 의미합니다.

이 외의 응답 코드는 MDN문서를 참고해주세요.

 

HTTP 상태 코드

번역이 완료되지 않았습니다. Please help translate this article from English HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제

developer.mozilla.org

..혹은 인류의 지배자, 고양이 사진으로 응답 코드를 표현한 사이트를 참고하셔도 될 것 같습니다.

 

HTTP Cats

API for HTTP Cats

http.cat

 

반응형