HTTP - 2
HTTP 동작 방식
서버는 클라이언트로 HTTP Response 메시지를 전달한다. 이 후 커넥션을 닫거나 다른 요청을 위해 재사용한다.
HTTP Message
-요청 메시지는 서버에게 리소스에 대해 서버의 동작을 요청한다.
-응답 메시지는 요청 메시지 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에 돌려준다.
-본문은 메소드에 따라 비어 있는 경우도 있다.
HTTP Method
-GET: 가장 흔히 쓰이는 메소드로, 주로 서버에 리소스를 요청하기 위해 사용한다.
-OPTIONS: 서버에서 지원하는 메소드를 확인하기 위해 사용하는 메소드
-HEAD: GET과 동작은 같지만, 응답 메시지에 헤더만을 포함한다. 리소스 확인, 상태코드 확인, 헤더 확인 등의 목적으로 사용된다. HTTP/1.1 준수를 위한 필수 구현 항목이다.
HTTP Status Code
100-199: 정보성 상태 코드
200-299: 성공 상태 코드
300-399: 리디렉션 상태 코드
400-499: 클라이언트 에러 상태 코드
500-599: 서버 에러 상태 코드
HTTP Headers
-일반 캐시 헤더: 캐시 기능을 명시하는 헤더
Connection | 클라이언트와 서버가 요청/응답 연결에 대한 옵션을 정함. (close, Keep-Alive) |
Date | 메시지가 만들어진 일시 |
MIME-Version | 사용된 MIME version |
Transfer-Encoding | 메시지에 사용된 인코딩 방식 |
Via | 메시지가 거쳐온 프록시, 게이트웨이 명시 |
Cache-Control | 메시지와 함께 캐시 지시자를 전달 |
-Accept 관련 헤더: 클라이언트가 원하는 것과 원하지 않는 것에 대한 정보 명시
-조건부 요청 헤더: 클라이언트 요청에 제약 조건 명시
-요청 보안 헤더: 리소스 요청 시 필요한 인증과 관련된 헤더
-프록시 요청 헤더: 프록시 기능을 위한 헤더
Client-IP | 클라이언트가 실행된 컴퓨터의 IP |
From | 클라이언트 사용자의 메일 주소 |
Host | 요청 대상 서버의 호스트명, 포트 |
Referer | 현재 요청 URI가 있는 URL(이전 페이지) |
UA-* | 클라이언트 관련 정보 (ex Color, CPU 등) |
User-Agent | 요청 보낸 어플리케이션 이름 |
Accept | 서버가 보내도 되는 미디어 종류 |
Accept-Charset | 서버가 보내도 되는 문자 집합 |
Accept-Encoding | 서버가 보내도 되는 인코딩 |
Accept-Language | 서버가 보내도 되는 언어 |
Expect | 요청에 필요한 서버 행동 열거 |
If-Match | 주어진 엔터티 태그와 일치하는 경우 해당 앤터티를 가져온다 |
If-None-Match | If-Match와 반대로 일치하지 않는 경우 |
If-Modified-Since | 주어진 날짜 이후 리소스 변경이 없을 경우 요청 제한 |
If-Range | 문서 특정 범위 요청 |
If-Unmodified-Since | 주어진 날짜 이후 리소스 변경 시 요청 제한 |
Range | 범위 요청을 지원하는 서버에 리소스 특정 범위 요청 |
Authorization | 클라이언트가 서버에 제공하는 인증 자체에 대한 정보 |
Cookie | 서버에 토큰 전달 시 사용 |
Cookie2 | 요청자가 지원하는 쿠키 버전 명시 |
Max-Forwards | 요청이 서버로 가면서 거치는 프록시 등의 최대 횟수 |
Proxy-Authorization | 프록시에서 인증 시 필요 |
Proxy-Connection | 프록시에서 연결 맺을 때 사용 |
● Response Headers: 응답 메시지에서 사용되는 헤더로, 클라이언트에 정보 제공한다.
-협상 헤더: 서버 리소스에 대한 정보
Age | 응답 메시지가 오래된 정도 |
Public | 특정 리소스에 대해 지원하는 요청 메소드 목록 |
Retry-After | 현재 리소스가 사용 불가능할 경우 다시 사용 가능해지는 일시 |
Server | 서버 애플리케이션 이름, 버전 |
Title | HTML 문서 제목 |
Warning | 사유 구절보다 더 자세한 경고 메시지 |
Accept-Ranges | 서버가 자원에 대해 받아들일 수 있는 범위의 형태 |
Vary | 서버가 응답에 영향을 줄 수 있는 헤더 목록 |
Proxy-Authenticate | 프록시에서 클라이언트로 보낸 인증 요구 목록 |
Set-Cookie | 서버가 클라이언트를 인증하 도록 클라이언트 측에 토큰을 설정하기 위해 사용 |
WWW-Authenticate | 서버에서 클라이언트로 보낸 인증요구 목록 |
● 엔터티 헤더: 요청과 응답 메시지 양 측에서 사용되며, 엔터티와 그 내용에 대한 정보 제공
-콘텐츠 헤더: 엔티티의 콘텐츠에 대한 구체적인 정보 제공
-엔터티 캐싱 헤더: 엔터티 캐싱에 대한 정보
Allow | 해당 엔터티에 수행 가능한 요청 메소드 목록 |
Location | 클라이언트에 실제 위치 명시. URI에 대한 Redirect를 명시한다. |
Content-Base | 상대 URL 계산을 위한 Base URL |
Content-Encoding | 적용 된 인코딩 방식 |
Content-Length | 본문 길이, 크기 |
Content-Location | 리소스 실제 위치. Location 헤더와 달리 요청받은 리소스 타입의 절대 URL을 명시한다. 터티 데이터와 연관된 내용이다. |
Content-Range | 전체 리소스에서 엔터티가 해당하는 범위 바이트로 표현 |
Content-Type | 엔터티의 종류 |
ETag | 엔터티 태그 |
Expires | 엔터티 유효 일시 |
Last-Modified | 최근 엔터티가 변경된 일시 |
ref: http://www.google.com (all images)
'System Engineering > Network' 카테고리의 다른 글
TCP/IP - 2. IP (0) | 2018.07.10 |
---|---|
TCP/IP - 1. TCP (0) | 2018.07.10 |
HTTP 1. HTTP (0) | 2018.07.02 |
Protocol: TCP and UDP (0) | 2018.06.18 |
About https (0) | 2018.06.11 |