πŸ“‹
CS interview
  • Computer Science Interview
  • 머릿말
  • Operating System
    • 질문 λͺ©λ‘
    • Process
  • Computer Architecture
    • 질문 사항
  • Data Communication
    • 질문 λͺ©λ‘
    • TCP/UDP
  • Data Structure
    • 질문 λͺ©λ‘
    • binary search
  • Design Pattern
    • 질문 λͺ©λ‘
  • Database
    • 질문 λͺ©λ‘
  • Web
    • 질문 사항
    • RFC 7230 (HTTP/1.1)
      • 3. Message Format
      • 4. Transfer codings
      • 5. Message Routing
      • 6. Connection Management
      • 7. ABNF List Extension: #rule
      • 8. IANA Considerations
      • 9. Security Considerations
      • 10. Acknowledgedments
      • Appendix A. HTTP Version History
      • Appendix B. Collected ABNF
      • Quiz
    • RFC 7231 (HTTP/1.1)
      • 4. Request Methods
      • 5. Request Header Fields
      • 6. Response Status Codes
      • 7. Response Header Fields
      • 8. IANA Considerations
      • 9. Security Considerations
      • Appendix A. Differences between HTTP and MIME
      • Appendix B. Changes from RFC 2616
      • Quiz
    • RFC 7232 (HTTP/1.1)
      • Quiz
    • RFC 7233 (HTTP/1.1)
      • lab
      • Quiz
    • RFC 7234 (HTTP/1.1)
      • Quiz
    • RFC 7235 (HTTP/1.1)
      • Quiz
  • Javascript
    • 질문 λͺ©λ‘
    • javascript 라이브러리
  • CSS
    • 질문 λͺ©λ‘
  • λ³΄μ•ˆ
    • λ³΄μ•ˆ
  • Interview
    • 질문 사항
  • RegExp
    • RegExp
  • Company
    • NBT
Powered by GitBook
On this page

Was this helpful?

  1. Web

RFC 7230 (HTTP/1.1)

Hypertext Transfer Protocol (HTTP/1.1) : Message Syntax and Routing

Previous질문 사항Next3. Message Format

Last updated 4 years ago

Was this helpful?

The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.

1. Introduction

  • 1. β€œMessage Syntax and Routing” (ν•΄λ‹Ή λ¬Έμ„œ)

  • 2. β€œSemantics and Content” [RFC7231]

  • 3. β€œConditional Requests” [RFC7232]

  • 4. β€œRange Requests” [RFC7233]

  • 5. β€œCaching” [RFC7234]

  • 6. β€œAuthentication” [RFC7235]

2. Architecture

HTTPλŠ” World Wide Web (WWW) μ•„ν‚€ν…μ²˜λ₯Ό μœ„ν•΄ λ§Œλ“€μ–΄ 쑌고, μ‹œκ°„μ΄ 지남에 따라 μ›”λ“œ μ™€μ΄λ“œ ν•˜μ΄νΌν…μŠ€νŠΈ μ‹œμŠ€ν…œμ˜ ν™•μž₯성에 λŒ€ν•œ μš”κ΅¬λ“€μ„ μ§€μ›ν•˜κΈ° μœ„ν•΄ λ°œμ „ν–ˆλ‹€. μ•„ν‚€ν…μ²˜μ˜ λŒ€λΆ€λΆ„μ΄ μš©μ–΄μ™€ HTTP μ •μ˜λ₯Ό μœ„ν•΄ μ‚¬μš©λ˜λŠ” ꡬ문듀에 λ°˜μ˜λ˜μ—ˆλ‹€.

2.1 Client/Server Messaging

HTTPλŠ” μ‹ λ’°μ„± μžˆλŠ” 전솑 계측 λ˜λŠ” μ„Έμ…˜ 계측 β€œconnectionβ€μ˜ (Section 6) λ©”μ‹œμ§€ κ΅ν™˜ (Section 3)에 μ˜ν•΄ μž‘λ™λ˜λŠ” μƒνƒœμ—†λŠ” μš”μ²­/응닡 ν”„λ‘œν† μ½œμ΄λ‹€. HTTP β€œclient(μ΄ν•˜ 클라이언 트)” λŠ” ν•˜λ‚˜ μ΄μƒμ˜ HTTP μš”μ²­λ“€μ„ μ „μ†‘ν•˜κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œ 컀λ„₯μ…˜μ„ μ„œλ²„μ— μ„€λ¦½ν•˜λŠ” ν”„λ‘œ κ·Έλž¨μ΄λ‹€. HTTP β€œserver(μ΄ν•˜ μ„œλ²„)β€λŠ” HTTP μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³  HTTP 응닡을 보내기 μœ„ν•΄ 컀λ„₯μ…˜μ„ ν—ˆμš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ΄λ‹€.

  • user agent(μ΄ν•˜ μ‚¬μš©μž μ—μ΄μ „νŠΈ)

