티스토리 뷰
반응형
HTTP 메시지는 시작 줄, 헤더, 본문 3부분으로 구성된다.
본문은 필요에 따라 있을 수도, 없을 수도 있다.
헤더의 Content-Length 필드는 본문의 크기를 표시한다.
요청 메시지 구조
<메서드> <요청 URL> <버전>
<헤더>
<본문>
응답 메시지 구조
<버전> <상태 코드> <사유 구절>
<헤더>
<본문>
요청 메시지와 응답 메시지는 시작 줄을 제외하고 형태가 같다.
- 메서드 - 이 요청이 서버에게 바라는 리소스에 대한 동작
- 요청 URL - 요청 대상이 되는 리소스의 위치이다.
- 버전 - 이 메시지의 HTTP 버전이다.
- 상태 코드 - 요청에 대한 처리의 결과를 간략하게 나타낸다. 세자리 숫자로 구성된다.
- 사유 구절 - 숫자로 된 상태 코드의 의미를 사람이 이해하도록 설명하는 짧은 문구이다. 오로지 사람이 이해하는 용도로 써야 하므로, HTTP/2.0 200 OK, HTTP/2.0 200 NOT OK는 동등하게 처리되어야 한다.
- 헤더 - 해당 메시지에 대한 추가 정보를 담는다.
- 본문 - 임의의 데이터 블록이며, 본문은 비어있을 수 있다.
아래는 요청 메시지의 예시다.
GET /search?q=h&hl=ko HTTP/1.1
Host:www.google.com
// 헤더 다음 줄은 CRLF가 있어야 한다.
메서드
HTTP 요청의 시작줄은 메서드로 시작하며, 이는 클라이언트가 서버의 리소스에 대해 어떤 동작을 원하는지 설명한다.
GET은 서버에서 문서를 가져오며, POST는 서버가 처리하길 원하는 데이터를 보낸다.
확장 메서드는 HTTP 명세 외에 추가로 구현한 추가 메서드이다.
메서드 | 설명 | 본문 유무 |
GET | 서버에서 문서를 가져온다. | 무 |
HEAD | GET과 같지만, 문서 없이 헤더만 가져온다. | 무 |
POST | 서버가 처리해야 할 데이터를 보낸다. | 유 |
PUT | 서버에 요청 메시지의 본문을 저장한다. | 유 |
DELETE | 문서를 제거한다. | 무 |
안전한 메서드
임의의 메서드를 사용해 요청을 했을 때, 이 요청이 서버에 어떤 작용도 없음을 의미한다. 다만, 정말로 서버에 아무런 작용도 없음을 보장할 수는 없다.
상태 코드
메서드가 서버에 어떤 동작을 요청했는지를 알려준다면, 상태 코드는 클라이언트에게 동작을 어떻게 수행했는지를 알려준다.
클라이언트가 서버에 리소스에 대한 동작을 요청하면, 물론 그 요청이 모두 성공하면 좋겠지만, 그럴 수는 없다.
요청한 리소스가 발견되지 않았거나, 권한이 없거나, 리소스가 옮겨졌거나, 서버에 오류가 발생했을 수도 있다.
상태 코드는 세 자리 숫자로 표현된다. 이 중 백의 자리 숫자에 따라 분류한다.
백의 자리 | 분류 |
1 | 정보 |
2 | 성공 |
3 | 리다이렉션 |
4 | 클라이언트 에러 |
5 | 서버 에러 |
아래는 몇 가지의 상태 코드에 대한 설명이다.
상태 코드 | 사유 구절 | 의미 |
200 | OK | 정상적인 응답이며, 요청된 리소스를 포함함. |
201 | Created | PUT 메서드에 대해, 리소스 생성이 완료됨. |
303 | See Other | 클라이언트에게 리소스를 다른 곳에서 가져와야 한다고 알림. 위치를 Location 헤더에 담아 응답. |
400 | Bad Request | 잘못된 요청임을 알림. |
401 | Unauthorized | 클라이언트에게 인증을 요구함. |
404 | Not Found | 요청 URL 위치에 리소스가 없음을 알림. |
408 | Request Timeout | 요청을 완수하기에 시간이 너무 많이 걸려 연결을 끊음. |
409 | Conflict | 요청이 리소스에 대한 충돌을 일으킴. |
500 | Internal Server Error | 요청을 처리할 수 없게 만드는 에러 발생을 알림. |
반응형
'CS > HTTP' 카테고리의 다른 글
[HTTP] 통합점 (게이트웨이, 터널, 릴레이) (0) | 2023.06.29 |
---|---|
[HTTP] HTTP 캐시 (0) | 2023.06.28 |
[HTTP] HTTP 커넥션 관리 (0) | 2023.06.28 |
[HTTP] 리소스 식별자 (URI, URL, URN) (0) | 2023.06.26 |
[HTTP] HTTP(Hypertext Transfer Protocol) (0) | 2023.06.26 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 교환 시스템
- OSI 7계층
- 통합점
- ECN 패킷
- 세션 계층
- Service Primitive
- 링크 상태 라우팅
- 와일드카드 마스크
- 네트워크
- HTTP
- 데이터링크
- 혼잡
- 전송 계층
- 사설 IP 주소
- 서비스 프리미티브
- 네임 서버
- IP
- 오류 제어
- 네트워크 계층
- 가상 회선
- 리키 버킷
- Internetworking
- 거리 벡터 라우팅
- 데이터링크 계층
- TTL
- 표현 계층
- 세션 연결
- 동기점
- 포트 주소
- 라우팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함