Amenable
Amenable's Blog
Amenable
  • λΆ„λ₯˜ 전체보기 (189)
    • πŸ“‚ JAVA (87)
      • μ΄νŽ™ν‹°λΈŒ μžλ°” (65)
      • μ£Όμš” κ°œλ… (22)
    • πŸ“‚ 개발 μ„œμ  (22)
      • μ‹€μš©μ£Όμ˜ ν”„λ‘œκ·Έλž˜λ¨Έ (1)
      • 객체지ν–₯의 사싀과 μ˜€ν•΄ (2)
      • 클린 μ½”λ“œ (8)
      • ν•¨κ»˜ 자라기 (1)
      • 그림으둜 λ°°μš°λŠ” HTTP&Network Basic (10)
    • πŸ“‚ λ°μ΄ν„°λ² μ΄μŠ€ (8)
      • κ°œλ… (8)
      • λ¬Έμ œν’€μ΄ (0)
    • πŸ“‚ λ„€νŠΈμ›Œν¬ (14)
      • κ°œλ… (6)
      • 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리 (8)
    • πŸ“‚ μŠ€ν”„λ§ (13)
      • κΈ°λ³Έ κ°œλ… (13)
    • πŸ“‚ WEB (5)
    • πŸ“‚ 자료ꡬ쑰 (12)
      • κ°œλ… (2)
      • μ •λ ¬ (8)
      • 트리 (2)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜ (10)
      • μ΅œμ†Œμ‹ μž₯트리 (2)
      • μ΅œλ‹¨ 경둜 (2)
      • λ¬Έμžμ—΄ (2)
      • ETC (4)
    • πŸ“‚ μ•Œκ³ λ¦¬μ¦˜_λ¬Έμ œν’€μ΄ (4)
      • BOJ_λ°±μ€€ (4)
    • πŸ“‚ ν”„λ‘œκ·Έλž˜λ° (3)
    • πŸ“‚ DevOps (2)
      • 배포 (2)
    • πŸ“‚ ν›„κΈ° (8)
      • μš°μ•„ν•œ ν…Œν¬μ½”μŠ€(ν”„λ¦¬μ½”μŠ€) (4)
      • 2023λ…„ (3)
      • 2024λ…„ (1)
    • πŸ“‚ 회고 (1)
      • 2023λ…„ (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸš€ GitHub

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
Amenable

Amenable's Blog

μ„œλ²„μ— μ ‘μ†ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]
πŸ“‚ λ„€νŠΈμ›Œν¬/성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리

μ„œλ²„μ— μ ‘μ†ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]

2023. 7. 18. 07:02

  이전 글을 톡해 μ†ŒμΌ“μ„ μž‘μ„±ν•˜λŠ” 것을 μ•Œμ•„λ³΄μ•˜λ‹€.

  μ΄λ²ˆμ—λŠ” μž‘μ„±λœ μ†ŒμΌ“μ„ μ΄μš©ν•˜μ—¬ μ„œλ²„μ— μ ‘μ†ν•˜λŠ” 것을 μ•Œμ•„λ³΄μž.

 

πŸ“™ 1. μ ‘μ†μ˜ 의미

  μ„œλ²„μ— 접속을 ν•œλ‹€λŠ” 것은 톡신 μƒλŒ€μ™€ μ œμ–΄ 정보λ₯Ό μ£Όκ³ λ°›μ•„ μ†ŒμΌ“μ— ν•„μš”ν•œ 정보λ₯Ό κΈ°λ‘ν•˜κ³  데이터 솑·μˆ˜μ‹ μ΄ κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ§Œλ“œλŠ” 것을 μ˜λ―Έν•œλ‹€.

  μ œμ–΄ μ •λ³΄λž€ IP μ£Όμ†Œλ‚˜ 포트 λ²ˆν˜Έμ™€ 같이 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ μ œμ–΄ν•˜κΈ° μœ„ν•œ 정보닀.

  λ˜ν•œ, 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ μ‹€ν–‰ν•  λ•ŒλŠ” 솑·μˆ˜μ‹ ν•˜λŠ” 데이터λ₯Ό μΌμ‹œμ μœΌλ‘œ μ €μž₯ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­(=버퍼 λ©”λͺ¨λ¦¬)이 ν•„μš”ν•œλ°, 버퍼 λ©”λͺ¨λ¦¬μ˜ 확보도 접속을 ν•  λ•Œ μ‹€ν–‰λœλ‹€.

 

 

πŸ“™ 2. λ§¨ μ•žλΆ€λΆ„에 μ œμ–΄ μ •보λ₯Ό κΈ°λ‘ν•œ ν—€λ”λ₯Ό λ°°μΉ˜ν•œλ‹€.

  μ œμ–΄ μ •λ³΄λŠ” 'TCP 헀더에 κΈ°μž…λ˜λŠ” 정보'와 'μ†ŒμΌ“(ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ©”λͺ¨λ¦¬ μ˜μ—­)에 κΈ°λ‘λ˜λŠ” 정보'둜 λ‚˜λ‰œλ‹€.

