HTTP

HTTP Header

Request Header

ν΄λΌμ΄μ–ΈνŠΈ λΈŒλΌμš°μ €μ—μ„œ HTTP ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜μ—¬ μš”μ²­ 정보λ₯Ό μ›Ή μ„œλ²„λ‘œ 전솑할 λ•Œ HTTP μš”μ²­ 헀더에 뢀가적인 정보λ₯Ό λ‹΄μ•„ μ „μ†‘ν•œλ‹€.

  • Accept
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ²˜λ¦¬ν•˜λŠ” λ―Έλ””μ–΄ νƒ€μž…
  • Accept-encoding
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ 해석할 수 μžˆλŠ” 인코딩 방식
  • Accept-language
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ§€μ›ν•˜λŠ” μ–Έμ–΄
  • Connection
    • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μ—°κ²° 방식
      • keep-alive : ν΄λΌμ΄μ–ΈνŠΈμ™€ 접속 μœ μ§€
      • close : ν΄λΌμ΄μ–ΈνŠΈμ™€ 접속 쀑단
  • Host
    • 호슀트 이름 URI 와 PORT 번호 정보
  • User-agent
    • ν΄λΌμ΄μ–ΈνŠΈ λΈŒλΌμš°μ € 정보

Response Header

μ„œλ²„κ°€ HTTP ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— λŒ€ν•΄ 응닡할 λ•Œ 뢀가적인 정보λ₯Ό 응닡 헀더에 λ‹΄μ•„ μ „μ†‘ν•œλ‹€.

  • Connection
    • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μ—°κ²° 방식 μ„€μ •
      • keep-alive : ν΄λΌμ΄μ–ΈνŠΈμ™€ 접속 μœ μ§€
      • close : ν΄λΌμ΄μ–ΈνŠΈμ™€ 접속 쀑단
  • Content-Length
    • μš”μ²­ν•œ 파일의 데이터 길이
  • Content-Type
    • 헀더 응닡 λ¬Έμ„œμ˜ mime νƒ€μž…
  • Date
    • ν˜„μž¬ μΌμ‹œλ₯Ό GMT ν˜•μ‹μœΌλ‘œ 지정
  • Server
    • μ›Ή μ„œλ²„ 정보

CORS κ΄€λ ¨μœΌλ‘œ **Access-Control-Allow-Origin: *** 으둜 μ„€μ •λ˜λ©΄ 도메인 ꡬ뢄없이 XHR 호좜이 κ°€λŠ₯해진닀.

Keep-alive κ΄€λ ¨

  • λ””λ°”μ΄μŠ€ κ°„μ˜ 컀λ„₯μ…˜μ„ μœ μ§€ν•˜λŠ” 기법 으둜 TCP 와 HTTP κ°€ μ „ν˜€ λ‹€λ₯΄λ‹€.
    • TCP λŠ” OSκ°€ μ œμ–΄ ν•˜κ³ , HTTP λŠ” μ›Ή μ„œλ²„κ°€ μ œμ–΄ ν•œλ‹€.
  • HTTP 1.1 μ΄μƒμ—μ„œ μ§€μ›λ˜λŠ” 슀팩으둜 헀더에 μ„€μ • ν•˜λ©΄ λœλ‹€.
  • max μš”μ²­μˆ˜ 와 μœ νš¨μ‹œκ°„(timeout) 으둜 κ΅¬μ„±λœλ‹€.

Timeout μ’…λ₯˜

Connection Timeout

Connection 을 κ΅¬μ„±ν•˜λŠ”λ° μ†Œμš”λ˜λŠ” μ‹œκ°„

Read Timeout

Server μ—μ„œ 데이터λ₯Ό μ™„μ „νžˆ λ°›μ„λ•Œ κΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„

MIME

μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „μ†‘λ˜λŠ” λ¬Έμ„œμ— λŒ€ν•œ μœ ν˜•μ„ μ§€μΉ­ν•˜λŠ” νƒ€μž…

Syntax

