Skip to content

Latest commit

Β 

History

History
411 lines (284 loc) Β· 27.6 KB

04_Connection_Management.md

File metadata and controls

411 lines (284 loc) Β· 27.6 KB

04μž₯ πŸ™ 컀λ„₯μ…˜ 관리

4.1γ€€TCP 컀λ„₯μ…˜

4.2γ€€TCP의 μ„±λŠ₯에 λŒ€ν•œ κ³ λ €

4.3γ€€HTTP 컀λ„₯μ…˜ 관리

4.4 병렬 컀λ„₯μ…˜

4.5 지속 컀λ„₯μ…˜

4.6γ€€νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜

4.7 컀λ„₯μ…˜ λŠκΈ°μ— λŒ€ν•œ λ―ΈμŠ€ν„°λ¦¬


4.1 γ€€ TCP 컀λ„₯μ…˜γ€€ taelee

1. λ‹€μŒμ€ '죠의 컴퓨터 κ°€κ²Œμ—μ„œ μ „λ™κ³΅κ΅¬μ˜ λͺ©λ‘'을 κ°€μ Έμ˜¬ λ•Œ μƒμ„±λ˜λŠ” TCP 컀λ„₯μ…˜ 과정이닀. λΉˆμΉΈμ— μ•Œλ§žμ€ 닡을 λ³΄κΈ°μ—μ„œ μ°Ύμ•„ μ±„μ›Œλ„£μ–΄λ³΄μž

  • 보기(μ•ˆμ“°μ΄λŠ” 보기도 있음)

    포트번호(80), TCP 컀λ„₯μ…˜, GET μš”μ²­, HEAD μš”μ²­, HTTP 컀λ„₯μ…˜, 도메인 λ„€μž„, IP μ£Όμ†Œ

  1. λΈŒλΌμš°μ €κ°€ www.joes-hardware.comλΌλŠ” 호슀트 λͺ…을 μΆ”μΆœν•œλ‹€.

  2. λΈŒλΌμš°μ €κ°€ 이 호슀트 λͺ…에 λŒ€ν•œ (a. _______ )을/λ₯Ό μ°ΎλŠ”λ‹€.

  3. λΈŒλΌμš°μ €κ°€ (b. _______ )을/λ₯Ό μ–»λŠ”λ‹€.

  4. λΈŒλΌμš°μ €κ°€ 202.43.78.3의 80포트둜 (c. _______ )을 μƒμ„±ν•œλ‹€.

  5. λΈŒλΌμš°μ €κ°€ μ„œλ²„λ‘œ HTTP (d. _______ ) λ©”μ‹œμ§€λ₯Ό 보낸닀.

  6. λΈŒλΌμš°μ €κ°€ μ„œλ²„μ—μ„œ 온 HTTP 응닡 λ©”μ‹œμ§€λ₯Ό μ½λŠ”λ‹€.

  7. λΈŒλΌμš°μ €κ°€ 컀λ„₯μ…˜μ„ λŠλŠ”λ‹€.

2. λ‹€μŒ 보기λ₯Ό μ΄μš©ν•΄μ„œ HTTPS의 ν”„λ‘œν† μ½œ μŠ€νƒμ„ λ§Œλ“€μ–΄ 보자

  • HTTP, Network Interfaces, TLS or SSL, TCP

    a)_____________ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 계측
    b)_____________ λ³΄μ•ˆ 계측
    c)_____________ 전솑 계측
    IP λ„€ν¬μ›Œν¬ 계측
    d)_____________ 데이터 링크 계측

3. TCP 컀λ„₯μ…˜μ€ λ°œμ‹ μ§€ IP μ£Όμ†Œ, λ°œμ‹ μ§€ 포트, μˆ˜μ‹ μ§€ IP μ£Όμ†Œ, μˆ˜μ‹ μ§€ 포트 둜만 이루어져 μžˆλ‹€. ( O | X )

4. TCP 컀λ„₯μ…˜μ˜ 4가지 κ΅¬μ„±μš”μ†Œκ°€ κ°™λ‹€λ©΄ μ„œλ‘œ 같은 TCP 컀λ„₯μ…˜μ΄λ‹€. λ”°λΌμ„œ μ„œλ‘œ λ‹€λ₯Έ TCP 컀λ„₯μ…˜μ€ κ³΅ν†΅λœ κ΅¬μ„±μš”μ†Œλ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€. ( O | X )

5. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ„œλ²„μ†ŒμΌ“μ€ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμΌ“μ΄ 연결을 μ‹œλ„ν•˜λ©΄ μƒμ„±λœλ‹€. ( O | X )

πŸ“„ 닡지


4.2 γ€€ TCP의 μ„±λŠ₯에 λŒ€ν•œ κ³ λ €γ€€ yeosong

HTTPκ°€ TCP λ°”λ‘œ μœ— κ³„μΈ΅μ΄λ―€λ‘œ, HTTP νŠΈλžœμž­μ…˜μ˜ μ„±λŠ₯을 λ…Όν•  λ•Œ TCP μ„±λŠ₯을 κ³ λ €ν•  ν•„μš”κ°€ μžˆλ‹€.

4.2.1 HTTP νŠΈλžœμž­μ…˜ 지연

νŠΈλžœμž­μ…˜μ΄λž€?
  • ν•˜λ‚˜μ˜ 논리적 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ μž‘μ—…μ˜ λ‹¨μœ„
  • μž‘μ—…μ˜ 완전성을 보μž₯함
    • μ„±κ³΅μ‹œ 컀밋
    • μ‹€νŒ¨μ‹œ λ‘€λ°±(방금 μˆ˜ν–‰ μ‹€νŒ¨ν•œ νŠΈλžœμž­μ…˜μ„ 이전 μƒνƒœλ‘œ 되돌리고, μž¬μ‹œλ„ ν˜Ήμ€ 폐기함.)
  • HTTP transaction 1κ°œλŠ” 1개의 HTTP request와 그에 μƒμ‘ν•˜λŠ” HTTP response둜 μ΄λ£¨μ–΄μ Έμžˆλ‹€.
  • HTTP 지연은 ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„κ°€ λ„ˆλ¬΄ λ§Žμ€ 데이터λ₯Ό λ‚΄λ €λ°›κ±°λ‚˜ λ³΅μž‘ν•˜κ³  동적인 μžμ›λ“€μ„ μ‹€ν–‰ν•  λ•Œ 생긴닀. (O/X)
  • HTTP μ§€μ—°μ˜ λŒ€λΆ€λΆ„μ€ TCP λ„€νŠΈμ›Œν¬ 지연 λ•Œλ¬Έμ— 생긴닀. (O/X)
  • TCP λ„€νŠΈμ›Œν¬μ˜ 지연 μ •λ„λŠ” μš”μ²­/응닡 λ©”μ‹œμ§€μ˜ 크기, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ 거리에 λ”°λΌμ„œλ„ 달라진닀. (O/X)

4.2.2 μ„±λŠ₯ κ΄€λ ¨ μ€‘μš” μš”μ†Œ

4.2.3 TCP 컀λ„₯μ…˜ ν•Έλ“œμ…°μ΄ν¬ 지연

  • μ•„μ£Ό 큰 데이터λ₯Ό 주고받지 μ•ŠλŠ” ν‰λ²”ν•œ HTTP νŠΈλžœμž­μ…˜μ€ 50% μ΄μƒμ˜ μ‹œκ°„μ„ TCPλ₯Ό κ΅¬μ„±ν•˜λŠ” 데 μ“΄λ‹€. (O/X)
  • TCP κ΅¬μ„±μœΌλ‘œ μΈν•œ 지연을 μ œκ±°ν•˜κΈ° μœ„ν•΄ 이미 μ‘΄μž¬ν•˜λŠ” 컀λ„₯μ…˜μ„ μž¬ν™œμš©ν•˜κΈ°λ„ ν•œλ‹€. (O/X)

