Post

HTTP Header

HTTP Header

CTF나 워게임을 풀다 보면 HTTP Header에 많은 정보들이 들어있다.

HTTP Header에 대해서 제대로 공부해 보면 좋을 것 같다. Header를 공부하기 전에 HTTP Message를 공부해보자




1. HTTP Message

HTTP Message는 클라이언트와 서버 사이 데이터가 교환 되는 방식이다. 클라이언트에서 서버로의 reqeust 와 서버에서 클라이언트로의 response 두 가지 종류가 있다.

Untitled

Message는 start line, Message Header field, Header field의 끝을 알려주는 빈 줄, body로 이루어져 있다.

서버는 Request Message의 start line이 들어오기 전까지의 모든 CRLF를 무시한다.

 ※CR(Carraige Return, \r), LF(Line Feed, \n)

​


​

2. HTTP Header

​

HTTP Header는 크게 4가지로 분류된다.

  • General Header
  • Request Header
  • Response Header
  • Entity Header

​

General Header

request 와 response 에 모두 해당하지만 전송되는 body값과는 관련이 없는 Header

​HeaderDescription
 Cache-Controlrequest / response 체인의 모든 캐싱 메커니즘 제어         
 Connectionclose : 메세지 교환 후 tcp통신 종료
Keep-Alive : 메세지 교환 후 tcp통신 유지

​

Request Header

Message를 전달하는 client에 관한 정보들을 포함하는 Header

HeaderDescription​
Accept응답시 허용되는 미디어 유형을 지정. 앞에 있는 미디어 유형일수록 우선적으로 받음
아래 특징들은 Accept header의 모든 부속 속성에서도 사용

- * 은 쿼리문의 *처럼 모든 범위를 표현 (*/* 은 모든 미디어타입, type/*은 type의 모든 subtype)

- 파라미터 q는 0~1 의 숫자로 해당 media range에 대한 선호도를 나타낸다. 기본값은 1이다 (text/html; q=0.8, */*; q=0.9)
 
Accept-Charset클라이언트가 이해할 수 있는 Charset과 선호도 표기. 서버는 Content-Type로 선택된 charset 전달 
Accept-Language클라이언트가 이해할 수 있는 언어와 선호도를 표기 (Accept-Language: ko-KR,ko;q=0.9, en-US;q=0.8) 
Accept-Encoding클라이언트가 처리할 수 있는 압축 알고리즘과 그 선호도를 표기 (Accept-Encoding: br;q=1.0, gzip;q=0.8) 
Authorization서버에게 허용된 사용자임을 증명 Authorization: <type> <credentials> 형태
<type> = basic :  기본적 타입이며 “id:password”를 base64 인코딩
<type> = bearer :  JWT 또는 OAuth에 대한 토큰 사용
 
Host요청자의 host명 port번호 
User-Agent요청자의 소프트웨어 정보 
Cookie서버에 전달되는 Cookie값 
Referer현재 요청을 보내는 페이지의 주소 

​

Response Header

서버에 대한 정보와 Request-URI로 식별된 리소스에 대한 추가 액세스에 대한 정보를 제공

HeaderDescription
Server서버 소프트웨어 정보
Cache-Control캐시 관리에 관한 정보
Set-Cookie세션 쿠키 정보 전달

​

Entity Header

엔티티 본문에 대한 메타정보 정의

HeaderDescriprion
Content - [부속속성]Encoding, Length, Language 등 전달되는 데이터에 관한 다양한 정보
Expires응답이 오래된 것으로 간주되는 날짜/시간을 제공

​

기본적으로 자주 보이는 헤더들만 정리했다. 이외의 다양한 헤더들은 필요할 때 구글링을 해보도록 하겠다.

참고 : https://datatracker.ietf.org/doc/html/rfc2616#

This post is licensed under CC BY 4.0 by the author.