μš”μ²­μ„ μ‹œμž‘ν•˜λŠ” λ‹€μ–‘ν•œ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨ (λΈŒλΌμš°μ €, μŠ€νŒŒμ΄λ” (μ›Ή 기반 λ‘œλ΄‡), μ»€λ§¨λ“œ 라인 툴, λͺ¨λ°”일 μ•±)

  • origin server(μ΄ν•˜ μ›μ„œλ²„)

νŠΉμ • λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ ν•œ κΆŒν•œ μžˆλŠ” 응닡을 생성할 수 μžˆλŠ” ν”„λ‘œκ·Έλž¨

λ‹€μŒ μ˜ˆμ‹œλŠ” URI μ—μ„œ GET μš”μ²­μ„ μœ„ν•œ 일반적인 λ©”μ‹œμ§€ κ΅ν™˜μ„ 보여쀀닀.

"http://www.example.com/hello.txt":

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­:

GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.71 zlib/1.2.3 Host: www.example.com Accept-Lanuage: en, mi

μ„œλ²„ 응닡:

HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain Hello World! My payload includes a trailing CRLF.

2.2 Implementation Diversity

λ³΄ν†΅μ˜ HTTP μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” κ°€μ • μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 음ν–₯κΈ°κΈ°, 체쀑계, 슀크립트λ₯Ό κ°±μ‹ ν•˜λŠ” firmware, command-line ν”„λ‘œκ·Έλž¨, λͺ¨λ°”일 μ•±, 그리고 λ‹€μ–‘ν•œ λͺ¨μ–‘κ³Ό 크기의 톡신 κΈ°κΈ°λ₯Ό ν¬ν•¨ν•œλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ, λ³΄ν†΅μ˜ HTTP 원 μ„œλ²„λŠ” ν™ˆ μžλ™ν™” μž₯치, λ„€νŠΈμ›Œν‚Ήμ„ κ΅¬μ„±ν•˜λŠ” λΆ€ν’ˆ, μ‚¬λ¬΄μš© 기계, 자율 λ‘œλ΄‡, λ‰΄μŠ€ ν”Όλ“œ, νŠΈλž˜ν”½ 카메라, κ΄‘κ³  μ„ νƒμž, 그리고 λΉ„λ””μ˜€-배솑 ν”Œλž«νΌμ„ ν¬ν•¨ν•œλ‹€.

2.3 Intermediaries (μ€‘κ°œμž)

μ€‘κ°œμžμ˜ 3κ°€μ§€ ν˜•νƒœ

  • Proxy

  • Gateway (reverse proxy)

  • Tunnel: λ©”μ‹œμ§€ 변경없이 2개의 컀λ„₯μ…˜μ— μˆ¨κ²¨μ§„ μ€‘κ°œμžλ‘œμ¨ μ—­ν• (ex, TLS)

μš©μ–΄: upstream, downstream, inbound, outbound

μ„œλ²„λŠ” 컀λ„₯μ…˜ 이 λ³΄μ•ˆλ˜μ–΄ 있고 ν•΄λ‹Ή μ—μ΄μ „νŠΈμ— νŠΉμ •λ˜μ–΄ μžˆμ§€ μ•ŠλŠ”ν•œ λ™μΌν•œ 컀λ„₯μ…˜μ— λŒ€ν•œ λ‘κ°œμ˜ μš”μ²­ 이 λ™μΌν•œ μ‚¬μš©μž μ—μ΄μ „νŠΈμ—μ„œ 온 κ²ƒμœΌλ‘œ κ°€μ •ν•΄μ„œλŠ” μ•ˆ λœλ‹€. (MUST NOT)

2.4 Caches

