HTTP πŸ“­Β  & HTTPS 🧰

μ΅œμ •ν™˜Β·2022λ…„ 2μ›” 24일
0

톡신과 λΈŒλΌμš°μ €

λͺ©λ‘ 보기
1/8

HTTP(Hypertext Transfer Protocol)

  1. 컴퓨터(client & server) 끼리의 μ†Œν†΅μ„ μœ„ν•œ 톡신 κ·œμ•½.
  2. HTTP 톡신은 μš”μ²­/μ‘λ‹΅μœΌλ‘œ 이루어진닀.
  3. HTTP 맀 μš”μ²­/응닡은 이전 μƒνƒœλ₯Ό μ•Œμ§€ λͺ»ν•œλ‹€.
  4. μ›Ήμ—μ„œλŠ” λΈŒλΌμš°μ €μ™€ μ„œλ²„ 간에 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ λ°©μ‹μœΌλ‘œ HTTP ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜κ³  μžˆλ‹€.
  5. 톡신 사이에 λ”°λ‘œ μ•”ν˜Έν™” 과정을 κ±°μΉ˜μ§€ μ•ŠλŠ”λ‹€.

HTTP의 두가지 νŠΉμ§•

  1. Requset/Response (μš”μ²­/응닡)
    컴퓨터와 μœ μ €μ˜ μ†Œν†΅
  • Request의 λ©”μ‹œμ§€ ꡬ쑰

     - Start Line : HTTP Method, Requset target, HTTP Version으둜 κ΅¬μ„±λ˜μ–΄μžˆλ‹€.
       - HTTP Method : ν•΄λ‹Ή μš”μ²­μ΄ μ˜λ„ν•œ μ•‘μ…˜ μ •μ˜ GET,POST, DELETE λ“±..
       - Reuset target : λͺ©ν‘œ url
       - HTTP Version : HTTP version
         
     - Headers : ν•΄λ‹Ή μš”μ²­μ— λŒ€ν•œ μΆ”κ°€ 정보(메타 데이터)λ‹΄κ³  μžˆλ‹€. Key:value ν˜•νƒœ
    
       - Host : μš”μ²­μ„ λ³΄λ‚΄λŠ” λͺ©ν‘œ (μ£Όμ†Œ)
       - User-Agent : μš”μ²­μ„ λ³΄λ‚΄λŠ” client에 λŒ€ν•œ 정보
       - Content-Type : ν•΄λ‹Ή μš”μ²­μ„ λ³΄λ‚΄λŠ” 메세지 body type
       - Content-Length : body λ‚΄μš©μ˜ 길이
       - Authorization : 인증/인가λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 둜그인 토큰을 λ‹΄λŠ”λ‹€.
    
     - Body : ν•΄λ‹Ή μš”μ²­μ˜ μ‹€μ œ λ‚΄μš©

  • Response의 λ©”μ‹œμ§€ ꡬ쑰

    • Start Line : 응닡 μƒνƒœ 쀄

      • HTTP Version
      • Status Code : μƒνƒœ μ½”λ“œ / μ„œλ²„μ—μ„œ μ„€μ •ν•΄μ£ΌλŠ” 응닡 정보
      • Status Text : μƒνƒœ κ°„λž΅νžˆ μ„€λͺ…ν•˜λŠ” ν…μŠ€νŠΈ

    • Headers : requset와 동일. Server 와 같이 μ‘λ‹΅μ—μ„œλ§Œ μ‚¬μš©ν•˜λŠ” 것듀도 있음

    • Body : requset와 동일. κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” data type은 JSON


  1. stateless (state + less)
  • HTTP κ°œλ³„ 톡신은 λͺ¨λ‘ λ…λ¦½μ΄μ–΄μ„œ 과거의 HTTP 톡신 κ²°κ³Ό(state)λ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • ex)
    • λ‘œκ·ΈμΈν•˜κ³  λ‚˜μ€‘μ— μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄ 둜그인이 λ‹€μ‹œ ν•„μš”ν•˜λ‹€.
    • 보완(stateful)ν•˜κΈ° μœ„ν•΄μ„  cookie, session을 μ‚¬μš©ν•œλ‹€.
  1. HTTP Requset Methods

    1. GET
    • μ‘΄μž¬ν•˜λŠ” μžμ›μ— λŒ€ν•œ μš”μ²­
    • μ„œλ²„λ‘œ λΆ€ν„° 데이터λ₯Ό λ°›μ•„μ˜¬λ•Œλ§Œ μ‚¬μš©
    1. POST
    • μƒˆλ‘œμš΄ μžμ›μ„ 생성
    • 데이터λ₯Ό 생성 / μˆ˜μ •
    1. DELETE
    • μ‘΄μž¬ν•˜λŠ” μžμ›μ— λŒ€ν•œ μ‚­μ œ
    • νŠΉμ • 데이터λ₯Ό μ„œλ²„μ—μ„œ μ‚­μ œ μš”μ²­μ„ λ³΄λ‚Όλ•Œ
    1. PUT
    • μ‘΄μž¬ν•˜λŠ” μžμ›μ— λŒ€ν•œ λ³€κ²½

