해당 내용은 그림으로 배우는 Http&Network Basic 책내용을 정리한것 입니다.
1. HTTP 메세지 헤더
- HTTP 프로토콜의 요청과 응답에는 반드시 메세지 헤더가 포함된다
- 메세지 헤더에는 클라이언트가 서버가 요청, 응답시 처리하기 위한 정보가 들어있다.
- 이러한 정보의 대부분은 사용자가 직접 볼 필요는 없다.
- 리퀘스트의 HTTP 메세지는 메소드, URI, HTTP버전, HTTP 헤더필드 등으로 구성된다.
- 리스폰스의 HTTP 메세지는 HTTP 메세지, HTTP버전, 상태코드, HTTP 헤더필드 등으로 구성된다.
- 이러한 요소중 가장 다양한 정보를 가지고 있는 것이 HTTP 헤더필드 이다.
- 헤더필드는 요청과 응답 양쪽 모두 존재하는데, HTTP 메세지 정보를 가지고있다.
2. HTTP 헤더 필드
- HTTP 헤더필드는 중요한 정보를 전달한다
- 메세지 바디의 크기나 사용되고 있는 언어, 인증정보 등을 브라우저나 서버에 제공하기 위해 사용된다.
- HTTP 헤더필드의 구조
- HTTP 헤더필드는 헤더 필드명과 필드값 으로 구성되고 콜론(:) 으로 나뉜다.
- 헤더필드명 : 필드값 , Content-Type : text/html
- 하나의 필드에 여러개의 필드값을 가질수 있다.
- 4종류의 HTTP 헤더필드
- 일반적 헤더필드
- 리퀘스트 헤더필드
- 클라이언트에서 서버로 송신된 리퀘스트 메세지에 사용되는 헤더
- 리퀘스트의 부가적 정보와 클라이언트 정보, 리스폰스의 콘텐츠에 관한 우선순위 부가
- 리스폰스 헤더필드
- 서버에서 클라이언트로 송신한 응답 메세지에 사용
- 응답 정보와 서버의정보, 클라이언트의 추가정보 요구등을 부가
- 엔티티 헤더필드
- 응답, 요청 포함된 엔티티에 사용되는 헤더
- 콘텐츠 갱신시간 등 엔티티에 관한 정보
- HTTP/1.1 헤더필드 일람
헤더 필드명 | 설명 |
---|
Cache-Control | 캐싱 동작 지정 |
Connection | Hop-by-hop 헤터, 커넥션 관리 |
Date | 메세지 생성 날짜 |
Pragma | 메세지 제어 |
Trailer | 메세지의 끝에 있는 헤더의 일람 |
Transfer-Encoding | 메세지 바디의 전송 코딩 형식 지정 |
Upgrade | 다른 프로토콜에 업그레이드 |
Via | 프록시 서버에 관한 정보 |
Warning | 에러 통지 |
헤더 필드명 | 설명 |
---|
Accept | 유저 에이전트가 처리 가능한 미디어 타입 |
Accept-Charset | 문자셋 우선 순위 |
Accept-Encoding | 콘텐츠 인코딩 우선 순위 |
Accept-Language | 언어(자연어) 우선 순위 |
Authorization | 웹 인증을 위한 정보 |
Expect | 서버에 대한 특정 동작의 기대 |
From | 유저의 메일 주소 |
Host | 요구된 리소스의 호스트 |
If-Match | 엔티티 태그의 비교 |
If-Modified-Since | 리소스의 갱신 시간 비교 |
If-None-Match | 엔티티 태그의 비교(if-Match의 반대) |
If-Range | 리소스가 갱신되지 않은 경우에 엔티티의 바이트 범위의 요구를 송신 |
If-Unmodified-Since | 리소스의 갱신 시간 비교(If-Modified-Since의 반대) |
Max-Forwards | 최대 전송 홉 수 |
Proxy-Authorization | 프록시서버의 클라이언트 인증을 위한 정보 |
Range | 엔티티 바이트 범위 요구 |
Referer | 리퀘스트중의 URI를 취득하는 곳 |
TE | 전송 인코딩의 우선 순위 |
User-Agent | HTTP 클라이언트의 정보 |
헤더 필드명 | 설명 |
---|
Accept-Ranges | 바이트 단위의 요구를 수신할 수 있는지 없는지 여부 |
Age | 리소스의 지정 경과 시간 |
Etag | 리소스 특정하기 위한 정보 |
Location | 클라이언트를 지정한 URI에 리다이렉트 |
Proxy-Authenticate | 프록시 서버의 클라이언트 인증을 위한 정보 |
Retry-After | 리퀘스트 재시행의 타이밍 요구 |
Server | HTTP 서버정보 |
Vary | 프록시 서버에 대한 캐시관리 정보 |
WWW-Authenticate | 서버의 클라이언트 인증을 위한 정보 |
헤더 필드명 | 설명 |
---|
Allow | 리소스가 제공하는 HTTP 메소드 |
Content-Encoding | 엔티티 바디에 적용되는 콘텐츠 인코딩 |
Content-Language | 엔티티의 자연어 |
Content-Length | 엔티티 바디의 사이즈(단위:바이트) |
Content-Location | 리소스에 대응하는 대체 URI |
Content-MD5 | 엔티티 바디의 메세지 다이제스트 |
Content-Range | 엔티티 바디의 범위 위치 |
Content-Type | 엔티티 바디의 미디어 타입 |
Expires | 엔티티 바디의 유효기간 날짜 |
Last-Modified | 리소스의 최종 갱신 날짜 |
- HTTP/1.1 이외의 헤더필드
- 위의 표는 RFC2616에서 정의된 47종류
- 이외에 Set-Cookie, Content-Disposition와 같이 비표준 헤더 필드는 RFC4229 참고할것.
- End-to-end 헤더와 Hop-by-hop 헤더
- HTTP 헤더필드는 캐시와 비캐시 프록시의 동작을 정의하기 위해 두가지 카테고리로 분류된다.
- End-to-end
- 이 카테고리에 분류된 헤더는 요청이나 응답의 최종 수신자에게 전송된다
- 캐시에서 구축된 응답중 보존되어야하고, 다시 전송되도록 설계됐다.
- Hop-by-hop
- 이 카테고리 분류된 헤더는 한번 전송에 대해서만 유효하고 캐시와 프록시에 의해 전송되지 않는것도 있다.
- Hop-by-hop 헤더는 Connection 헤더필드에 열거한다.
- HTTP/1.1 에서는 8개의 Hop-by-hop 헤더필드가 있고 나머지는 End-to-end 헤더로 분류 된다
- Connection, Keep-Alive, proxy-Authenticate, Proxy-Authorization, Trailer, TE, Transfer-Encoding, Upgrade
3. HTTP/1.1 일반 헤더 필드
4. 리퀘스트 헤더 필드
5. 리스폰스 헤더 필드
6. 엔티티 헤더 필드
7. 쿠키를 위한 헤더 필드
8. 그 이외의 헤더 필드
...6장은 정리하기보단 나중에 궁금할때 책을 읽어보는게 좋을것같다...