"cache"λŠ” 이전 응닡 λ©”μ‹œμ§€μ˜ 둜컬 λ³΄κ΄€μ†Œμ΄κ³  λ©”μ‹œμ§€μ˜ μ €μž₯, 검색, μ‚­μ œλ₯Ό 관리 ν•˜λŠ” μ„œλΈŒ μ‹œμŠ€ν…œμ΄λ‹€. μΊμ‹œλŠ” μΊμ‹œ κ°€λŠ₯ν•œ 응닡을 μ €μž₯ν•˜μ—¬ ν–₯ν›„ λ™μΌν•œ μš”μ²­μ— λŒ€ν•œ 응닡 μ‹œ κ°„κ³Ό λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­ μ‚¬μš©μ„ 쀄인닀. μΊμ‹œλŠ” μ„œλ²„κ°€ 터널 역할을 ν•˜λŠ” λ™μ•ˆμ—λŠ” μ‚¬μš©λ  수 μ—†μ§€λ§Œ 그것을 μ œμ™Έν•˜κ³ λŠ” ν΄λΌμ΄μ–ΈνŠΈ, μ„œλ²„ λͺ¨λ‘μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

2.5 Conformance and Error Handling

  • λ°œμ‹ μžλŠ” λ°œμ‹ μžκ°€ κ±°μ§“μ΄λΌλŠ” 의미λ₯Ό μ „λ‹¬ν•˜λŠ” ν”„λ‘œν† μ½œ μš”μ†Œλ₯Ό μƒμ„±ν•˜λ©΄ μ•ˆ λœλ‹€.(MUST NOT)

  • λ°œμ‹ μžλŠ” ABNF κ·œμΉ™μ— λŒ€μ‘ν•˜λŠ” μ •μ˜λœ 문법에 λ§žμ§€ μ•ŠλŠ” ν”„λ‘œν† μ½œ μš”μ†Œλ₯Ό μƒμ„±ν•˜λ©΄ μ•ˆ λœλ‹€.(MUST NOT)

  • μ§€μ •λœ λ©”μ‹œ μ§€ λ‚΄μ—μ„œ, λ°œμ‹ μžλŠ” λ‹€λ₯Έ μ—­ν• (i.e., ν•΄λ‹Ή λ©”μ‹œμ§€μ— λ°œμ‹ μžμ—κ²Œ μ—†λŠ” μ—­ν• )의 μ°Έκ°€μžλ§Œ 생성할 수 μžˆλŠ” ν”„λ‘œν† μ½œ μš”μ†Œλ‚˜ ꡬ문 λŒ€μ•ˆμ„ μƒμ„±ν•˜λ©΄ μ•ˆ λœλ‹€.(MUST NOT)

  • μˆ˜μ‹ λœ ν”„λ‘œν† μ½œ μš”μ†Œκ°€ λΆ„μ„λ˜μ—ˆμ„ λ•Œ, μˆ˜μ‹ μžλŠ” μˆ˜μ‹ μžμ˜ 역할에 ν•΄λ‹Ήν•˜λŠ” μ μ •ν•œ 길이의 κ°’κ³Ό 뢄석할 수 μžˆμ–΄μ•Ό ν•˜λ©° ABNF κ·œμΉ™λ“€μ— λŒ€μ‘ν•˜λŠ” μ •μ˜λœ 문법에 μΌμΉ˜ν•΄μ•Ό ν•œλ‹€.(MUST)

  • μ΅œμ†Œν•œ, μˆ˜μ‹ μžλŠ” λ‹€λ₯Έ λ©”μ‹œμ§€μ˜ λ™μΌν•œ ν”„λ‘œν† μ½œ μš”μ†Œμ— λŒ€ν•΄ μƒμ„±ν•œ κ°’λ§ŒνΌ ν”„λ‘œν† μ½œ μš”μ†Œ 길이λ₯Ό κ΅¬λ¬ΈλΆ„μ„ν•˜κ³  μ²˜λ¦¬ν•  수 μžˆμ–΄μ•Όν•œλ‹€.(MUST)

  • μˆ˜μ‹ μžλŠ” μˆ˜μ‹ μžκ°€ ν•΄λ‹Ή μ˜λ―Έλ‘ μ— μ˜ν•΄ μ•”μ‹œλœ 것을 잘λͺ» κ΅¬ν˜„ν•œλ‹€κ³  (κ²½ν—˜μ΄λ‚˜ ꡬ성을 톡해) νŒλ‹¨ν•˜μ§€ μ•ŠλŠ” ν•œ, μˆ˜μ‹ μžλŠ” 이 λͺ…세에 μ •μ˜λœ μ˜λ―Έλ‘ μ— 따라 μˆ˜μ‹ λœ ν”„λ‘œν† μ½œ μš”μ†Œλ₯Ό 해석해야 ν•œλ‹€.(MUST)

  • 달리 λͺ…μ‹œλ˜μ§€ μ•Šμ€ ν•œ, μˆ˜μ‹ μžλŠ” 잘λͺ»λœ κ΅¬μ‘°μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ ν”„λ‘œν† μ½œ μš”μ†Œλ₯Ό λ³΅κ΅¬ν•˜λ €κ³  μ‹œλ„ν•  수 μžˆλ‹€.(MAY)

