HTTP
HyperText Transfoer Protocol 이라고 하며, HTML 문서를 교환하기 위해 만들어진 protocol (통신 규약)을 의미한다. TCP/IP 기반으로 되어있으며 request와 response 구조로 되어있다. 주로 http request을 서버에 보내고, http response을 보내는 구조로 이루어 진다. 클라이언트와 서버의 모든 통신은 요청과 응답으로 이루어 진다.
Request Message
HTTP Request Message는 공백을 제외하고 3가지로 나누어진다.
- Start Line
- Headers
- Body
Start line
HTTP Request Meassge의 시작 라인으로, 3 가지 부분으로 구성되어 있다.
- HTTP method : HTTP 메소드
- Request target : 보내고자 하는 목표 주소
- HTTP version : version에 따라 Reuqest 구조나 데이터가 다를 수 있기에 version 을 명시합니다.
Headers
request에 대한 추가 정보를 담고 있는 부분이다. 예를 들어, request 메세지 body의 총 길이 등 key:value 형태로 구성되어 있다.
Host: google.com
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive
...
Host | 요청하려는 서버 호스트 이름과 포트번호 |
User-agent | 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다. |
Referer | 바로 직전에 머물렀던 웹 링크 주소 |
Accept | 클라이언트가 처리 가능한 미디어 타입 종류 나열 |
If-Modified-Since | 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다. |
Authorization | 인증 토큰을 서버로 보낼 때 쓰이는 Header |
Origin | 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다. |
Cookie | 쿠키 값이 key-value로 표현된다. |
Body
전송하고 있는 데이터를 담는 부분이며 데이터가 없다면 body 부분도 비어있다. 보통 post 요청일 경우 HTML 폼 데이터가 포함되어 있다.
POST /test HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3
{
"test_id": "tmp_1234567",
"order_id": "8237352"
}
Response Message
HTTP Response Message는 request와 동일하게 공백을 제외하고 3가지로 이루어진다.
- Status Line
- Headers
- Body
Status line
HTTP Response의 상태를 간략하게 나타내주는 부분으로 3 가지로 구성된다.
- HTTP version
- Status Code
- Status Text
HTTP/1.1 200 OK
[HTTP version] [Status Code] [Status Text]
Headers, body
Response headers, body 와 기능은 동일하나 response에서만 사용되는 header 값들이 있을수 있다.
'Computer Theory > Web' 카테고리의 다른 글
RDB와 NOSQL DB (0) | 2023.12.09 |
---|---|
브라우저 작동 방식 (0) | 2023.12.09 |
인터넷의 역사와 작동방식 (0) | 2023.12.09 |
웹 인증 (쿠키, 세션, 토큰)과 JWT (0) | 2023.08.28 |
SSH로 원격 서버에 접속하기 (0) | 2023.08.19 |