4.2.4 확인응닡 지연

  • TCPλŠ” 성곡적인 데이터 전솑을 보μž₯ν•˜κΈ° μœ„ν•΄ 확인응닡 νŒ¨ν‚·μ„ μ‚¬μš©ν•œλ‹€. (O/X)
  • '확인응닡 지연' μ•Œκ³ λ¦¬μ¦˜μ€ 확인응닡 νŒ¨ν‚·μ„ μž μ‹œ 버퍼에 λ‘” μ±„λ‘œ 편승(piggyback)ν•  수 μžˆλŠ” 데이터 νŒ¨ν‚· μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. (O/X)

4.2.5 TCP 느린 μ‹œμž‘(slow start)

  • μΈν„°λ„·μ˜ κΈ‰μž‘μŠ€λŸ¬μš΄ λΆ€ν•˜μ™€ ν˜Όμž‘μ„ λ°©μ§€ν•˜κΈ° μœ„ν•˜μ—¬ 컀λ„₯μ…˜μ˜ μ΅œλŒ€ 속도λ₯Ό μ œν•œν•˜μ—¬ 점차 λ†’μ—¬ λ‚˜κ°€λŠ” 것을 'silly window syndrome'이라고 λΆ€λ₯Έλ‹€. (O/X)
  • νŒ¨ν‚·μ΄ μ„±κ³΅μ μœΌλ‘œ μ „λ‹¬λ˜λŠ” 각 μ‹œμ μ— μ†‘μ‹ μžλŠ” μΆ”κ°€λ‘œ 4개의 νŒ¨ν‚·μ„ 더 전솑할 수 μžˆλŠ” κΆŒν•œμ„ μ–»λŠ”λ‹€. (O/X)
  • μƒˆλ‘œμš΄ 컀λ„₯μ…˜μ€ 항상 νŠœλ‹λœ 컀λ„₯μ…˜λ³΄λ‹€ λΉ λ₯΄λ‹€ (O/X)

4.2.6 넀이글(Nagle) μ•Œκ³ λ¦¬μ¦˜κ³Ό TCP_NODELAY

  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ λ„€νŠΈμ›Œν¬μ˜ νš¨μœ¨μ„ μœ„ν•΄ νŒ¨ν‚·μ„ μ „μ†‘ν•˜κΈ° 전에 λ§Žμ€ μ–‘μ˜ TCP 데이터λ₯Ό ν•œ 개의 λ©μ–΄λ¦¬λ‘œ ν•©μΉ˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. (O/X)
  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ μž‘μ€ λ©”μ‹œμ§€μ˜ 경우 νŒ¨ν‚·μ„ μ±„μš°μ§€ λͺ»ν•΄ 기닀리며 μ§€μ—°λ˜λŠ” 단점이 μžˆλŠ”λ°, 확인응닡 지연 μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ 이λ₯Ό 보완할 수 μžˆλ‹€. (O/X)
  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ HTTP μŠ€νƒμ— TCP_NODELAY νŒŒλΌλ―Έν„° 값을 μ„€μ •ν•˜λ©΄ λΉ„ν™œμ„±ν™” μ‹œν‚¬ 수 μžˆλ‹€. (O/X)

4.2.7 TIME_WAIT의 λˆ„μ κ³Ό 포트 고갈

  • TIME_WAIT 포트 κ³ κ°ˆμ€ μ‹€μ œ μƒν™©μ—μ„œλŠ” 문제λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠλŠ”λ‹€. (O/X)
  • 2MSL은 2뢄을 μ˜λ―Έν•œλ‹€. (O/β–²/X)

πŸ“„ 닡지


4.3 γ€€ HTTP 컀λ„₯μ…˜ 관리  hylee

  1. Connection ν—€λ”λŠ” μ„Έ 가지 μ’…λ₯˜μ˜ 토큰(HTTP 헀더 ν•„λ“œ λͺ…, μž„μ‹œμ μΈ 토큰 κ°’, close κ°’)을 전달받아 μ „μ†‘μžκ°€ λͺ©μ μ§€κΉŒμ§€μ˜ λͺ¨λ“  컀λ„₯μ…˜μ— μ›ν•˜λŠ” μ˜΅μ…˜μ„ μ§€μ •ν•˜κ²Œ ν•΄μ€€λ‹€. (O/X)
  2. HTTP μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ Connection 헀더와 ν•¨κ»˜ λ©”μ‹œμ§€λ₯Ό 전달받은 ν›„ λ‹€μŒ 홉(hop)에 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜κΈ° 전에 Connection 헀더와 Connection 헀더에 κΈ°μˆ λ˜μ–΄ μžˆλŠ” λͺ¨λ“  헀더듀을 μ‚­μ œν•  뿐 μ•„λ‹ˆλΌ Connection 헀더에 κΈ°μˆ λ˜μ–΄ μžˆμ§€ μ•ŠλŠ” 홉별 헀더듀도 μ‚­μ œν•΄μ„œ μ „λ‹¬ν•œλ‹€. (O/X)
  3. 순차적인 νŠΈλžœμž­μ…˜ 처리둜 μΈν•œ μ§€μ—°μ—λŠ” 물리적인 지연 뿐 μ•„λ‹ˆλΌ, ν•˜λ‚˜μ˜ 이미지λ₯Ό λ‚΄λ €λ°›κ³  μžˆλŠ” 쀑에 μ›ΉνŽ˜μ΄μ§€μ˜ λ‚˜λ¨Έμ§€ 곡간에 μ•„λ¬΄λŸ° λ³€ν™”κ°€ μ—†μ–΄μ„œ λŠκ»΄μ§€λŠ” _________ 인 지연 도 μžˆλ‹€.

πŸ“„ 닡지


4.4 γ€€ 병렬 컀λ„₯μ…˜γ€€ hylee

  1. 병렬 컀λ„₯μ…˜ 방식을 μ΄μš©ν•˜μ—¬ 3개의 이미지가 μžˆλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό λΈŒλΌμš°μ €κ°€ 보여쀄 λ•Œ 4개의 νŠΈλžœμž­μ…˜μ΄ 각각 λ³„λ„μ˜ 컀λ„₯μ…˜μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬λ˜μ–΄μ§„λ‹€. (O/X)
  2. 병렬 컀λ„₯μ…˜μ€ 단일 컀λ„₯μ…˜λ³΄λ‹€ 항상 더 λΉ λ₯΄μ§€ μ•Šλ‹€ (O/X)

πŸ“„ 닡지