πŸ“ 1. TCP 헀더에 κΈ°μž…λ˜λŠ” 정보

  TCP 헀더에 κΈ°μž…λ˜λŠ” μ œμ–΄ μ •λ³΄λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ„œλ‘œ 연락을 μ ˆμΆ©ν•˜κΈ° μœ„ν•΄ μ£Όκ³ λ°›λŠ” μ œμ–΄ 정보닀.

  이 ν•­λͺ©μ€ κ³ μ •ν™”λ˜μ–΄ 있기 λ•Œλ¬Έμ— '접속 단계, 솑·μˆ˜μ‹  단계, μ—°κ²° 끊기 단계'μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ λŒ€ν™”ν•  λ•Œλ§ˆλ‹€ νŒ¨ν‚·μ— ν•΄λ‹Ή μ œμ–΄ 정보λ₯Ό λΆ€κ°€ν•œλ‹€.

  즉, 헀더에 κΈ°μž…λœ μ œμ–΄μ •λ³΄λ₯Ό μ΄μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ„œλ‘œ 연락을 μ£Όκ³ λ°›λŠ” 것이닀.

 

πŸ“ 2. μ†ŒμΌ“(ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ©”λͺ¨λ¦¬ μ˜μ—­)에 κΈ°λ‘λ˜λŠ” 정보

  두 번째 μ œμ–΄ μ •λ³΄λŠ” 'μ†ŒμΌ“μ— κΈ°λ‘λ˜μ–΄ ν”„λ‘œν† μ½œ μŠ€νƒμ˜ λ™μž‘μ„ μ œμ–΄ν•˜κΈ° μœ„ν•œ 것'이닀.

  μ—¬κΈ°μ—λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν†΅μ§€λœ 정보, 톡신 μƒλŒ€λ‘œλΆ€ν„° 받은 정보, 솑·μˆ˜μ‹  λ™μž‘μ˜ μ§„ν–‰ 상황 등이 μˆ˜μ‹œλ‘œ 기둝되고, ν”„λ‘œν† μ½œ μŠ€νƒμ€ μ΄λŸ¬ν•œ 정보λ₯Ό μ°Έμ‘°ν•˜μ—¬ λ™μž‘ν•˜κ²Œ λœλ‹€.

 

  μ†ŒμΌ“μ— κΈ°λ‘ν•˜λŠ” μ œμ–΄ μ •λ³΄λŠ” κ³ μ •ν™”λ˜μ–΄ μžˆμ§€ μ•Šκ³  ν”„λ‘œν† μ½œ μŠ€νƒμ„ λ§Œλ“œλŠ” μ‚¬λžŒμ— 따라 달라진닀. κ·ΈλŸ¬λ‚˜ μ†ŒμΌ“μ˜ μ œμ–΄ μ •보 μ€‘μ—μ„œ μ€‘μš”ν•œ κ²ƒμ€ λͺ…령에 μ˜ν•΄ ν‘œμ‹œλ  μˆ˜ μžˆλŠ”λ°, μ΄κ²ƒμ€ OS의 ν”„λ‘œν† μ½œ μŠ€νƒμ—λ„ κ³΅ν†΅μ΄λ‹€.

 

 

