3.1 HTTP 버전
<major>.<minor>
- 메시지 의미에 대한 추가 사항이나 바송자의 추가적인 능력을 의미하는 규약 추가 기능에 대한 변경이 있을 경우 <minor> 번호를 증가시킴.
- 프로토콜 내 메시지 형식이 변경되면 <major> 번호를 증가시킴.
- 이 규격이 규정하는 대로 요구나 응답 메시지를 전송하는 애플리케이션은 반드시 HTTP-Version을 "HTTP/1.1"로 설정해야 한다. 이 버전 번호를 사용하는 것은 발송하는 애플리케이션이 최소한 부분적으로는 이 규격을 따르고 있음을 표시한다.
- 상위 버전의 요구가 수신되었으면 프락시/게이트웨이는 반드시 요구 버전을 내리거나, 에러를 발송하거나 터널로 전환해야만 한다. 프락시/게이트웨이 버전보다 낮은 요구는 상위 버전으로 업그레이드할 수는 있으나 요구받은 버전의 주요 버전은 반드시 동일해야 한다.
3.2 URI(Uniform Resource Identifier)
보편적 자원 식별자
자원을 식별해주는 정형화된 문자열(www주소, URL + URN)
- 절대적, 상대적 둘 다 표현 가능. (절대적 URI는 항상 콜론이 뒤따르는 scheme로 시작함)
- URI 길이에 어떠한 제한도 두지 않음.
- 서버는 URI가 자신이 처리할 수 있는 것보다 긴 경우 414로 응답
http_URL = "http:" "//" host [ ":" port ] [ abs_path ]
host
- 합법적인 인터넷 호스트 도매인 이름, IP 주소
- 대소문자를 구별하지 않음
port
- digit (비어있는 경우 80으로 간주)
abs_path
- URL에 abs_path가 명시되어 있지 않으면 자원을 위한 Request-URI로서 사용할 때 반드시 "/"가 주어져야 한다.
- 비어있는 abs_path는 “/”와 동일
모든 HTTP 날짜/시간 표시는 예외 없이 반드시 그린이치 표준 시간(GMT))을 따라야 한다.
delta second : 몇몇 HTTP 헤더는 메시지가 수신된 이후의 시간을 10진법의 정수로 초를 명시할 수 있도록 한다.
(delta-seconds = 1*DIGIT)
3.5 Content Codings
content-conding 값은 엔티티에 적용되었거나 적용될 수 있는 인코딩 변환을 나타냅니다.
content-conding은 주로 문서를 압축하거나 다른 방식으로 유용하게 변환하는 데 사용됩니다.
엔티티는 코드화 된 형태로 저장되고, 직접 전송되며, 수신자에 의해서만 디코딩된다. (content-coding은 대소문자 구분 X)
content-coding = token
3.6 Transfer Codings
네트워크를 통한 "안전한 전송"을 보장하기 위해 엔티티 본체에 적용될 수 있거나 적용될 필요가 있는 인코딩 변환을 나타내기 위해 사용된다.
이것은 전송 코딩이 원래 엔티티가 아닌 메시지의 속성이라는 점에서 콘텐츠 코딩과 다르다. (대소문자 구분 X)
해독할 수 없는 Transfer coding과 함께 entity-body를 수신하는 서버는 501 코드를 응답 후 연결 종료.
서버는 transfer-coding를 http/1.0 클라이언트에 보내서는 안 된다.
3.7 Media Types
HTTP는 공개적이고 확장 가능한 데이터 유형 설정 및 유형 협상 기능을 제공하기 위해 Content-Type (14.18 절) 및 Accept (14.1 절) 헤더 필드의 인터넷 미디어 형식을 사용한다. (대소문자 구분 X)
등록되지 않은 미디어 유형 사용은 권하지 않음.
Entity-Body는 줄 바꿈을 CRLF, CR, LF 등 자유롭게 사용 가능.
HTTP 제어구조는 무조건 CRLF이어야 함.
HTTP/1.1 수신 측은 송신 측이 제공하는 charset(인코딩 방식) 라벨을 반드시 감안해야 함.
하나 이상의 엔터티를 단일 메시지 본문 내에 포함시킬 수 있음.
3.8 Product Tokens
통신 애플리케이션이 자신의 소프트웨어 이름 및 버전을 확인하는 데 사용.
3.9 Quality Values
부동소수점 숫자를 사용하여 다양한 협상 가능 파라미터의 상대적 중요성(가중치)을 표시.
가중치는 최솟값 0 ~ 최댓값 1까지 실수로 정형화 가능.
소수점 3자리 이상의 숫자 사용 금지.
3.10 Language Tags
인간이 다른 인간과 정보를 교환하기 위하여 말하거나, 쓰거나 혹은 전달하는 자연적인 언어를 표시. (컴퓨터 언어 X)
Accept-Language, Content-Language 필드에 language tags 표시.
3.11 Entity Tags
동일하게 요구된 자원에서 둘 또는 그 이상의 엔터티를 비교하는 데 사용.
weak entity tag
약한 엔터니 태그.
엔터티가 동일하고 의미상 심각한 변화 없이도 서로 대체할 수 있을 경우에만 두 엔터티가 자원을 공유할 수 있다.
“W/” 접두사
strong entity tag
강한 엔터티 태그.
두 엔터티가 자원을 공유할 수 있다.
3.12 Range Units
HTTP/1.1는 클라이언트가 엔터티의 일부분(특정 영역)만 응답으로 전송해 달라고 요구할 수 있다.
HTTP/1.1은 Range (14.36 절) 및 Content-Range (14.17 절) 헤더 필드의 영역 단위를 사용한다.
엔터티는 여러 가지 구조적 단위 크기에 따라 여러 하부 영역으로 분리할 수 있다.
'Computer Science > Network' 카테고리의 다른 글
RFC 2616(HTTP) : 2장 정리 (0) | 2022.09.14 |
---|---|
RFC 2616(HTTP) : 1장 정리 (0) | 2022.07.13 |
통신이란? (0) | 2022.01.20 |
댓글