4.5 γ€€ 지속 컀λ„₯μ…˜γ€€ yeha

  1. 지속 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 거리가 λ¨Ό 것을 λͺ¨λ‘ κ³ λ₯΄μ„Έμš”. (____)
    (1) μš”μ²­μ— λŒ€ν•œ μ²˜λ¦¬κ°€ μ™„λ£Œλœ ν›„ TCP 컀λ„₯μ…˜μ„ μœ μ§€ν•˜λ©° μ•žμœΌλ‘œ μžˆμ„ HTTP μš”μ²­μ— μž¬μ‚¬μš©ν•œλ‹€.
    (2) ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„κ°€ 컀λ„₯μ…˜μ„ 끊기 μ „κΉŒμ§€λŠ” νŠΈλžœμž­μ…˜ 간에도 컀λ„₯μ…˜μ„ μœ μ§€ν•œλ‹€.
    (3) TCP의 느린 μ‹œμž‘μœΌλ‘œ μΈν•œ 지연을 ν”Όν•¨μœΌλ‘œμ¨ λŒ€μ—­ν­μ€ μ†Œμš”λ˜μ§€λ§Œ μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€.
    (4) μˆ˜λ§Žμ€ 컀λ„₯μ…˜μ΄ 계속 μ—°κ²°λœ μƒνƒœλ‘œ μŒ“μ΄κ²Œ 되면 λΆˆν•„μš”ν•œ μ†Œλͺ¨κ°€ λ°œμƒν•œλ‹€.
    (5) 병렬 컀λ„₯μ…˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νš¨κ³Όμ μ΄λ‹€.

  2. 초기 keep-alive 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 거리가 λ¨Ό 것을 λͺ¨λ‘ κ³ λ₯΄μ„Έμš”. (___)
    (1) 초기 keep-alive 컀λ„₯μ…˜μ€ μƒν˜Έ 운용과 κ΄€λ ¨λœ 섀계에 λ¬Έμ œκ°€ μžˆμ—ˆλ‹€.
    (2) μ•„μ§κΉŒμ§€ λ§Žμ€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ—μ„œ μ‚¬μš©λ˜κ³  μžˆλ‹€.
    (3) (1)μ—μ„œ μ–ΈκΈ‰ν•œ μ„€κ³„μƒμ˜ λ¬Έμ œλŠ” μˆ˜μ •λ˜μ§€ μ•Šμ•˜λ‹€.

  3. keep-alive에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) HTTP/1.0μ—μ„œ 기본으둜 μ‚¬μš©λ˜μ§€λŠ” μ•ŠλŠ”λ‹€. (O/X)
    (2) HTTP/1.0 keep-alive 컀λ„₯μ…˜μ„ κ΅¬ν˜„ν•œ ν΄λΌμ΄μ–ΈνŠΈλŠ” 컀λ„₯μ…˜μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ μš”μ²­μ— Connection:Keep-Alive 헀더λ₯Ό λ°˜λ“œμ‹œ ν¬ν•¨μ‹œμΌœμ•Ό ν•œλ‹€. (O/X)
    (3) (1)의 μš”μ²­μ„ 받은 μ„œλ²„λŠ” 응닡 메세지에 λ°˜λ“œμ‹œ 같은 헀더λ₯Ό ν¬ν•¨μ‹œμΌœμ„œ 응닡해야 ν•œλ‹€. (O/X)
    (4) ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„λŠ” keep-alive μš”μ²­μ„ 받을 μ‹œ keep-alive 컀λ„₯μ…˜μ„ μœ μ§€ν•œλ‹€. (O/X)
    (5) keep-alive 응닡 헀더λ₯Ό 톡해 λ³΄λ‚΄λŠ” μ˜΅μ…˜ (timeout, max νŒŒλΌλ―Έν„° ..)λŠ” μ§€μ •ν•œ λŒ€λ‘œ λ™μž‘λœλ‹€. (O/X)
(6) 컀λ„₯μ…˜μ΄ λŠμ–΄μ§€κΈ° μ „ μ—”ν„°ν‹° 본문의 길이λ₯Ό μ•Œμ•„μ•Ό 컀λ„₯μ…˜μ„ μœ μ§€ν•  수 μžˆλ‹€. (O/X)
    (7) ν”„λ½μ‹œμ™€ κ²Œμ΄νŠΈμ›¨μ΄λŠ” Connection ν—€λ”μ˜ κ·œμΉ™μ„ μ² μ €ν•˜κ²Œ μ§€μΌœμ•Ό ν•œλ‹€. (O/X)

  4. HTTP/1.1의 지속 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) HTTP/1.1μ—μ„œλŠ” keep-alive 컀λ„₯μ…˜κ³Ό 섀계가 더 κ°œμ„ λœ 지속 컀λ„₯μ…˜μ„ μ§€μ›ν•œλ‹€. (O/X)
    (2) 별도 섀정을 ν•˜μ§€ μ•ŠλŠ” ν•œ λͺ¨λ“  컀λ„₯μ…˜μ„ 지속 컀λ„₯μ…˜μœΌλ‘œ μ·¨κΈ‰ν•œλ‹€. (O/X)
    (3) 컀λ„₯μ…˜μ„ 끊으렀면 헀더λ₯Ό ν¬ν•¨μ‹œν‚€μ§€ μ•Šμ€ μš”μ²­/응닡을 보내면 λœλ‹€. (O/X)
    (4) HTTP/1.1 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 쀑간에 λŠμ–΄μ§€λŠ” 컀λ„₯μ…˜μ„ 볡ꡬ할 수 μžˆμ–΄μ•Ό ν•œλ‹€. (O/X)

  5. Proxy-Connection 헀더에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) μ˜λ¦¬ν•œ ν”„λ½μ‹œλŠ” 의미 μ—†λŠ” λΉ„ν‘œμ€€ Proxy-Connection ν™•μž₯ 헀더λ₯Ό Connection ν—€λ”λ‘œ λ°”κΎΈμ–΄ μ „λ‹¬ν•œλ‹€. (O/X)
    (2) λ©μ²­ν•œ ν”„λ½μ‹œλŠ” Proxy-Connection 헀더 μ—­μ‹œ 무쑰건 μ „λ‹¬ν•˜μ§€λ§Œ μ›Ή μ„œλ²„κ°€ λ¬΄μ‹œν•˜κΈ° λ•Œλ¬Έμ— λ¬Έμ œκ°€ λ˜μ§€ μ•ŠλŠ”λ‹€. (O/X)

πŸ“„ 닡지


4.6 γ€€ νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜γ€€ kukim

  1. http ν΄λΌμ΄μ–ΈνŠΈλŠ” 지속컀λ„₯μ…˜ 여뢀와 상관없이 νŒŒμ΄ν”„λΌμΈμ„ μ—°κ²°ν•  수 μžˆλ‹€.(O/X)
  2. http ν΄λΌμ΄μ–ΈνŠΈλŠ” 지속 컀λ„₯μ…˜ 응닡에 λŒ€ν•΄ μš”μ²­ μˆœμ„œμ™€ 상관없이 Content-Length을 톡해 μ •λ ¬ν•˜μ—¬ 해석할 수 μžˆλ‹€. (O/X)
  3. http 지속 컀λ„₯μ…˜μ˜ μš”μ²­μ— λŒ€ν•œ μ„œλ²„μ˜ 응닡 메세지가 μ–΄λ– ν•œ 였λ₯˜λ‘œ λŠμ–΄μ§€λ”λΌλ„ μ„œλ²„μ—μ„œ 이λ₯Ό κΈ°μ–΅ν•˜μ—¬ λ‹€μ‹œ 보내쀀닀. (O/X)
  4. λͺ¨λ“  λ©”μ„œλ“œλŠ” νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€. (O/X)
  5. (+a) ν˜„μž¬ HTTP/1.1 νŒŒμ΄ν”„λΌμ΄λ‹μ€ λͺ¨λ˜ λΈŒλΌμš°μ €μ—μ„œ 기본적으둜 ν™œμ„±ν™”λ˜μ–΄ μ‚¬μš©λ˜κ³  μžˆλ‹€. (O/X)

πŸ“„ 닡지


4.7 γ€€ 컀λ„₯μ…˜ λŠκΈ°μ— λŒ€ν•œ λ―ΈμŠ€ν„°λ¦¬γ€€ kukim

  1. HTTP 컀λ„₯μ…˜μ€ λ°˜λ“œμ‹œ 메세지λ₯Ό λ‹€ 보낸 ν›„ μ’…λ£Œλœλ‹€. (O/X)
  2. Content-Length ν—€λ”μ˜ 역할은 무엇인가? (주관식)
  3. HTTP/1.1 λͺ…μ„Έμ—μ„œ μ–Έμ œ, μ–΄λ–»κ²Œ 컀λ„₯μ…˜μ„ λŠλŠ”κ°€μ— λŒ€ν•œ λͺ…ν™•ν•œ 기쀀이 μ •ν•΄μ Έμžˆλ‹€. (O/X)
  4. μš°μ•„ν•˜κ²Œ
  • β€˜μš°μ•„ν•˜κ²Œ 컀λ„₯μ…˜μ„ λŠλŠ” 방법 쀑’ ν΄λΌμ΄μ–ΈνŠΈκ°€ 예기치 μ•Šμ€ μƒν™©μ—μ„œ 컀λ„₯μ…˜μ„ λŠμ–΄μ•Ό ν•  λ•Œ 절반 끊기 쀑 (μž…λ ₯/좜λ ₯ 채널)을 λŠλŠ”λ‹€.
  • 절반 끊기 (μž…λ ₯/좜λ ₯ 채널)을 λŠμ€ ν›„ μš°μ•„ν•˜κ²Œ κΈ°λ‹€λ¦°λ‹€. (O/β–²/X)