[νŒŒμΌμ˜μ’…λ₯˜]/[νŒŒμΌνƒ€μž…]

Type List

  • text
    • ν…μŠ€νŠΈ 파일
    • text/plain, text/html, text/css, text/javascript
  • multipart
    • 이미지 파일 (λΉ„λ””μ˜€ μ œμ™Έ)
    • audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • audio
    • μ˜€λ””μ˜€ 파일
    • audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • video
    • λΉ„λ””μ˜€ 파일
    • video/webm, video/ogg
  • application
    • λͺ¨λ“  λ°”μ΄λ„ˆλ¦¬ νƒ€μž…
    • application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

νŽ˜μ΄μ§€μ˜ μ „ν™˜ 방식

sendRedirect

μƒˆλ‘œμš΄ μš”μ²­μ„ μž‘μ„±ν•˜μ—¬ λ„˜κΈ΄λ‹€.
forward 에 λΉ„ν•΄ λŠλ¦¬λ‹€.

response.sendRedirect(url);

forward

μš”μ²­ λŒ€μƒμ„ μƒˆλ‘œμš΄ λŒ€μƒμœΌλ‘œ μ „λ‹¬ν•œλ‹€.
sendRedirect 에 λΉ„ν•΄ λΉ λ₯΄λ‹€.

RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);

Servlet Life Cycle

  1. Client 의 Request 에 따라 Servlet Engine 이 Servlet 을 λ‘œλ“œν•œλ‹€.
  2. λ‘œλ“œλœ Servlet 을 μ΄ˆκΈ°ν™” ν•˜κΈ° μœ„ν•΄ Servlet 의 init method λ₯Ό ν˜ΈμΆœν•œλ‹€.
  3. Servlet κ°μ²΄λŠ” 각 Request 에 λ”°λ₯Έ 처리λ₯Ό ν•œλ‹€.
  4. μ΅œμ’…μ μœΌλ‘œλŠ” distroy method λ₯Ό ν˜ΈμΆœν•˜μ—¬ Servlet 을 μ œκ±°ν•œλ‹€.

HTTP METHOD

  • GET
    • URL둜 파일 및 μžμ›λ“±μ„ κ°€μ Έμ˜¬ 수 μžˆλ„λ‘ μš”μ²­
  • POST
    • Request 둜 μ „λ‹¬λœ 데이터λ₯Ό 기반으둜 μ„œλ²„μ— μš”μ²­
    • μˆ˜ν–‰μ˜ λͺ©μ μ΄ 강함
  • DELETE
    • 데이터 μ‚­μ œμ˜ μš”μ²­
  • PUT
    • Request 둜 μ „λ‹¬λ˜λŠ” 데이터λ₯Ό 기반으둜 μ„œλ²„μ— μš”μ²­
    • κΈ°μ€€ 데이터가 μ—†μ„λ•ŒλŠ” 생성, μžˆμ„λ•ŒλŠ” μˆ˜μ •
  • PATCH
    • λ³€κ²½λœ λ°μ΄ν„°λ§Œ μ „λ‹¬ν•˜μ—¬ μ—…λ°μ΄νŠΈλ₯Ό μš”μ²­ν•¨

Network Handshaking

  • ARC (Acknowledgement) : μ†‘μ‹ λœ 메세지가 μ •μƒμ μœΌλ‘œ μˆ˜μ‹  λ˜μ—ˆμŒμ„ μ†‘μ‹ μΈ‘μœΌλ‘œ μ‘λ‹΅ν•˜λŠ” 것
  • SYN (Synchronize) : μ—°κ²°μ‹œμž‘ 및 νšŒμ„ μ˜ κ°œμ„  μš©λ„λ‘œ μ‚¬μš©
  • FIN (Finish) : μ—°κ²°ν•΄μ œ 및 νšŒμ„  μ’…κ²°μ˜ μš©λ„λ‘œ μ‚¬μš©

μ—°κ²°

3Way μ—°κ²°

ν•΄μ œ

3Way μ—°κ²°