HTTP 프로토콜 기초 개념, 용어를 전체적으로 정리해보았다.
HTTP 기초 개념
- HTTP는 HTML 문서를 전송받기 위해 만들어진 응용 프로그램 계층(L7)의 통신 프로토콜이다.
(이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Overview)
- 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.
- ASCII로 인코딩된 텍스트 정보이다.
- TCP, IP 프로토콜에서는 단위 데이터가 16진수로 이루어졌던 것과 달리 HTTP는 사람이 읽고 쉽게 이해할 수 있다.
- HTTP 프로토콜 초기 버전과 HTTP/1.1에서는 클라이언트와 서버 사이의 연결을 통해 공개적으로 전달되었지만, HTTP/2에서는 최적화와 성능 향상을 위해 HTTP 프레임 별로 캡슐화하여 보낸다고 한다.
HTTP 메시지
HTTP 메시지 타입으로는 요청(request)과 응답(response)이 있다.
- HTTP 메시지의 start line과 header를 묶어서 요청 헤드(head)라고 부르고, payload를 body이라고 부른다.
(아래 내용은 HTTP/1.x 메시지 기준 설명이다.)
요청 메시지의 구성
- Method: HTTP 메서드
- Path: 리소스의 URL.
- 프로토콜(http://), 도메인, TCP 포트 등 문맥상 명백한 요소들을 생략한 리소스의 URL을 표시한다.
- Version of the protocol: HTTP 프로토콜의 버전
- Headers: 서버에 대한 추가 정보를 전달하는 헤더들을 선택적으로 포함한다.
- Body:
POST
처럼 응답과 비슷한 몇몇 메서드들은 전송된 리소스를 바디에 포함한다.
응답 메시지의 구성
- Version of the protocol: HTTP 프로토콜의 버전
- Status code: 요청이 성공했는지 여부와 그 이유를 나타내는 상태 코드
- Status message: 상태 코드에 대한 간단한 설명
- Headers: 요청 메시지의 헤더와 같음
- Body: 가져오는 리소스를 담은 바디(본문). 선택적으로 존재함.
HTTP header
- 헤더의 기본 구조:
대소문자 구분 없는 문자열 : 내용
형식으로 한 줄로 구성된다. (내용 부분에 오는 값은 헤더마다 다르다.) - 다양한 종류의 요청 헤더가 있다.
- General 헤더: Via
- Entity 헤더 : Content-Length와 같이 요청 본문에 적용되는 헤더 (요청 본문이 없을 경우 전송되지 않음)
- Request 헤더: Accept-Type, Accept-Language, Referer ..
- Response 헤더: Vary, Accept-Ranges
요청 헤더 예시
응답 헤더 예시
HTTP body
모든 요청/응답에 본문이 들어가지는 않는다.
GET
, HEAD
, DELETE
, OPTIONS
처럼 리소스를 가져오는 요청은 보통 본문이 필요가 없다.
HTML 폼 데이터를 포함하는 POST
요청일 경우 본문을 포함한다.
- 본문의 종류는 넓게 보면 아래와 같이 분류할 수 있다.
- 단일-리소스 본문(single-resource bodies)
- 헤더 두 개(
Content-Type
와Content-Length
)로 정의된 단일 파일로 구성됨
- 헤더 두 개(
- 다중-리소스 본문(multiple-resource bodies)
- 멀티파트 본문으로 구성되는 다중 리소스 본문에서는 파트마다 다른 정보를 지니게 됨
- 단일-리소스 본문(single-resource bodies)
- 각 문서와 함께 올바른 MIME 타입을 전송하도록 정확히 설정하는 것이 중요함 (MIME 타입만이 문서 타입 정보를 전달하는 유일한 방법은 아니지만, 웹에서는 가장 적절)
주요 응답코드
- 200 OK
- 요청이 정상적으로 처리됨
- 201 CREATE
- 요청에 대한 새로운 자원을 생성하는 데 성공함
- 301 Moved permanently
- 302 Found
- 400 Bad request
- HTTP 규약에 맞지 않는 요청
- 403 Forbidden
- 권한이 없거나 잘못된 파일 실행 접근시도
- 404 Not found
- 500 Internal Server error
- 내부 오류 때문에 요청을 처리할 수 없음
참고 자료 및 이미지 출처: https://developer.mozilla.org/ko/docs/Web/HTTP
반응형
'공부 > Web' 카테고리의 다른 글
[웹] SOP, CORS 정의와 대응 방법 (0) | 2023.05.24 |
---|