πŸ“„ 닡지






πŸ“„ μ •λ‹΅ 및 ν•΄μ„€


4.1 γ€€ TCP 컀λ„₯μ…˜γ€€ taelee

1. λ‹€μŒμ€ '죠의 컴퓨터 κ°€κ²Œμ—μ„œ μ „λ™κ³΅κ΅¬μ˜ λͺ©λ‘'을 κ°€μ Έμ˜¬ λ•Œ μƒμ„±λ˜λŠ” TCP 컀λ„₯μ…˜ 과정이닀. λΉˆμΉΈμ— μ•Œλ§žμ€ 닡을 λ³΄κΈ°μ—μ„œ μ°Ύμ•„ μ±„μ›Œλ„£μ–΄λ³΄μž

  • 보기(μ•ˆμ“°μ΄λŠ” 보기도 있음)

    포트번호(80), TCP 컀λ„₯μ…˜, GET μš”μ²­, HEAD μš”μ²­, HTTP 컀λ„₯μ…˜, 도메인 λ„€μž„, IP μ£Όμ†Œ

  1. λΈŒλΌμš°μ €κ°€ www.joes-hardware.comλΌλŠ” 호슀트 λͺ…을 μΆ”μΆœν•œλ‹€.

  2. λΈŒλΌμš°μ €κ°€ 이 호슀트 λͺ…에 λŒ€ν•œ (a. IP μ£Όμ†Œ )을/λ₯Ό μ°ΎλŠ”λ‹€.

  3. λΈŒλΌμš°μ €κ°€ (b. 포트번호(80) )을/λ₯Ό μ–»λŠ”λ‹€.

  4. λΈŒλΌμš°μ €κ°€ 202.43.78.3의 80포트둜 (c. TCP 컀λ„₯μ…˜ )을 μƒμ„±ν•œλ‹€.

  5. λΈŒλΌμš°μ €κ°€ μ„œλ²„λ‘œ HTTP (d. GET μš”μ²­ ) λ©”μ‹œμ§€λ₯Ό 보낸닀.

  6. λΈŒλΌμš°μ €κ°€ μ„œλ²„μ—μ„œ 온 HTTP 응닡 λ©”μ‹œμ§€λ₯Ό μ½λŠ”λ‹€.

  7. λΈŒλΌμš°μ €κ°€ 컀λ„₯μ…˜μ„ λŠλŠ”λ‹€.

2. λ‹€μŒ 보기λ₯Ό μ΄μš©ν•΄μ„œ HTTPS의 ν”„λ‘œν† μ½œ μŠ€νƒμ„ λ§Œλ“€μ–΄ 보자

  • HTTP, Network Interfaces, TLS or SSL, TCP

    a) HTTP μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 계측
    b) TLS or SSL λ³΄μ•ˆ 계측
    IP 전솑 계측
    c) TCP λ„€ν¬μ›Œν¬ 계측
    d) Network Interfaces 데이터 링크 계측

3. TCP 컀λ„₯μ…˜μ€ λ°œμ‹ μ§€ IP μ£Όμ†Œ, λ°œμ‹ μ§€ 포트, μˆ˜μ‹ μ§€ IP μ£Όμ†Œ, μˆ˜μ‹ μ§€ 포트 둜만 이루어져 μžˆλ‹€. ( O )

4. TCP 컀λ„₯μ…˜μ˜ 4가지 κ΅¬μ„±μš”μ†Œκ°€ κ°™λ‹€λ©΄ μ„œλ‘œ 같은 TCP 컀λ„₯μ…˜μ΄λ‹€. λ”°λΌμ„œ μ„œλ‘œ λ‹€λ₯Έ TCP 컀λ„₯μ…˜μ€ κ³΅ν†΅λœ κ΅¬μ„±μš”μ†Œλ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€. ( X )

  • κ³΅ν†΅λœ κ΅¬μ„±μš”μ†Œλ₯Ό κ°–κ³  μžˆμ–΄λ„ λͺ¨λ“  μš”μ†Œκ°€ 갖지 μ•ŠμœΌλ©΄ μ„œλ‘œ λ‹€λ₯Έ TCP컀λ„₯μ…˜μ΄λ‹€.

5. μ†ŒμΌ“ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ„œλ²„μ†ŒμΌ“μ€ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμΌ“μ΄ 연결을 μ‹œλ„ν•˜λ©΄ μƒμ„±λœλ‹€. ( X )

  • μ„œλ²„ μ†ŒμΌ“μ€ ν΄λΌμ΄μ–ΈνŠΈ μ†ŒμΌ“μ˜ μš”μ²­μ„ λ°›κΈ° 전에 미리 생성(Create)되고 ν¬νŠΈλ²ˆν˜Έμ™€ 묢인(Bind) λ’€ ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„°μ˜ 연결을 μ£Όμ‹œ(Listen)ν•˜κ³  μžˆμ–΄μ•Όν•œλ‹€.

πŸ“ 문제


4.2 γ€€ TCP의 μ„±λŠ₯에 λŒ€ν•œ κ³ λ €γ€€ yeosong

4.2.1 HTTP νŠΈλžœμž­μ…˜ 지연

  • HTTP 지연은 ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„κ°€ λ„ˆλ¬΄ λ§Žμ€ 데이터λ₯Ό λ‚΄λ €λ°›κ±°λ‚˜ λ³΅μž‘ν•˜κ³  동적인 μžμ›λ“€μ„ μ‹€ν–‰ν•  λ•Œ 생긴닀. (O)
  • HTTP μ§€μ—°μ˜ λŒ€λΆ€λΆ„μ€ TCP λ„€νŠΈμ›Œν¬ 지연 λ•Œλ¬Έμ— 생긴닀. (O)
  • TCP λ„€νŠΈμ›Œν¬μ˜ 지연 μ •λ„λŠ” μš”μ²­/응닡 λ©”μ‹œμ§€μ˜ 크기, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ 거리에 λ”°λΌμ„œλ„ 달라진닀. (O)

4.2.3 TCP 컀λ„₯μ…˜ ν•Έλ“œμ…°μ΄ν¬ 지연

  • μ•„μ£Ό 큰 데이터λ₯Ό 주고받지 μ•ŠλŠ” ν‰λ²”ν•œ HTTP νŠΈλžœμž­μ…˜μ€ 50% μ΄μƒμ˜ μ‹œκ°„μ„ TCPλ₯Ό κ΅¬μ„±ν•˜λŠ” 데 μ“΄λ‹€. (O)
  • TCP κ΅¬μ„±μœΌλ‘œ μΈν•œ 지연을 μ œκ±°ν•˜κΈ° μœ„ν•΄ 이미 μ‘΄μž¬ν•˜λŠ” 컀λ„₯μ…˜μ„ μž¬ν™œμš©ν•˜κΈ°λ„ ν•œλ‹€. (O)

4.2.4 확인응닡 지연

  • TCPλŠ” 성곡적인 데이터 전솑을 보μž₯ν•˜κΈ° μœ„ν•΄ 확인응닡 νŒ¨ν‚·μ„ μ‚¬μš©ν•œλ‹€. (O)
  • '확인응닡 지연' μ•Œκ³ λ¦¬μ¦˜μ€ 확인응닡 νŒ¨ν‚·μ„ μž μ‹œ 버퍼에 λ‘” μ±„λ‘œ 편승(piggyback)ν•  수 μžˆλŠ” 데이터 νŒ¨ν‚· μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. (O)