HTTPλŠ” κ΅¬ν˜„μ˜ λ¬Έλ§₯ λ°°μΉ˜μ™€ λͺ©μ μ— 따라 μ μ ˆν•œ 길이가 맀우 λ‹€μ–‘ν•˜κΈ° λ•Œλ¬Έμ— λŒ€λΆ€λΆ„μ˜ ν”„λ‘œν† μ½œ μš”μ†Œμ— λŒ€ν•΄ νŠΉμ •ν•œ 길이 μ œν•œμ„ κ°€μ§€κ³  μžˆμ§€ μ•ŠλŠ”λ‹€.

λ˜ν•œ, HTTPλŠ” λ³΄μ•ˆμ— 직접적인 영ν–₯을 λ―ΈμΉ˜λŠ” 경우λ₯Ό μ œμ™Έν•˜κ³  νŠΉμ • 였λ₯˜ 처리 λ©”μ»€λ‹ˆμ¦˜μ„ μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ°, ν”„λ‘œν† μ½œμ˜ μ„œλ‘œ λ‹€λ₯Έ μ‘μš© ν”„λ‘œκ·Έλž¨μ—λŠ” λ‹€λ₯Έ 였λ₯˜ 처리 μ „λž΅ 이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

예λ₯Ό λ“€μ–΄, μ›Ή λΈŒλΌμš°μ €λŠ” Location 헀더 ν•„λ“œκ°€ ABNF에 따라 ꡬ문 λΆ„μ„λ˜μ§€ μ•ŠλŠ” μ‘λ‹΅μ—μ„œ 투λͺ…ν•˜κ²Œ λ³΅κ΅¬ν•˜κΈ°λ₯Ό μ›ν•˜λŠ” 반면, μ‹œμŠ€ν…œ μ œμ–΄ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ–΄λ–€ ν˜• νƒœμ˜ 였λ₯˜ 볡ꡬ도 μœ„ν—˜ν•˜λ‹€κ³  κ°„μ£Όν•  수 μžˆλ‹€.

2.6 Protocol Versioning