λ™μž‘ μˆœμ„œ

TCP -> HTTP

TCPλž€







HTTPS(Hypertext Transfer Protocol Secure)

HTTPκ°€ 가지고 μžˆλŠ” 문제점인 μ„œλ²„μ—μ„œλΆ€ν„° λΈŒλΌμš°μ €λ‘œ μ „μ†‘λ˜λŠ” 정보가 μ•”ν˜Έν™”λ˜μ§€ μ•Šμ•„ 데이터가 λ„λ‚œ λ‹Ήν•˜κΈ° μ‰¬μ› μ—ˆλ˜ 점을 SSL을 μ΄μš©ν•΄ ν•΄κ²°ν•  수 있게 됐닀.

HTTPμ—μ„œ SSL을 μΆ”κ°€ν•˜λŠ” κ²ƒμœΌλ‘œ μ„œλ²„μ™€ λΈŒλΌμš°μ € 사이에 μ•ˆμ „ν•˜κ²Œ μ•”ν˜Έν™”λœ 연결을 λ§Œλ“€ 수 있게 도와주고 λ―Όκ°ν•œ 정보(password, creditcard info ...)λ₯Ό μ£Όκ³  받을 λ•Œ λ„λ‚œμ„ λ°©μ–΄ν•΄μ€€λ‹€.

SSL(Secure Sockets Layer)은 μ•”ν˜Έν™” 기반 인터넷 λ³΄μ•ˆ ν”„λ‘œν† μ½œ


πŸ”’ μ•”ν˜Έν™” 방식

일반적으둜 많이 μ‚¬μš©ν•˜λŠ” λŒ€μΉ­ν‚€ & λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™”λ₯Ό μ‚¬μš©ν•œλ‹€.

  1. λŒ€μΉ­ν‚€ μ•”ν˜Έν™”

    • λ‚΄κ°€ ν•˜λ‚˜ μ„œλ²„κ°€ ν•˜λ‚˜ λ™μΌν•œ ν‚€λ₯Ό 가지고 있고 κ·Έ ν‚€λ₯Ό μ΄μš©ν•΄μ„œ μ•”ν˜Έν™”/λ³΅ν˜Έν™”λ₯Ό ν•œλ‹€.
    • ν‚€κ°€ λ…ΈμΆœλ˜λ©΄ μœ„ν—˜ν•˜μ§€λ§Œ ν‚€λ₯Ό λŒ€μ‘°ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” 만큼 연산속도가 λΉ λ₯΄λ‹€.
  2. λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™”

    • 1개의 쌍으둜 κ΅¬μ„±λœ κ³΅κ°œν‚€μ™€ κ°œμΈν‚€λ₯Ό μ•”ν˜Έν™”/λ³΅ν˜Έν™” ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€.
    • ν‚€κ°€ λ…ΈμΆœλ˜μ–΄λ„ μ•ˆμ „ν•˜μ§€λ§Œ 연산속도가 λŠλ¦¬λ‹€.
    • κ°œμΈν‚€λŠ” μ ˆλŒ€λ‘œ λ…ΈμΆœλ˜μ–΄μ„  μ•ˆλ˜κ³  κ³΅κ°œν‚€λŠ” κ³΅κ°œκ°€ λ˜μ–΄μžˆλŠ” ν‚€

λΉ„λŒ€μΉ­ μ•”ν˜Έν™”μ—λŠ” 두가지 방법이 μžˆλ‹€.

  1. κ³΅κ°œν‚€ μ•”ν˜Έν™”λ₯Ό 톡해 κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”ν•˜λŠ” 방법
    • 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 전솑할 수 μžˆλŠ” λ³΄μ•ˆ 관점

  2. κ°œμΈν‚€ μ•”ν˜Έν™”λ₯Ό 톡해 κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™”ν•˜λŠ” 방법
    • μ‹ λ’°ν•  수 μžˆλŠ” λ‹¨μ²΄λΌλŠ” 것을 μΈμ¦ν•˜λŠ” 관점

λ™μž‘ μˆœμ„œ

TCP -> SSL -> HTTP




μ°Έκ³ :
https://joshua1988.github.io/web-development/http-part1/
https://www.cloudflare.com/ko-kr/learning/ssl/what-is-ssl/
https://mangkyu.tistory.com/98

0개의 λŒ“κΈ€