4.2.5 TCP 느린 μ‹œμž‘(slow start)

  • μΈν„°λ„·μ˜ κΈ‰μž‘μŠ€λŸ¬μš΄ λΆ€ν•˜μ™€ ν˜Όμž‘μ„ λ°©μ§€ν•˜κΈ° μœ„ν•˜μ—¬ 컀λ„₯μ…˜μ˜ μ΅œλŒ€ 속도λ₯Ό μ œν•œν•˜μ—¬ 점차 λ†’μ—¬ λ‚˜κ°€λŠ” 것을 'silly window syndrome'이라고 λΆ€λ₯Έλ‹€. (X)
    • TCP 느린 μ‹œμž‘μ΄λΌκ³  ν•œλ‹€.
    • silly window syndrome μ „μ†‘μžλŠ” 1λ°”μ΄νŠΈ 크기의 νŒ¨ν‚·μ„ λŒ€λŸ‰μœΌλ‘œ μ „μ†‘ν•˜λŠ” λΉ„νš¨μœ¨μ , λ°˜μ‚¬νšŒμ μΈ μ „μ†‘μžλ₯Ό λ§ν•œλ‹€.
  • νŒ¨ν‚·μ΄ μ„±κ³΅μ μœΌλ‘œ μ „λ‹¬λ˜λŠ” 각 μ‹œμ μ— μ†‘μ‹ μžλŠ” μΆ”κ°€λ‘œ 4개의 νŒ¨ν‚·μ„ 더 전솑할 수 μžˆλŠ” κΆŒν•œμ„ μ–»λŠ”λ‹€. (X)
    • 2κ°œμ”© λŠ˜μ–΄λ‚œλ‹€. 이λ₯Ό 'congestion windowλ₯Ό μ—°λ‹€'κ³  λ§ν•œλ‹€.
  • μƒˆλ‘œμš΄ 컀λ„₯μ…˜μ€ 항상 νŠœλ‹λœ 컀λ„₯μ…˜λ³΄λ‹€ λΉ λ₯΄λ‹€ (X)
    • TCPλŠ” μ–Έμ œλ‚˜ 느린 μ‹œμž‘μ„ ν•˜λ―€λ‘œ, 느린 μ‹œμž‘ 이후 νŠœλ‹λœ 컀λ„₯μ…˜μ΄ μ–Έμ œλ‚˜ μƒˆλ‘œμš΄ 컀λ„₯μ…˜λ³΄λ‹€ λΉ λ₯΄λ‹€.

4.2.6 넀이글(Nagle) μ•Œκ³ λ¦¬μ¦˜κ³Ό TCP_NODELAY

  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ λ„€νŠΈμ›Œν¬μ˜ νš¨μœ¨μ„ μœ„ν•΄ νŒ¨ν‚·μ„ μ „μ†‘ν•˜κΈ° 전에 λ§Žμ€ μ–‘μ˜ TCP 데이터λ₯Ό ν•œ 개의 λ©μ–΄λ¦¬λ‘œ ν•©μΉ˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€. (O)
  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ μž‘μ€ λ©”μ‹œμ§€μ˜ 경우 νŒ¨ν‚·μ„ μ±„μš°μ§€ λͺ»ν•΄ 기닀리며 μ§€μ—°λ˜λŠ” 단점이 μžˆλŠ”λ°, 확인응닡 지연 μ•Œκ³ λ¦¬μ¦˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ 이λ₯Ό 보완할 수 μžˆλ‹€. (X)
    • 97p ν•¨κ»˜ 쓰일 경우 ν˜•νŽΈμ—†μ΄ λ™μž‘ν•œλ‹€. 넀이글은 확인응닡을 기닀리고, 확인응닡 지연은 확인응닡을 μ§€μ—°μ‹œν‚¨λ‹€.
  • 넀이글 μ•Œκ³ λ¦¬μ¦˜μ€ HTTP μŠ€νƒμ— TCP_NODELAY νŒŒλΌλ―Έν„° 값을 μ„€μ •ν•˜λ©΄ λΉ„ν™œμ„±ν™” μ‹œν‚¬ 수 μžˆλ‹€. (O)

4.2.7 TIME_WAIT의 λˆ„μ κ³Ό 포트 고갈

  • TIME_WAIT 포트 κ³ κ°ˆμ€ μ‹€μ œ μƒν™©μ—μ„œλŠ” 문제λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•ŠλŠ”λ‹€. (O)
    • 98p 'μ„œλ²„κ°€ μ΄ˆλ‹Ή 500개 μ΄μƒμ˜ νŠΈλžœμž­μ…˜μ„ μ²˜λ¦¬ν•  만큼 λΉ λ₯΄μ§€ μ•Šλ‹€λ©΄ TIME_WAIT 포트 κ³ κ°ˆμ€ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ... λ₯Ό μ“Έ μˆ˜λ„ μžˆλ‹€.'
  • 2MSL은 2뢄을 μ˜λ―Έν•œλ‹€. (β–²)
    • ν”νžˆ 2뢄이라고 ν•˜κΈ΄ ν•œλ‹€.
    • 2MSLμ΄λž€ Maximum Segment Lifetime(=μ„Έκ·Έλ¨ΌνŠΈμ˜ μ΅œλŒ€ 생λͺ…μ£ΌκΈ°)의 2λ°°λ₯Ό λ§ν•œλ‹€.
    • λΌμš°ν„°κ°€ 느렸던 λ•Œμ— 컀λ„₯μ…˜μ„ 마친 νŒ¨ν‚·μ΄ μ‚΄μ•„μžˆλŠ” μ‹œκ°„μ΄ μ•½ 1λΆ„μ΄μ—¬μ„œ, κ·Έκ±Έ 2λ°° ν•΄μ„œ = 2λΆ„μ΄μ—ˆλ‹€.
    • ν˜„μž¬λŠ” 2MSL = 1 ~ 4뢄이며 μš΄μ˜μ²΄μ œμ— 따라 λ‹€λ₯Ό 수 있고, 이 값은 쑰정이 κ°€λŠ₯ν•˜λ‹€.

πŸ“ 문제


4.3 γ€€ HTTP 컀λ„₯μ…˜ 관리  hylee

  1. Connection ν—€λ”λŠ” μ„Έ 가지 μ’…λ₯˜μ˜ 토큰(HTTP 헀더 ν•„λ“œ λͺ…, μž„μ‹œμ μΈ 토큰 κ°’, close κ°’)을 전달받아 μ „μ†‘μžκ°€ λͺ©μ μ§€κΉŒμ§€μ˜ λͺ¨λ“  컀λ„₯μ…˜μ— μ›ν•˜λŠ” μ˜΅μ…˜μ„ μ§€μ •ν•˜κ²Œ ν•΄μ€€λ‹€.
  • μ •λ‹΅ : X
    • 3가지 μ’…λ₯˜μ˜ 토큰은 λ§žλŠ”λ° Connection ν—€λ”λŠ” μ „μ†‘μžκ°€ νŠΉμ • 컀λ„₯μ…˜μ—λ§Œ ν•΄λ‹Ήλ˜λŠ” μ˜΅μ…˜μ„ μ§€μ •ν•˜κ²Œ ν•΄μ€€λ‹€. (p. 99, 100)
  1. HTTP μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ Connection 헀더와 ν•¨κ»˜ λ©”μ‹œμ§€λ₯Ό 전달받은 ν›„ λ‹€μŒ 홉(hop)에 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜κΈ° 전에 Connection 헀더와 Connection 헀더에 κΈ°μˆ λ˜μ–΄ μžˆλŠ” λͺ¨λ“  헀더듀을 μ‚­μ œν•  뿐 μ•„λ‹ˆλΌ Connection 헀더에 κΈ°μˆ λ˜μ–΄ μžˆμ§€ μ•ŠλŠ” 홉별 헀더듀도 μ‚­μ œν•΄μ„œ μ „λ‹¬ν•œλ‹€.
  • μ •λ‹΅ : O
    • 홉별 헀더듀 μ—­μ‹œ μ „λ‹¬ν•˜κ±°λ‚˜ μΊμ‹œν•˜λ©΄ μ•ˆ λœλ‹€. ex) Proxy-Authenticate, Proxy-Connection, Transfer-Encoding, Upgrade (p. 99, 110)
  1. 순차적인 νŠΈλžœμž­μ…˜ 처리둜 μΈν•œ μ§€μ—°μ—λŠ” 물리적인 지연 뿐 μ•„λ‹ˆλΌ, ν•˜λ‚˜μ˜ 이미지λ₯Ό λ‚΄λ €λ°›κ³  μžˆλŠ” μ€‘μ—λŠ” μ›ΉνŽ˜μ΄μ§€μ˜ λ‚˜λ¨Έμ§€ 곡간에 μ•„λ¬΄λŸ° λ³€ν™”κ°€ μ—†μ–΄μ„œ λŠκ»΄μ§€λŠ” _________ 인 지연 도 μžˆλ‹€.
  • μ •λ‹΅ : 심리적 (Tmi.μ €ν•΄μƒλ„μ—μ„œ κ³ ν•΄μƒλ„λ‘œ λ°”λ€Œκ²Œ ν•˜λŠ” 것도 심리적인 지연을 μ€„μ—¬μ£ΌλŠ”λ° νš¨κ³Όκ°€ μ’‹λ‹€κ³  ν•œλ‹€.) (p. 100)