Host와 Connection 헀더 ν•„λ“œλŠ” HTTP/1.1μ€€μˆ˜ 여뢀에 관계 없이 λͺ¨λ“  HTTP/1.xκ΅¬ν˜„μ— μ˜ν•΄ κ΅¬ν˜„λ˜μ–΄μ•Ό ν•œλ‹€.

  • HTTP λ©”μ‹œμ§€λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ€‘κ°œμž(즉, 터널 역할을 ν•˜λŠ” μ€‘κ°œμžλ₯Ό μ œμ™Έν•œ λͺ¨λ“  μ€‘κ°œμž)λŠ” 전달 된 λ©”μ‹œμ§€λ‘œ μžμ‹ μ˜ HTTP-version을 전솑해야 ν•œλ‹€.(MUST)

  • ν΄λΌμ΄μ–ΈνŠΈμ˜ major 버전이 μ„œλ²„μ— μ˜ν•΄ μ§€μ›ν•˜λŠ” κ°€μž₯ 높은 버전보닀 λ†’μ§€ μ•Šκ³  ν΄λΌμ΄μ–ΈνŠΈκ°€ κ°€μž₯ 높은 버전을 ν˜Έν™˜ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ Έ μžˆλ‹€λ©΄ ν΄λΌμ΄μ–ΈνŠΈλŠ” κ°€μž₯ 높은 버전과 λ™μΌν•œ μš”μ²­λ²„μ „μ„ 전솑해야 ν•œλ‹€.(SHOULD) ν΄λΌμ΄μ–ΈνŠΈλŠ” μ ν•©ν•˜μ§€ μ•Šμ€ 버전을 보내면 μ•ˆλœλ‹€.(MUST NOT)

  • μ„œλ²„κ°€ HTTP κ·œκ²©μ„ 잘λͺ» κ΅¬ν˜„ν•œ κ²ƒμœΌλ‘œ μ•Œλ €μ§„ 경우, κ·ΈλŸ¬λ‚˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ 적어도 ν•˜λ‚˜μ˜ 정상적인 μš”μ²­μ„ μ‹œλ„ν•˜κ³  μ„œλ²„κ°€ μƒμœ„ μš”μ²­ 버전을 잘λͺ» μ²˜λ¦¬ν•˜λŠ” 응닡 μƒνƒœ μ½”λ“œ λ˜λŠ” 헀더 ν•„λ“œλ₯Ό 톡해 ν™•μΈν•œ ν›„μ—λ§Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•˜μœ„ μš”μ²­ 버전을 보낼 수 μžˆλ‹€.(MAY)

  • μ„œλ²„λŠ” μ„œλ²„κ°€ κ΅¬μ„±λœ κ°€μž₯ 높은 버전과 λ™μΌν•œ 응닡 버전을 전솑해야 ν•˜λ©° major 버전은 μš”μ²­μ— μˆ˜μ‹ λœ 버전보닀 μž‘κ±°λ‚˜ κ°™μ•„μ•Ό ν•œλ‹€.(SHOULD) μ„œλ²„λŠ” ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” 버전을 보내면 μ•ˆ 된 λ‹€.(MUST NOT)

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ HTTP 사양을 잘λͺ» κ΅¬ν˜„ν•œ κ²ƒμœΌλ‘œ μ•Œλ €μ§€κ±°λ‚˜ μ˜μ‹¬λ˜λŠ” 경우(예:ν΄λΌμ΄μ–ΈνŠΈκ°€ 버전 번호λ₯Ό μ˜¬λ°”λ₯΄κ²Œ ꡬ문 λΆ„μ„ν•˜μ§€ λͺ»ν•˜κ±°λ‚˜ μ€‘κ°œμžκ°€ ν”„λ‘œν† μ½œμ˜ minor 버전이 μ£Όμ–΄μ§„ 것을 λ”°λ₯΄μ§€ μ•Šμ„ λ•Œ HTTP 버전을 λ§Ήλͺ©μ μœΌλ‘œ μ „λ‹¬ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ§„ 경우) μ„œλ²„κ°€ μš”μ²­μ— λŒ€ν•΄ HTTP/ 1.0 응닡을 보낼 수 μžˆλ‹€.(MAY) ν•˜λ‚˜ μ΄μƒμ˜ μš”μ²­ 헀더 ν•„λ“œ(e.g., User-Agent)κ°€ 였λ₯˜κ°€ μžˆλŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ§„ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ „μ†‘ν•œ κ°’κ³Ό κ³ μœ ν•˜κ²Œ μΌμΉ˜ν•˜λŠ” κ²½μš°μ™€ 같은 νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈ 속성에 μ˜ν•΄ 트리거 λ˜μ§€ μ•ŠλŠ” ν•œ μ΄λŸ¬ν•œ ν”„λ‘œν† μ½œ λ‹€μš΄κ·Έλ ˆμ΄λ“œλ₯Ό μˆ˜ν–‰ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(SHOULD NOT)

μ–΄λ–€ μ΄μœ λ‘œλ“  μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μ£Όμš” ν”„λ‘œν† μ½œ 버전 μ„œλΉ„μŠ€λ₯Ό κ±°λΆ€ν•˜κ³ μž ν•˜ λŠ” 경우 505(HTTP Version Not Supported)의 응닡을 보낼 수 μžˆλ‹€.

2.7 Uniform Resource Identifiers

Uniform Resource Identifiers (URIs) [RFC3986]은 λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” μˆ˜λ‹¨μœΌλ‘œ HTTP μ „μ²΄μ—μ„œ μ‚¬μš©λœλ‹€.

"URI-reference", "absolute-URI", β€œrelative-part", "scheme", "authority", "port", "host", "path-abempty", β€œsegment", "query", β€œfragment" μ •μ˜λŠ” URI 일반 κ΅¬λ¬Έμ—μ„œ μ±„νƒλ˜μ—ˆλ‹€.