πŸ“™ 3. μ ‘속 λ™μž‘μ˜ μ‹€μ²΄

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ Socket λΌμ΄λΈŒλŸ¬λ¦¬μ˜ connectλ₯Ό ν˜ΈμΆœν•˜λŠ” κ²ƒλΆ€ν„° μ‹œμž‘ν•˜μ—¬ μ ‘속 λ™μž‘을 μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž.

 

  1. Socket 라이브러리의 connect 호좜
    connect(<λ””μŠ€ν¬λ¦½ν„°>, <μ„œλ²„ 츑의 IP μ£Όμ†Œμ™€ ν¬νŠΈ λ²ˆν˜Έ>,...)
  2. μ œμ–΄ 정보λ₯Ό κΈ°λ‘ν•œ TCP 헀더λ₯Ό λ§Œλ“ λ‹€.
    컨트둀 λΉ„νŠΈμΈ SYNλΌλŠ” λΉ„νŠΈλ₯Ό 1둜 λ§Œλ“ λ‹€.
  3. λ§Œλ“€μ–΄μ§„ TCP ν—€λ”λ₯Ό IP λ‹΄λ‹Ή λΆ€λΆ„에 κ±΄λ„€μ£Όμ–΄ μ†‘μ‹ ν•˜λ„λ‘ μ˜λ’°ν•œλ‹€.
  4. μ„œλ²„ μΈ‘의 μ ‘속을 κΈ°λ‹€λ¦¬λŠ” μƒνƒœμ˜ μ§€μ •λœ μ†ŒμΌ“에 λ„μ°©ν•œλ‹€.
  5. ν΄λΌμ΄μ–ΈνŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μ œμ–΄ μ •보λ₯Ό κΈ°λ‘ν•œ TCP ν—€λ”λ₯Ό λ§Œλ“ λ‹€.
    SYN λΉ„νŠΈλΏλ§Œ μ•„λ‹ˆλΌ ACKλΌλŠ” μ»¨νŠΈλ‘€ λΉ„νŠΈλ„ 1둜 λ§Œλ“ λ‹€.
    ACKλ₯Ό 1둜 λ§Œλ“œλŠ” μ΄μœ λŠ” νŒ¨ν‚·μ„ μž˜ λ°›μ•˜λ‹€λŠ” κ²ƒμ„ μ•Œλ¦¬κΈ° μœ„ν•œ κ²ƒμ΄λ‹€.
  6. μ„œλ²„ μΈ‘의 TCP ν—€λ”λ₯Ό IP λ‹΄λ‹Ή λΆ€λΆ„에 κ±΄λ„€μ£Όμ–΄ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ‘닡을 μ „μ†‘ν•œλ‹€.
  7. μ„œλ²„ μΈ‘μœΌλ‘œλΆ€ν„° κ±΄λ„€λ°›μ€ μ‘λ‹΅μ˜ TCP ν—€λ”λ₯Ό μ‘°μ‚¬ν•˜μ—¬ μ„œλ²„ 츑의 μ ‘속 λ™μž‘이 μ„±κ³΅ν–ˆλŠ”μ§€ ν™•μΈν•œλ‹€.
    SYN와 ACKκ°€ 1이면 μ ‘속 μ„±κ³΅μ΄λ‹€.
    접속 μ™„λ£Œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ œμ–΄ μ •보λ₯Ό μ†ŒμΌ“에 κΈ°λ‘ν•œλ‹€.
  8. νŒ¨ν‚·μ΄ λ„μ°©ν•œ κ²ƒμ„ μ„œλ²„에 μ•Œλ¦°λ‹€.
    ACK λΉ„νŠΈλ₯Ό 1둜 λ§Œλ“  TCP ν—€λ”λ₯Ό μ „μ†‘ν•œλ‹€.

  μœ„μ˜ 과정을 거치면 접속이 μ™„λ£Œλ˜κ³  솑·μˆ˜μ‹ ν•  수 μžˆλŠ” μƒνƒœκ°€ λ˜μ—ˆλ‹€κ³  ν•  수 μžˆλ‹€.

  νŒŒμ΄ν”„μ™€ 같은 κ²ƒμœΌλ‘œ μ†ŒμΌ“μ΄ μ—°κ²°λ˜μ—ˆλ‹€κ³  생각할 수 μžˆλŠ”λ°, λ„€νŠΈμ›Œν¬μ—μ„œ 이 νŒŒμ΄ν”„λ₯Ό '컀λ„₯μ…˜'이라고 ν•œλ‹€.

  컀λ„₯μ…˜μ€ 데이터 솑·μˆ˜μ‹  λ™μž‘μ„ κ³„μ†ν•˜κ³  μžˆλŠ” λ™μ•ˆ, 즉 closeλ₯Ό ν˜ΈμΆœν•˜μ—¬ 연결을 λŠμ„ λ•ŒκΉŒμ§€ 계속 μ‘΄μž¬ν•œλ‹€. 이것이 이전 κΈ€μ—μ„œ μ‚΄νŽ΄λ³΄κΈ°λ‘œ ν–ˆλ˜, 연결을 λŠμ§€ μ•Šκ³  μš”μ²­κ³Ό 응닡을 μ£Όκ³ λ°›λŠ” 방법이닀.

 

ν•΄λ‹Ή 글은 Tsutomu Tone λ‹˜μ˜ '성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

'πŸ“‚ λ„€νŠΈμ›Œν¬ > 성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ„œλ²„μ—μ„œ 연결을 λŠμ–΄ μ†ŒμΌ“μ„ λ§μ†Œν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]  (0) 2023.07.20
데이터λ₯Ό μ†‘Β·μˆ˜μ‹ ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]  (0) 2023.07.19
μ†ŒμΌ“μ„ μž‘μ„±ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]  (0) 2023.07.10
ν”„λ‘œν† μ½œ μŠ€νƒμ— λ©”μ‹œμ§€ 솑신을 μ˜λ’°ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]  (0) 2023.07.09
μ „ μ„Έκ³„μ˜ DNS μ„œλ²„κ°€ μ—°λŒ€ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]  (0) 2023.07.09
    'πŸ“‚ λ„€νŠΈμ›Œν¬/성곡과 μ‹€νŒ¨λ₯Ό κ²°μ •ν•˜λŠ” 1%의 λ„€νŠΈμ›Œν¬ 원리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • μ„œλ²„μ—μ„œ 연결을 λŠμ–΄ μ†ŒμΌ“μ„ λ§μ†Œν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]
    • 데이터λ₯Ό 솑·μˆ˜μ‹ ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]
    • μ†ŒμΌ“μ„ μž‘μ„±ν•œλ‹€. - [Ch 02. TCP/IP의 데이터λ₯Ό μ „κΈ° μ‹ ν˜Έλ‘œ λ§Œλ“€μ–΄ 보낸닀.]
    • ν”„λ‘œν† μ½œ μŠ€νƒμ— λ©”μ‹œμ§€ 솑신을 μ˜λ’°ν•œλ‹€. - [Ch 01. μ›Ή λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό λ§Œλ“ λ‹€]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”