HTTP - 2

HTTP 동작 방식

클라이언트와 서버 간 TCP 연결을 설정하고 HTTP Request 메시지를 전송한다. 이 때 연결은 새로 만들어 지거나 여러 개가 만들어질 수 있다. 

서버는 클라이언트로 HTTP Response 메시지를 전달한다. 이 후 커넥션을 닫거나 다른 요청을 위해 재사용한다. 


HTTP Message

메시지는 요청, 응답으로 나뉘며, Start Line, Header, Body로 나뉜다. 

Requests and responses share a common structure in HTTP

-요청 메시지는 서버에게 리소스에 대해 서버의 동작을 요청한다.  
-응답 메시지는 요청 메시지 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에 돌려준다.  
-본문은 메소드에 따라 비어 있는 경우도 있다.


HTTP Method

http header functions

  • -GET: 가장 흔히 쓰이는 메소드로, 주로 서버에 리소스를 요청하기 위해 사용한다. 

  • -OPTIONS: 서버에서 지원하는 메소드를 확인하기 위해 사용하는 메소드


  • -HEAD: GET과 동작은 같지만, 응답 메시지에 헤더만을 포함한다. 리소스 확인, 상태코드 확인, 헤더 확인 등의 목적으로 사용된다. HTTP/1.1 준수를 위한 필수 구현 항목이다.



HTTP Status Code

세 자리 숫자로 이루어진 상태코드는 요청 메시지에 대한 결과를 클라이언트에게 알려준다. 전체 범위에서 정의된 범위에 따라 코드가 의미하는 분류가 나뉜다.  (WebDAV – HTTP 확장 메소드 지원)


ref: http://designtaxi.com


100-199: 정보성 상태 코드

200-299: 성공 상태 코드

300-399: 렉션 상태 코드 

400-499: 클라이언트 에러 상태 코드

500-599: 서버 에러 상태 코드 



HTTP Headers

이름-값 쌍으로 이루어지는 필드로 0개 이상의 헤더 목록을 나타내며, CRLF(빈 줄)로 헤더의 끝과 본문의 시작을 구분한다.  
 
● General Headers: 메시지 종류에 상관없이 기본적인 정보를 제공하는 헤더  
  • -일반 캐시 헤더: 캐시 기능을 명시하는 헤더  

Connection  

클라이언트와 서버가 요청/응답 연결에 대한 옵션을 정함. (close, Keep-Alive)  

Date  

메시지가 만들어진 일시  

MIME-Version  

사용된 MIME version  

Transfer-Encoding  

메시지에 사용된 인코딩 방식  

Via  

메시지가 거쳐온 프록시, 게이트웨이 명시  

Cache-Control  

메시지와 함께 캐시 지시자를 전달  


● Request Headers: 요청 메시지에서 클라이언트의 정보 등을 담은 헤더  
  • -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

+ Recent posts