2.7.1 http URI scheme

  • λ°œμ‹ μž(sender)λŠ” 호슀트 μ‹λ³„μžκ°€ λΉ„μ–΄μžˆλŠ” μƒνƒœλ‘œ β€œhttp" URIλ₯Ό μƒμ„±ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

  • 이러 ν•œ URI μ°Έμ‘°λ₯Ό μ²˜λ¦¬ν•˜λŠ” μˆ˜μ‹ μžλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ κ±°λΆ€ν•΄μ•Ό ν•œλ‹€.(MUST)

HTTPλŠ” 전솑 ν”„λ‘œν† μ½œκ³Ό λ…λ¦½μ μ΄μ§€λ§Œ, 이름 μœ„μž„ ν”„λ‘œμ„ΈμŠ€λŠ” κΆŒν•œμ„ μ„€μ •ν•˜λŠ” TCP에 μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— β€œhttp” scheme은 TCP기반 μ„œλΉ„μŠ€μ—λ§Œ ν•œμ •λœλ‹€.

2.7.2 https URI scheme

β€œhttps” URI schemeλŠ” 잠재적으둜 HTTP μ›μ„œλ²„κ°€ μ£Όμ–΄μ§„ TLS-λ³΄μ•ˆ 컀λ„₯μ…˜μ„ μœ„ν•œ TCP 포트λ₯Ό μ²­μ·¨ν•˜λŠ” κ²ƒμœΌλ‘œ κ³„μΈ΅μ μœΌλ‘œ κ΄€λ¦¬λœ λ„€μž„ 슀페이슀의 연계에 따라 μ‹λ³„μžλ₯Ό μ£Όμ‘°ν•˜λŠ” λͺ©μ μœΌλ‘œ μ •μ˜ λœλ‹€.

  • TCP 포트 443의 포트 ν•˜μœ„ ꡬ성 μš”μ†Œκ°€ λΉ„μ–΄ μžˆκ±°λ‚˜ μ§€μ •λ˜μ§€ μ•Šμ€ 경우λ₯Ό μ œμ™Έν•˜κ³  기본값이닀. μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” 첫 번째 HTTP μš”μ²­μ„ 보내기 전에 end-to-end의 κ°•λ ₯ν•œ μ•”ν˜Έν™” 톡해 μ›μ„œλ²„μ— λŒ€ν•œ 컀λ„₯μ…˜μ΄ μ•ˆμ „ν•œμ§€ 확인해야 ν•œλ‹€.(MUST)

2.7.3 http and https URI Normalization and Comparison

ν¬νŠΈκ°€ scheme의 κΈ°λ³Έν¬νŠΈμ™€ κ°™λ‹€λ©΄, 일반적인 ν˜•νƒœλŠ” 포트 ν•˜μœ„ ꡬ성을 μƒλž΅ν•˜λŠ” 것이.

OPTIONS μš”μ²­μ˜ μš”μ²­ λŒ€μƒμœΌλ‘œ absolute ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•Šμ„ 경우, 빈 경둜 ꡬ성 μš”μ†Œ "/"의 μ ˆλŒ€ κ²½λ‘œμ™€ κ°™μœΌλ―€λ‘œ, 일반적인 ν˜•μ‹μ€ β€œ/" 경둜λ₯Ό λŒ€μ‹  μ œκ³΅ν•˜λŠ” 것이닀.

scheme κ³Ό ν˜ΈμŠ€νŠΈλŠ” λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠμœΌλ©° 일반적으둜 μ†Œλ¬Έμžλ‘œ μ œκ³΅λœλ‹€.

β€œreserved" 집합에 μžˆλŠ” 문자 μ΄μ™Έμ˜ λ¬ΈμžλŠ” λ°±λΆ„μœ¨λ‘œ μΈμ½”λ”©λœ octets와 λ™μΌν•˜λ‹€. 일반적인 ν˜•μ‹μ€ ν•΄λ‹Ή 문자λ₯Ό μΈμ½”λ”©ν•˜μ§€ μ•ŠλŠ”λ‹€.([RFC3986])

λ‹€μŒ μ„Έκ°œμ˜ URIλŠ” λ™λ“±ν•˜λ‹€.

http://example.com:80/~smith/home.html

http://EXAMPLE.com/%7Esmith/home.html

http://EXAMPLE.com:/%7esmith/home.html

RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
Logo