πŸ“ 문제


4.4 γ€€ 병렬 컀λ„₯μ…˜γ€€ hylee

  1. 병렬 컀λ„₯μ…˜ 방식을 μ΄μš©ν•˜μ—¬ 3개의 이미지가 μžˆλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό λΈŒλΌμš°μ €κ°€ 보여쀄 λ•Œ 4개의 νŠΈλžœμž­μ…˜μ΄ 각각 λ³„λ„μ˜ 컀λ„₯μ…˜μ—μ„œ λ™μ‹œμ— μ²˜λ¦¬λ˜μ–΄μ§„λ‹€. (O/X)
  • μ •λ‹΅ : X
    • Html νŽ˜μ΄μ§€λ₯Ό λ‚΄λ €λ°›λŠ” 1개의 νŠΈλžœμž­μ…˜ 이후 3개의 νŠΈλžœμž­μ…˜μ΄ λ™μ‹œμ— μ²˜λ¦¬λœλ‹€. (λ™μ‹œκ°€ μ’€ μ• λ§€ν•˜κΈ΄ ν•˜λ‹€. 보톡은 μŠ€ν”„νŠΈμ›¨μ–΄μ˜ μ„±λŠ₯ λ•Œλ¬Έμ— 각 컀λ„₯μ…˜ μš”μ²­ 간에 μ•½κ°„μ˜ 지연이 μžˆμ„ 수 μžˆλ‹€κ³  ν•œλ‹€.) (p.102)
  1. 병렬 컀λ„₯μ…˜μ€ 단일 컀λ„₯μ…˜λ³΄λ‹€ 항상 더 λΉ λ₯΄μ§€ μ•Šλ‹€. (O/X)
  • μ •λ‹΅ : O
    • 일반적으둜 병렬 컀λ„₯μ…˜μ΄ 더 λΉ λ₯΄κΈ΄ ν•˜μ§€λ§Œ λ‹€μŒκ³Ό 같은 μ˜ˆμ—μ„œλŠ” 더 였래 걸릴 수 μžˆλ‹€. ex) ν΄λΌμ΄μ–ΈνŠΈμ˜ λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­μ΄ 쒁을 λ•Œ, λŒ€λΆ€λΆ„μ˜ μ‹œκ°„μ„ 데이터λ₯Ό μ „μ†‘ν•˜λŠ”λ°μ— μ“΄λ‹€κ±°λ‚˜, μ—¬λŸ¬κ°œμ˜ 컀λ„₯μ…˜μ„ μƒμ„±ν•˜λ©΄μ„œ μƒκΈ°λŠ” λΆ€ν•˜ λ•Œλ¬Έμ— 순차적으둜 ν•˜λŠ” 것보닀 였래 걸릴 수 μžˆλ‹€. πŸ“ 문제

4.5 γ€€ 지속 컀λ„₯μ…˜γ€€ yeha

  1. 지속 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 거리가 λ¨Ό 것을 λͺ¨λ‘ κ³ λ₯΄μ„Έμš”. (3)
    (1) μš”μ²­μ— λŒ€ν•œ μ²˜λ¦¬κ°€ μ™„λ£Œλœ ν›„ TCP 컀λ„₯μ…˜μ„ μœ μ§€ν•˜λ©° μ•žμœΌλ‘œ μžˆμ„ HTTP μš”μ²­μ— μž¬μ‚¬μš©ν•œλ‹€. (O)
    (2) ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„κ°€ 컀λ„₯μ…˜μ„ 끊기 μ „κΉŒμ§€λŠ” νŠΈλžœμž­μ…˜ 간에도 컀λ„₯μ…˜μ„ μœ μ§€ν•œλ‹€. (O)
    (3) TCP의 느린 μ‹œμž‘μœΌλ‘œ μΈν•œ 지연을 ν”Όν•¨μœΌλ‘œμ¨ λŒ€μ—­ν­μ€ μ†Œμš”λ˜μ§€λ§Œ μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€. (X)
    => ν•΄λ‹Ή μ„œλ²„μ— 이미 λ§Ίμ–΄μ Έ μžˆλŠ” 지속 컀λ„₯μ…˜μ„ μž¬μ‚¬μš©ν•¨μœΌλ‘œμ¨ 컀λ„₯μ…˜μ„ λ§ΊκΈ° μœ„ν•œ μ‚¬μ „μž‘μ—…κ³Ό 지연을 쀄여 μ‹œκ°„μ„ μ ˆμ•½ν•  수 μžˆλ‹€. λ˜ν•œ 컀λ„₯μ…˜μ΄ 이미 λ§Ίμ–΄μ Έ 있기 λ•Œλ¬Έμ— TCP의 느린 μ‹œμž‘μœΌλ‘œ μΈν•œ 지연을 ν”Όν•¨μœΌλ‘œμ¨ 더 λΉ λ₯΄κ²Œ 데이터λ₯Ό 전솑할 수 μžˆλ‹€. 병렬 컀λ„₯μ…˜μ€ 각 νŠΈλž™μž­μ…˜λ§ˆλ‹€ μƒˆλ‘œμš΄ 컀λ„₯μ…˜μ„ λ§Ίκ³  끊기 λ•Œλ¬Έμ— μ‹œκ°„κ³Ό λŒ€μ—­ν­μ΄ μ†Œμš”λœλ‹€.
    (4) μˆ˜λ§Žμ€ 컀λ„₯μ…˜μ΄ 계속 μ—°κ²°λœ μƒνƒœλ‘œ μŒ“μ΄κ²Œ 되면 λΆˆν•„μš”ν•œ μ†Œλͺ¨κ°€ λ°œμƒν•œλ‹€. (O)
    (5) 병렬 컀λ„₯μ…˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νš¨κ³Όμ μ΄λ‹€. (O)

  2. 초기 keep-alive 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 거리가 λ¨Ό 것을 λͺ¨λ‘ κ³ λ₯΄μ„Έμš”. (3)
    (1) 초기 keep-alive 컀λ„₯μ…˜μ€ μƒν˜Έ 운용과 κ΄€λ ¨λœ 섀계에 λ¬Έμ œκ°€ μžˆμ—ˆλ‹€. (O)
    (2) μ•„μ§κΉŒμ§€ λ§Žμ€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ—μ„œ μ‚¬μš©λ˜κ³  μžˆλ‹€. (O)
    (3) (1)μ—μ„œ μ–ΈκΈ‰ν•œ μ„€κ³„μƒμ˜ λ¬Έμ œλŠ” μˆ˜μ •λ˜μ§€ μ•Šμ•˜λ‹€. (X)
    => 초기 keep-alive 컀λ„₯μ…˜μ˜ μ„€κ³„μƒμ˜ λ¬Έμ œλŠ” HTTP/1.1μ—μ„œ μˆ˜μ •λ˜μ—ˆλ‹€.

  3. keep-alive에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) HTTP/1.0μ—μ„œ 기본으둜 μ‚¬μš©λ˜μ§€λŠ” μ•ŠλŠ”λ‹€. (O)
    (2) HTTP/1.0 keep-alive 컀λ„₯μ…˜μ„ κ΅¬ν˜„ν•œ ν΄λΌμ΄μ–ΈνŠΈλŠ” 컀λ„₯μ…˜μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ μš”μ²­μ— Connection:Keep-Alive 헀더λ₯Ό λ°˜λ“œμ‹œ ν¬ν•¨μ‹œμΌœμ•Ό ν•œλ‹€. (O)
    (3) (1)의 μš”μ²­μ„ 받은 μ„œλ²„λŠ” 응닡 메세지에 λ°˜λ“œμ‹œ 같은 헀더λ₯Ό ν¬ν•¨μ‹œμΌœμ„œ 응닡해야 ν•œλ‹€. (X) => (1)의 응닡을 받은 μ„œλ²„λŠ” λ‹€μŒ μš”μ²­λ„ 이 컀λ„₯μ…˜μ„ 톡해 λ°›κ³ μž ν•  λ•Œ, 응닡 메세지에 같은 헀더λ₯Ό ν¬ν•¨μ‹œμΌœμ„œ μ‘λ‹΅ν•œλ‹€.
    (4) ν΄λΌμ΄μ–ΈνŠΈλ‚˜ μ„œλ²„λŠ” keep-alive μš”μ²­μ„ 받을 μ‹œ keep-alive 컀λ„₯μ…˜μ„ μœ μ§€ν•œλ‹€. (X)
    => keep-alive μš”μ²­μ„ λ°›μ•˜λ‹€κ³  ν•΄μ„œ 무쑰건 λ”°λ₯Ό ν•„μš”λŠ” μ—†λ‹€. λ˜ν•œ ν˜„μž¬μ˜ keep-alive 컀λ„₯μ…˜μ„ λŠκ±°λ‚˜ 컀λ„₯μ…˜μ—μ„œ μ²˜λ¦¬λ˜λŠ” νŠΈλž™μž­μ…˜μ˜ 수λ₯Ό μ œν•œν• μˆ˜λ„ μžˆλ‹€.
    (5) keep-alive 응닡 헀더λ₯Ό 톡해 λ³΄λ‚΄λŠ” μ˜΅μ…˜ (timeout, max νŒŒλΌλ―Έν„° ..)λŠ” μ§€μ •ν•œ λŒ€λ‘œ λ™μž‘λœλ‹€. (X)
    => 두 νŒŒλΌλ―Έν„° λͺ¨λ‘ κ·ΈλŒ€λ‘œ λ™μž‘ν•œλ‹€λŠ” 보μž₯은 μ—†λ‹€. (P.107)
    (6) 컀λ„₯μ…˜μ΄ λŠμ–΄μ§€κΈ° μ „ μ—”ν„°ν‹° 본문의 길이λ₯Ό μ•Œμ•„μ•Ό 컀λ„₯μ…˜μ„ μœ μ§€ν•  수 μžˆλ‹€. (O)
    (7) ν”„λ½μ‹œμ™€ κ²Œμ΄νŠΈμ›¨μ΄λŠ” Connection ν—€λ”μ˜ κ·œμΉ™μ„ μ² μ €ν•˜κ²Œ μ§€μΌœμ•Ό ν•œλ‹€. (O)

  4. HTTP/1.1의 지속 컀λ„₯μ…˜μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) HTTP/1.1μ—μ„œλŠ” keep-alive 컀λ„₯μ…˜κ³Ό 섀계가 더 κ°œμ„ λœ 지속 컀λ„₯μ…˜μ„ μ§€μ›ν•œλ‹€. (X)
    => HTTP/1.1μ—μ„œλŠ” keep-alive 컀λ„₯μ…˜μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
    (2) 별도 섀정을 ν•˜μ§€ μ•ŠλŠ” ν•œ λͺ¨λ“  컀λ„₯μ…˜μ„ 지속 컀λ„₯μ…˜μœΌλ‘œ μ·¨κΈ‰ν•œλ‹€. (O)
    (3) 컀λ„₯μ…˜μ„ 끊으렀면 헀더λ₯Ό ν¬ν•¨μ‹œν‚€μ§€ μ•Šμ€ μš”μ²­/응닡을 보내면 λœλ‹€. (X)
    => Connection: close 헀더λ₯Ό λͺ…μ‹œν•΄μ•Ό ν•œλ‹€. Connection: close헀더λ₯Ό λ³΄λƒˆμœΌλ©΄ κ·Έ 컀λ„₯μ…˜μœΌλ‘œ 좔가적인 μš”μ²­μ„ 보낼 수 μ—†λ‹€. 응닡에 Connection: close헀더가 μ—†μœΌλ©΄ 응닡 후에도 HTTP/1.1 컀λ„₯μ…˜μ„ μœ μ§€ν•˜μžλŠ” κ²ƒμœΌλ‘œ μΆ”μ •ν•œλ‹€.
    (4) HTTP/1.1 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 쀑간에 λŠμ–΄μ§€λŠ” 컀λ„₯μ…˜μ„ 볡ꡬ할 수 μžˆμ–΄μ•Ό ν•œλ‹€. (O) (p.113)

  5. Proxy-Connection 헀더에 λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 맞으면 O, 틀리면 Xν•˜μ„Έμš”.
    (1) μ˜λ¦¬ν•œ ν”„λ½μ‹œλŠ” 의미 μ—†λŠ” λΉ„ν‘œμ€€ Proxy-Connection ν™•μž₯ 헀더λ₯Ό Connection ν—€λ”λ‘œ λ°”κΎΈμ–΄ μ „λ‹¬ν•œλ‹€. (O)
    (2) λ©μ²­ν•œ ν”„λ½μ‹œλŠ” Proxy-Connection 헀더 μ—­μ‹œ 무쑰건 μ „λ‹¬ν•˜μ§€λ§Œ μ›Ή μ„œλ²„κ°€ λ¬΄μ‹œν•˜κΈ° λ•Œλ¬Έμ— λ¬Έμ œκ°€ λ˜μ§€ μ•ŠλŠ”λ‹€. (O)

πŸ“ 문제


4.6 γ€€ νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜γ€€ kukim

  1. http ν΄λΌμ΄μ–ΈνŠΈλŠ” 지속컀λ„₯μ…˜ 여뢀와 상관없이 νŒŒμ΄ν”„λΌμΈμ„ μ—°κ²°ν•  수 μžˆλ‹€.(O/X)
  • μ •λ‹΅ : X
    • 지속컀λ„₯μ…˜μΈμ§€ ν™•μΈν•˜κΈ° μ „κΉŒμ§€λŠ” νŒŒμ΄ν”„λΌμΈμ„ 이어선 μ•ˆλœλ‹€.
  1. http ν΄λΌμ΄μ–ΈνŠΈλŠ” 지속 컀λ„₯μ…˜ 응닡에 λŒ€ν•΄ μš”μ²­ μˆœμ„œμ™€ 상관없이 Content-Length을 톡해 μ •λ ¬ν•˜μ—¬ 해석할 수 μžˆλ‹€. (O/X)
  • μ •λ‹΅ : X
    • http 응닡은 μš”μ²­ μˆœμ„œμ™€ κ°™κ²Œ μ™€μ•Όν•œλ‹€. http λ©”μ„Έμ§€λŠ” 순번이 맀겨져 μžˆμ§€ μ•Šμ•„μ„œ 응닡이 μˆœμ„œμ—†μ΄ 였면 μˆœμ„œμ— 맞게 μ •λ ¬ μ‹œν‚¬ 방법이 μ—†λ‹€.
  1. http 지속 컀λ„₯μ…˜μ˜ μš”μ²­μ— λŒ€ν•œ μ„œλ²„μ˜ 응닡 메세지가 μ–΄λ– ν•œ 였λ₯˜λ‘œ λŠμ–΄μ§€λ”λΌλ„ μ„œλ²„μ—μ„œ 이λ₯Ό κΈ°μ–΅ν•˜μ—¬ λ‹€μ‹œ 보내쀀닀. (O/X)
  • μ •λ‹΅ : X
    • http ν΄λΌμ΄μ–ΈνŠΈλŠ” 컀λ„₯μ…˜μ΄ μ–Έμ œ λŠμ–΄μ§€λ”λΌλ„ μ™„λ£Œλ˜μ§€ μ•Šμ€ μš”μ²­μ΄ νŒŒμ΄ν”„λΌμΈμ— 있으면 μ–Έμ œλ“  λ‹€μ‹œ μš”μ²­μ„ 보낼 μ€€λΉ„κ°€ λ˜μ–΄μ•Ό ν•œλ‹€.
  1. λͺ¨λ“  λ©”μ„œλ“œλŠ” νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€. (O/X)
  • μ •λ‹΅ : X
    • λ©±λ“±ν•œ λ©”μ„œλ“œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. λΉ„λ©±λ“±(nonidempotent)ν•œ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ νŒŒμ΄ν”„λΌμΈμ„ ν†΅ν•œ μš”μ²­ 쀑 μ–΄λ–€ 것듀이 μ„œλ²„μ—μ„œ μ²˜λ¦¬κ°€ λ˜μ—ˆλŠ”μ§€ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— μš”μ²­μ„ 재차 보내면 λ¬Έμ œκ°€ 생길 수 μžˆλ‹€.
  1. (+a) ν˜„μž¬ HTTP/1.1 νŒŒμ΄ν”„λΌμ΄λ‹μ€ λͺ¨λ˜ λΈŒλΌμš°μ €μ—μ„œ 기본적으둜 ν™œμ„±ν™”λ˜μ–΄ μ‚¬μš©λ˜κ³  μžˆλ‹€. (O/X)
  • μ •λ‹΅ : O
    • HTTP νŒŒμ΄ν”„λΌμ΄λ‹μ€ λͺ¨λ˜ λΈŒλΌμš°μ €μ—μ„œ 기본적으둜 ν™œμ„±ν™”λ˜μ–΄μžˆμ§€ μ•Šλ‹€.
    • μ™œλƒν•˜λ©΄ μ •ν™•νžˆ κ΅¬ν˜„ν•΄λ‚΄κΈ° μ–΄λ ΅κΈ° λ•Œλ¬Έμ΄λ‹€. 전솑 쀑인 λ¦¬μ†ŒμŠ€μ˜ 크기, 효과적인 RTT(Round-trip delay, μ™•λ³΅μ§€μ—°μ‹œκ°„), λŒ€μ—­ν­ 크기의 μ„€μ •, HOL(Head of Line Blocking, ν—€λ“œλΌμΈμ°¨λ‹¨, 첫 번째 νŒ¨ν‚·μ΄ 응닡이 올 λ•Œ κΉŒμ§€, 이전 μš”μ²­μ΄ μ™„λ£Œ 될 λ•Œ κΉŒμ§€ κΈ°λ‹€λ¦¬λŠ”)으둜 λ¬Έμ œκ°€ λœλ‹€.
    • νŒŒμ΄ν”„λΌμ΄λ‹μ€ HTTP/2둜 μ˜€λ©΄μ„œ λ©€ν‹°ν”Œλ ‰μ‹±μœΌλ‘œ λŒ€μ²΄ λ˜μ–΄ μ‚¬μš©λœλ‹€.
    • ν•œ 쀄 μš”μ•½ : νŒŒμ΄ν”„λΌμΈ 컀λ„₯μ…˜μ€ 잘 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. (μ™œ κ³΅λΆ€ν•œκ±°λ‹ˆ)
  • https://developer.mozilla.org/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x#HTTP_νŒŒμ΄ν”„λΌμ΄λ‹

πŸ“ 문제


4.7 γ€€ 컀λ„₯μ…˜ λŠκΈ°μ— λŒ€ν•œ λ―ΈμŠ€ν„°λ¦¬γ€€ kukim

  1. HTTP 컀λ„₯μ…˜μ€ λ°˜λ“œμ‹œ 메세지λ₯Ό λ‹€ 보낸 ν›„ μ’…λ£Œλœλ‹€. (O/X)
  • μ •λ‹΅ : X
    • 보톡 컀λ„₯μ…˜μ€ 메세지λ₯Ό λ‹€ 보낸 λ‹€μŒ λŠμ§€λ§Œ μ’…μ’…, 자주 μ—λŸ¬κ°€ μžˆλŠ” μƒν™©μ—μ„œ ν—€λ”μ˜ μ€‘κ°„μ—μ„œ λŠκ±°λ‚˜ μ—‰λš±ν•œ κ³³μ—μ„œ μž˜λ¦¬κΈ°λ„ ν•œλ‹€.
  1. Content-Length ν—€λ”μ˜ 역할은 무엇인가? (주관식)
  • μ‹€μ œ λ°›μ•„μ•Όν•˜λŠ” 엔터티와 μ‹€μ œλ‘œ 전달받은 μ—”ν„°ν‹°μ˜ 차이λ₯Ό ν™•μΈν•˜λŠ” 헀더이닀. ν΄λΌμ΄μ–ΈνŠΈλ‚˜ ν”„λ½μ‹œ μ„œλ²„κ°€ 컀λ„₯μ…˜μ΄ λŠμ–΄μ‘Œλ‹€λŠ” HTTP 응닡을 받은 ν›„, μ‹€μ œ μ „λ‹¬λœ μ—”ν„°ν‹°μ˜ 길이와 Content-Length의 값이 μΌμΉ˜ν•˜μ§€ μ•Šκ±°λ‚˜ Content-Length κ°’ μžμ²΄κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ μˆ˜μ‹ λ‹€λŠ” λ°μ΄ν„°μ˜ μ •ν™•ν•œ 길이λ₯Ό μ„œλ²„μ—κ²Œ 물어봐야 ν•œλ‹€.
  1. HTTP/1.1 λͺ…μ„Έμ—μ„œ μ–Έμ œ, μ–΄λ–»κ²Œ 컀λ„₯μ…˜μ„ λŠλŠ”κ°€μ— λŒ€ν•œ λͺ…ν™•ν•œ 기쀀이 μ •ν•΄μ Έμžˆλ‹€. (O/X)
  • μ •λ‹΅ : X
    • β€˜μš°μ•„ν•˜κ²Œ 컀λ„₯μ…˜μ„ λŠμ–΄μ•Ό ν•œλ‹€β€™ 라고만 μ ν˜€μžˆλ‹€. (issue a graceful close on the transport connection)
  1. μš°μ•„ν•˜κ²Œ
  • β€˜μš°μ•„ν•˜κ²Œ 컀λ„₯μ…˜μ„ λŠλŠ” 방법 쀑’ ν΄λΌμ΄μ–ΈνŠΈκ°€ 예기치 μ•Šμ€ μƒν™©μ—μ„œ 컀λ„₯μ…˜μ„ λŠμ–΄μ•Ό ν•  λ•Œ 절반 끊기 쀑 (μž…λ ₯/좜λ ₯ 채널)을 λŠλŠ”λ‹€.
    • (좜λ ₯채널)을 λŠμ–΄μ•Ό ν•œλ‹€. μž…λ ₯ 채널을 λŠλŠ”λ‹€λ©΄ 이 전에 μš”μ²­ν•œ 컀λ„₯μ…˜μ— λŒ€ν•œ κ²°κ³Όλ₯Ό μ„œλ²„μ—μ„œ 응닡받을 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.
  • 절반 끊기 (μž…λ ₯/좜λ ₯ 채널)을 λŠμ€ ν›„ μš°μ•„ν•˜κ²Œ κΈ°λ‹€λ¦°λ‹€. (O/β–²/X)
    • μš°μ•„ν•˜κ²Œ κΈ°λ‹€λ¦¬λ©΄μ„œ λ°μ΄ν„°λ‚˜ 슀트림의 끝을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ μž…λ ₯ 채널에 λŒ€ν•œ μƒνƒœ 검사λ₯Ό 주기적으둜 ν•΄μ•Όν•œλ‹€.

πŸ“ 문제


λ§¨μœ„λ‘œγ€€πŸ“„ ν€΄μ¦ˆν•΄μ„€ λ°”λ‘œκ°€κΈ°