μ‚Ά/F-Lab

Week 8

osean 2021. 6. 25. 02:01

Week 8
: μŠ€ν„°λ””μŠ€ν„°λ””μŠ€ν„°λ””

✍️  6μ›” λ„·μ§Έ μ£Ό λ©˜ν† λ§!
이번 μ£Όμ—λŠ” ν•¨κ»˜ν•˜λŠ” λ©˜ν‹°λ‹˜κ³Ό 자칭 λͺ¨κ°μ—ͺ μŠ€ν„°λ””λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ 과제둜 주어진 주제λ₯Ό κ³΅λΆ€ν–ˆλ‹€.

온라인으둜 λͺ¨μ—¬μ„œ 주제λ₯Ό μ •ν•˜κ³  ν•΄λ‹Ή 주제λ₯Ό 각자 주어진 μ‹œκ°„λ§ŒνΌ κ³΅λΆ€ν•œ λ‹€μŒ 각자 κ³΅λΆ€ν•œ λ‚΄μš©μ„ λ‚˜λˆ„λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν–ˆλŠ”λ°, 처음 ν•΄λ³΄λŠ” λ°©μ‹μ΄μ˜€μ§€λ§Œ 혼자 κ³΅λΆ€ν•˜κ±°λ‚˜ λ‹€λ₯Έ μŠ€ν„°λ”” 방법보닀 훨씬 집쀑도 잘되고 무엇보닀 μ„œλ‘œ 이야기λ₯Ό λ‚˜λˆ„λ©΄μ„œ μ •λ¦¬λ˜λŠ” 과정이 μžˆμ–΄μ„œ 정말 μ’‹μ•˜λ‹€!

κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  였늘 λ©˜ν† λ§ μ‹œκ°„μ—λ„ λͺ¨λ₯΄λŠ” λ‚΄μš©μ΄ λ‚˜μ™€μ„œ μ μž–νžˆ λ‹Ήν™©ν–ˆμ§€λ§Œ..
λͺ¨λ₯΄λŠ” λ‚΄μš©μ€ κ³΅λΆ€ν•˜λ©΄ λ˜λ‹ˆκΉŒ!
이제 였늘 λ©˜ν† λ§ ν•œ λ‚΄μš©λ“€μ„ μ •λ¦¬ν•΄λ³΄μž!

1. OSI 7 Layer

λ„€νŠΈμ›Œν¬ 톡신이 μΌμ–΄λ‚˜λŠ” 과정을 계측 λ³„λ‘œ λ‚˜λ‰˜μ–΄ 놓은 λ„€νŠΈμ›Œν¬ λͺ¨λΈ 쀑 ν•˜λ‚˜μ΄λ‹€.
OSI 7 LayerλŠ” 계측 λ³„λ‘œ 각각의 역할이 λ‚˜λ‰˜μ–΄μ Έ 있기 λ•Œλ¬Έμ— λ°μ΄ν„°μ˜ 은닉화가 κ°€λŠ₯ν•˜κ³ , 문제 λ°œμƒ μ‹œ 계측 λ³„λ‘œ νŒŒμ•…ν•˜κΈ°κ°€ μˆ˜μ›”ν•˜κΈ° λ•Œλ¬Έμ— νŠΈλŸ¬λΈ” μŠˆνŒ…μ— μœ λ¦¬ν•˜λ‹€.

물리, 데이터 링크, λ„€νŠΈμ›Œν¬, 전솑, μ„Έμ…˜, ν‘œν˜„, μ‘μš© κ³„μΈ΅μœΌλ‘œ λ‚˜λ‰˜μ–΄μ Έ 있으며 μ’ŒμΈ‘λΆ€ν„° 1 ~ 7계측에 μ†ν•œλ‹€.
각 계측을 κ±°μΉ˜λŠ” κ³Όμ • μ†μ—μ„œ μƒμœ„ κ³„μΈ΅μ—μ„œ λ°›μ•„μ˜¨ 데이터λ₯Ό ν˜„μž¬ κ³„μΈ΅μ—μ„œ λ‹΄κ³ μž ν•˜λŠ” ν”„λ‘œν† μ½œμ„ νŒ¨ν‚·μœΌλ‘œ λ‚˜λˆ„μ–΄ 살을 λΆ™μ΄λŠ” 과정을 Encoding, ν•˜μœ„ κ³„μΈ΅μ—μ„œ λ°›μ•„μ˜¨ 데이터λ₯Ό ν˜„μž¬ κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ— 맞게 λ²—κ²¨λ‚΄λŠ” 과정을 Decoding 이라고 ν•œλ‹€.

λ˜ν•œ, 7κ³„μΈ΅μ—μ„œ 1κ³„μΈ΅μœΌλ‘œ 데이터가 인코딩 λ˜λŠ” 과정을 μΊ‘μŠν™”λΌκ³  ν•˜λ©°, 1κ³„μΈ΅μ—μ„œ 7κ³„μΈ΅μœΌλ‘œ 데이터가 λ””μ½”λ”© λ˜λŠ” 과정을 μ—­μΊ‘μŠν™”λΌκ³  ν•œλ‹€. 그런데 μ™œ ν•΄λ‹Ή 과정듀이 μΊ‘μŠν™”λΌλŠ” λ‹¨μ–΄λ‘œ μ„€λͺ…μ΄λ˜κ³ , μΊ‘μŠν™”λ‘œ 인해 은닉화가 κ°€λŠ₯ν•˜λ‹€κ³  ν•˜λŠ”κ±ΈκΉŒ?
μ•žμ„œ μž‘μ„±ν•œ λ‚΄μš©μ²˜λŸΌ λ°μ΄ν„°λŠ” 각 계측을 μ§€λ‚˜μ˜¬ λ•Œ λ§ˆλ‹€ λ„€νŠΈμ›Œν¬ 톡신에 ν•„μš”ν•œ 데이터λ₯Ό 각 κ³„μΈ΅μ—μ„œ 원본 데이터에 뢙이 과정을 μˆ˜ν–‰ν•˜λŠ”λ°, 이 λ•Œ 원본 데이터λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œλŠ” 각 κ³„μΈ΅μ—μ„œ 뢙인 νŒ¨ν‚·λ“€μ„ 각 κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ΄λ‚˜ 일련의 λ°©λ²•μœΌλ‘œ λ””μ½”λ”©ν•˜λŠ” 과정이 ν•„μš”ν•˜λ‹€. λ•Œλ¬Έμ— 원본 데이터λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄μ„œ λ³„λ„μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ―€λ‘œ μΊ‘μŠν™”, 은닉화가 κ°€λŠ₯ν•œ 것이닀.

πŸ“ 물리 계측
λ³΄λ‚΄κ³ μž ν•˜λŠ” λ°μ΄ν„°μ˜ μ „κΈ° μ‹ ν˜Έλ₯Ό μ•„λ‚ λ‘œκ·Έ μ‹ ν˜Έλ‘œ λ³€ν™˜ν•˜μ—¬ μ—°κ²°λœ λ‹€λ₯Έ κΈ°κΈ°μ—κ²Œ 데이터λ₯Ό λ³΄λ‚΄λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.
물리 계측은 ν•˜λ“œμ›¨μ–΄λ‘œ κ΅¬ν˜„λ˜μ–΄ 있으며, ν—ˆλΈŒλ‚˜ λ¦¬ν”Όν„°λΌλŠ” κΈ°κΈ°λ₯Ό μ΄μš©ν•˜λ©°, ν˜„λŒ€μ—μ„œλŠ” λ¦¬ν”Όν„°μ˜ κΈ°λŠ₯을 ν—ˆλΈŒμ—μ„œ μˆ˜ν–‰ν•˜κ³  μžˆμ–΄μ„œ λ¦¬ν”Όν„°λŠ” 잘 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  ν•œλ‹€.
물리 κ³„μΈ΅μ—μ„œ μ‚¬μš©λ˜λŠ” ν—ˆλΈŒλ‚˜ 리피터, λžœμΉ΄λ“œ λ“±μ˜ κΈ°κΈ°λŠ” λ„€νŠΈμ›Œν¬ 톡신 μ‹œ μ „μ†‘ν•œ μ•„λ‚ λ‘œκ·Έ μ‹ ν˜Έκ°€ 약해진 것을 λ‹€μ‹œ μ¦ν­ν•΄μ€˜μ„œ λ‹€λ₯Έ 기기에 잘 도착 ν•  수 μžˆλ„λ‘ ν•˜λŠ” 역할을 ν•œλ‹€.

πŸ“ 데이터 링크 계측
λ°μ΄ν„°μ˜ 였λ₯˜ 없이 λ‹€λ₯Έ μž₯치둜 데이터λ₯Ό μ „μ†‘ν•˜κΈ° μœ„ν•œ κ³„μΈ΅μœΌλ‘œ, MAC μ£Όμ†Œλ₯Ό νŒ¨ν‚·μœΌλ‘œ λ‚˜λˆ„μ–΄ 데이터와 ν•¨κ»˜ μ†‘μ‹ ν•˜κ±°λ‚˜, μˆ˜μ‹ ν•œ λ°μ΄ν„°μ—μ„œ MAC μ£Όμ†Œλ₯Ό ν™•μΈν•˜μ—¬ 도착지가 λ§žλŠ”μ§€ ν™•μΈν•œλ‹€.
이λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ κ°œλ…μ΄ 쑰금 μžˆμ–΄μ•Ό ν•˜λŠ”λ°, μ—¬λŸ¬ 컴퓨터가 ν•˜λ‚˜μ˜ λžœμ„ μ— μ—°κ²°λ˜μ–΄ μžˆλ‹€κ³  κ°€μ •ν•˜κ³  A μ»΄ν“¨ν„°μ—μ„œ B μ»΄ν“¨ν„°μ—κ²Œ 데이터λ₯Ό μ „μ†‘ν•˜κ³ μž ν•œλ‹€. ν•˜μ§€λ§Œ 이 λ•Œ μŠ€μœ„μΉ˜λΌλŠ” κΈ°κΈ°κ°€ μ—†μœΌλ©΄ μ—°κ²°λœ λͺ¨λ“  μ»΄ν“¨ν„°μ—μ„œ A 컴퓨터가 B μ»΄ν“¨ν„°μ—κ²Œ μ†‘μ‹ ν•œ 데이터λ₯Ό μˆ˜μ‹  ν•  것이닀.
μ΄λ ‡κ²Œ λΆˆν•„μš”ν•œ 데이터 μ†‘μˆ˜μ‹ μ„ μ œμ–΄ν•˜κΈ° μœ„ν•΄μ„œ μŠ€μœ„μΉ˜λΌλŠ” κΈ°κΈ°λ₯Ό μ΄μš©ν•˜λŠ”λ°, μŠ€μœ„μΉ˜λŠ” μ†‘μ‹ λœ 데이터에 덧뢙여진 데이터(MAC μ£Όμ†Œ) 등을 ν™•μΈν•˜μ—¬ μˆ˜μ‹ ν•œ 데이터가 μ˜¬λ°”λ₯Έ 곳으둜 μ™”λŠ”μ§€ κ²€μ¦ν•˜λŠ” 과정을 μˆ˜ν–‰ν•œλ‹€.

πŸ“ λ„€νŠΈμ›Œν¬ 계측
λ„€νŠΈμ›Œν¬ 톡신을 μˆ˜ν–‰ ν•  λ•Œ, μ†‘μ‹ ν•˜κ³ μž ν•˜λŠ” 기기의 μ£Όμ†Œλ₯Ό μ•Œμ•„μ•Ό ν•΄λ‹Ή μœ„μΉ˜μ— 도달 ν•  수 μžˆλ‹€. 이 λ•Œμ˜ μ£Όμ†ŒλŠ” μš°λ¦¬κ°€ ν”νžˆν•˜λŠ” IP μ£Όμ†Œλ₯Ό λœ»ν•˜λŠ”λ°, μ΄λŠ” λ„€νŠΈμ›Œν¬ κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œ 쀑 ν•˜λ‚˜μ΄λ‹€. ν•΄λ‹Ή κ³„μΈ΅μ—μ„œλŠ” λΌμš°ν„° λ“±μ˜ κΈ°κΈ°λ₯Ό μ΄μš©ν•΄μ„œ 데이터에 IP, IPCM λ“±μ˜ ν”„λ‘œν† μ½œμ„ νŒ¨ν‚·μœΌλ‘œ λ‚˜λˆ„μ–΄ 데이터에 뢙이며, 이 λ•Œμ˜ λΌμš°ν„°λŠ” ν—ˆλΈŒλ‚˜ λ¦¬ν”Όν„°λ‘œ μ—°κ²°λ˜μ–΄ μžˆλŠ” 지역 λ„€νŠΈμ›Œν¬λ₯Ό μ™ΈλΆ€μ˜ 지역 λ„€νŠΈμ›Œν¬μ™€ μ—°κ²°ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.

πŸ“ 전솑 계측
μ—¬λŸ¬ 의미둜 κΌ­ κΈ°μ–΅ν•˜κ³  μžˆμ–΄μ•Ό ν•˜λŠ” 계측이닀.
TCP, UDP λ“± μƒμœ„ κ³„μΈ΅μ—μ„œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œν† μ½œμ˜ 근간이 λ˜λŠ” ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œλ‹€.
전솑 κ³„μΈ΅μ—μ„œλŠ” 포트 번호λ₯Ό νŒ¨ν‚·μœΌλ‘œ λ‚˜λˆ„μ–΄ 데이터에 λΆ™μ΄λŠ”λ°, 이 λ•Œμ˜ 포트 λ²ˆν˜ΈλŠ” 각 ν”„λ‘œμ„ΈμŠ€μ˜ 번호둜 λ„€νŠΈμ›Œν¬ 톡신 μ‹œ μ–΄λ– ν•œ ν”„λ‘œμ„ΈμŠ€μ— μ ‘κ·Όν•  것인지λ₯Ό μ˜λ―Έν•œλ‹€.
λ„€νŠΈμ›Œν¬ 톡신 μ‹œ, μ—λŸ¬μ™€ μ œμ–΄μ˜ μ—­ν•  ν•˜κ³  있으며, 전솑 계측은 λ„€νŠΈμ›Œν¬ 톡신 μ‹œ 각 κΈ°κΈ° κ°„μ˜ μ—”λ“œ 포인트(쒅단 λŒ€ 쒅단)이라고 ν•˜λŠ”λ°, μ΄λŠ” λ„€νŠΈμ›Œν¬ 톡신에 κΌ­ ν•„μš”ν•œ μ†ŒμΌ“μ˜ ν•„μˆ˜ μš”μ†Œμ— 전솑 κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ΄ ν¬ν•¨λ˜λ©°, 이 λ•Œμ˜ μ†ŒμΌ“μ€ μ‚¬μš©μž μ˜μ—­μ—μ„œ λ„€νŠΈμ›Œν¬ 톡신 μ‹œ μ ‘κ·Ό ν•  수 μžˆλŠ” μ‹œμž‘μ μ΄λ‚˜ 끝점이기 λ•Œλ¬Έμ΄λ‹€.
즉, 전솑 κ³„μΈ΅μ˜ ν•˜μœ„ κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ€ μ‚¬μš©μžμ˜ μ˜μ—­μ΄λΌκΈ° λ³΄λ‹€λŠ” ν•˜λ“œμ›¨μ–΄μ™€ OS의 μ˜μ—­μ΄λΌλŠ” λœ»μ΄λ‹€.

πŸ“ μ„Έμ…˜ 계측
SSH, TLS, SSL λ“±μ˜ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ μ‹ λ’°μ„± 있고 μ•ˆμ „ν•œ 톡신 μ„Έμ…˜μ„ κ΅¬μΆ•ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€. μ‚¬μš©μž κ°„μ˜ 톡신 μ„Έμ…˜μ΄ μœ νš¨ν•œμ§€ ν™•μΈν•œλ‹€.

πŸ“ ν‘œν˜„ 계측
μˆ˜μ‹ ν•œ 데이터λ₯Ό 각 포맷(ν˜Ήμ€ ν”„λ‘œν† μ½œ)에 맞게 λ””μ½”λ”©ν•˜κ±°λ‚˜ μ†‘μ‹ ν•˜κ³ μž ν•˜λŠ” 데이터λ₯Ό 포맷에 맞게 μΈμ½”λ”©ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.
즉, 데이터λ₯Ό ν”„λ‘œμ„ΈμŠ€μ—μ„œ μš”κ΅¬ν•˜λŠ” 포맷(ν”„λ‘œν† μ½œ)에 맞게 λ²ˆμ—­ν•œλ‹€κ³  μƒκ°ν•˜μž. ν•΄λ‹Ή κ³„μΈ΅μ—μ„œ λ°μ΄ν„°μ˜ μ••μΆ•, μ•”ν˜Έν™” λ“±μ˜ 역할을 ν•¨κ»˜ μˆ˜ν–‰ν•˜λ©°, 주둜 μ‚¬μš©λ˜λŠ” ν”„λ‘œν† μ½œλ‘œ JPG, MPEG λ“± λ°μ΄ν„°μ˜ 포맷이 μ£Όλ₯Ό 이룬닀.

πŸ“ μ‘μš© 계측
μ‘μš© 계측은 μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” μ‘μš© ν”„λ‘œμ„ΈμŠ€μ™€ μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•˜μ—¬ μ‘μš© μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•˜λŠ”λ°, HTTP, HTTPS, FTP λ“±μ˜ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•œλ‹€. ν•΄λ‹Ή ν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄μ„œ μ›Ή μ‚¬μ΄νŠΈ μ ‘κ·Ό, 이메일 전솑 λ“±μ˜ μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ ν•  수 μžˆλ‹€.

 

2. HTTP, HTTPS / λŒ€μΉ­, λΉ„λŒ€μΉ­ν‚€

πŸ“ HTTP
HTML, XML λ“± μ—¬λŸ¬ 포맷의 ν…μŠ€νŠΈ νŒŒμΌμ„ 읽기 μœ„ν•΄ κ³ μ•ˆλœ ν”„λ‘œν† μ½œμ΄λ‹€. HTTP 톡신을 μˆ˜ν–‰ ν•  λ•Œ, ν•΄λ‹Ή ν”„λ‘œν† μ½œμ˜ νŒ¨ν‚·μ—λŠ” 메세지 포맷을 λ‹΄μ•„ μ†‘μˆ˜μ‹ μ„ μˆ˜ν–‰ν•˜λŠ”λ°, 이 λ•Œμ˜ 메세지 ν¬λ§·μ—λŠ” μš”μ²­ 메세지(GET, POST λ“±), 응닡 메세지 등을 λ‹΄μ•„ ν†΅μ‹ ν•˜λ©°, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ ν•΄λ‹Ή 메세지λ₯Ό ν™•μΈν•΄μ„œ ν˜„μž¬ μš”μ²­κ³Ό μ‘λ‹΅μ˜ μƒνƒœκ°€ 어떀지 νŒŒμ•… ν•  수 μžˆλ‹€.
메세지 포맷은 ASCII μ½”λ“œλ‘œ κ΅¬μ„±λœ ν‰λ¬ΈμœΌλ‘œ 이루어져 μžˆλ‹€. μ΄λŸ¬ν•œ 이유둜 λˆ„κ΅¬λ“ μ§€ μ†‘μˆ˜μ‹ μ— λ‹΄κΈ΄ νŒ¨ν‚·μ„ λœ―μ–΄ 도청 ν•  수 μžˆκΈ°μ— λ³΄μ•ˆμ— μ·¨μ•½ν•˜λ‹€.

πŸ“ HTTPS
HTTP 톡신이 평문을 ν†΅ν•œ μ†‘μˆ˜μ‹ μ„ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ— 이λ₯Ό μ•”ν˜Έν™”ν•˜κ³  λ³΄μ•ˆμ„±μ„ 높이기 μœ„ν•΄ κ³ μ•ˆλœ ν”„λ‘œν† μ½œμ΄λ‹€.
HTTPS ν”„λ‘œν† μ½œμ€ TLS(Transport Layer Sercurity), SSL(Secure Socket Layer) ν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄μ„œ μ†‘μˆ˜μ‹  ν•˜κ³ μž ν•˜λŠ” νŒ¨ν‚·μ„ μ•”ν˜Έν™”ν•˜λŠ” 과정을 κ±°μΉœλ‹€. 즉, μ‘μš© 계측 이전에 μ‘΄μž¬ν•˜λŠ” 전솑 κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œ νŒ¨ν‚·μ„ μ•”ν˜Έν™”ν•˜κ±°λ‚˜, μ„œλ²„ ν˜Ήμ€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μƒμ„±λœ μ†ŒμΌ“μ„ μ•”ν˜Έν™”ν•˜μ—¬ λ³΄μ•ˆμ„±μ„ 높인닀.
이 λ•Œ μ†‘μˆ˜μ‹ ν•œ νŒ¨ν‚·μ˜ μ•”ν˜Έλ₯Ό ν’€μ–΄μ„œ 원본 데이터λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄μ„œλŠ” μ–΄λ–€ 방식을 μ΄μš©ν• κΉŒ?

πŸ“ λŒ€μΉ­ν‚€
μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ 같은 κ³΅κ°œν‚€λ₯Ό 가지고 μžˆμ–΄μ„œ μ†‘μˆ˜μ‹  ν•œ μ•”ν˜Έν™” 된 데이터λ₯Ό κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄μ„œ λ³΅ν˜Έν™”ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.
μ•”/λ³΅ν˜Έν™” ν•˜λŠ” 과정이 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ ν•œλ²ˆμ”©λ§Œ μˆ˜ν–‰ν•˜λ©΄ 되기 λ•Œλ¬Έμ— λΉ„λŒ€μΉ­ν‚€ 방식에 λΉ„ν•΄ λΉ λ₯΄λ‹€.
ν•˜μ§€λ§Œ κ³΅κ°œν‚€λ₯Ό μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ κ³΅μœ ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— λ‘˜ 쀑 ν•œ κ³³μ—μ„œ κ³΅κ°œν‚€λ₯Ό λ³΄λ‚΄μ€˜μ•Ό ν•˜λŠ”λ°, 이 λ•Œ μ†‘μ‹ λœ κ³΅κ°œν‚€κ°€ ν‰λ¬ΈμœΌλ‘œ λ„˜μ–΄κ°€κΈ° λ•Œλ¬Έμ— κ²°κ΅­ HTTP ν†΅μ‹ μ˜ λ¬Έμ œμ μ„ μ™„λ²½νžˆ ν•΄κ²°ν–ˆλ‹€κ³  ν•  수 μ—†λ‹€.

πŸ“ λΉ„λŒ€μΉ­ν‚€
μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” κ³΅κ°œν‚€λ₯Ό 가지고 μžˆμœΌλ©΄μ„œ μ„œλ²„λŠ” λΉ„κ³΅κ°œν‚€λ₯Ό μΆ”κ°€μ μœΌλ‘œ ν•˜λ‚˜ 더 가지고 μžˆλŠ” 방식인데, μ„œλ²„μ—μ„œ 응닡을 톡해 데이터λ₯Ό 솑신할 λ•Œ 가지고 μžˆλŠ” λΉ„κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ μ•”ν˜Έν™”λ₯Ό ν•œ 데이터λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ‘λ‹΅ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” μˆ˜μ‹ ν•œ μ•”ν˜Έν™”λœ 데이터λ₯Ό κ³΅κ°œν‚€λ₯Ό 가지고 λ³΅ν˜Έν™”λ₯Ό ν•΄μ„œ 원본 데이터λ₯Ό 확인할 수 μžˆλŠ” 방식을 λΉ„λŒ€μΉ­ν‚€ 방식이라고 ν•œλ‹€.
λŒ€μΉ­ν‚€ 방식과 λ‹€λ₯΄κ²Œ μ„œλ²„ μΈ‘μ—μ„œ λΉ„κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ ν•œλ²ˆ 더 μ•”/λ³΅ν˜Έν™” ν•˜λŠ” 과정을 거치기 λ•Œλ¬Έμ— λ³΄μ•ˆμ„±μ€ λ†’μ•„μ‘Œμ§€λ§Œ 과정이 ν•˜λ‚˜ 더 μΆ”κ°€λ˜λ©΄μ„œ μ„±λŠ₯은 λŒ€μΉ­ν‚€ 방식에 λΉ„ν•΄ 떨어진닀.
λ•Œλ¬Έμ— 처음 연결을 ν™•μΈν•˜λŠ” 3-Way Handshake μ‹œ, μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 각자 μ“°λ ˆκΈ° 값을 νŒ¨ν‚·μ— ν•¨κ»˜ λ‹΄μ•„ μ†‘μˆ˜μ‹ μ„ ν•˜κ³ , 이 λ•Œμ— λΉ„λŒ€μΉ­ν‚€ λ°©μ‹μœΌλ‘œ μ„œλ‘œ μ‹ λ’°ν•  수 μžˆλŠ” λŒ€μƒμΈμ§€ 확인이 되면 κ·Έ λ‹€μŒλΆ€ν„°λŠ” λŒ€μΉ­ν‚€ λ°©μ‹μœΌλ‘œ μ„œλ‘œμ˜ μ—°κ²° 신뒰성을 보μž₯ν•œλ‹€.
μ—¬κΈ°μ„œ λŒ€μΉ­ν‚€λŠ” ν•œ μͺ½μ—μ„œ λ§Œλ“€μ–΄μ„œ μ œκ³΅ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 처음 μ—°κ²° μ‹œ 각자 μ†‘μ‹ ν•œ μ“°λ ˆκΈ°κ°’μ„ μ‘°ν•©ν•˜μ—¬ λŒ€μΉ­ν‚€λ‘œ λ§Œλ“€μ–΄ μ‚¬μš©ν•œλ‹€.

 

4. CPU 코어보닀 더 λ§Žμ€ μŠ€λ ˆλ“œ ν˜Ήμ€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•΄μ„œ μž‘μ—…ν•˜λŠ” μ΄μœ λŠ”?

λ¨Όμ € CPU μ½”μ–΄λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ ν˜Ήμ€ μŠ€λ ˆλ“œλ§Œ ν• λ‹Ήν•΄μ„œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ°, 이 λ•Œ IO μž‘μ—…μ΄ μΌμ–΄λ‚˜λ©΄ System Call을 톡해 Kernel에 μ ‘κ·Όν•˜μ—¬ IO μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ ν•œλ‹€. 이 λ•Œ, System Call이 호좜되면 μž‘μ—…μ— λŒ€ν•œ μ œμ–΄κΆŒμ΄ 운영체제둜 λ„˜μ–΄κ°€κ²Œ λ˜λŠ”λ°, Kernel μ—μ„œ IO μž‘μ—…μ„ 마무리 ν•  λ•Œ κΉŒμ§€ CPU μ½”μ–΄λŠ” 아무 것도 μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  λŒ€κΈ°ν•˜λŠ” μƒνƒœκ°€ 이어진닀. 이λ₯Ό Blocking 이라고 ν•œλ‹€.

ν•˜μ§€λ§Œ μƒκ°ν•΄λ³΄μž. IO μž‘μ—…μ„ μˆ˜ν–‰ ν•  λ•Œ λ§ˆλ‹€ CPU μ½”μ–΄κ°€ λŒ€κΈ°ν•˜κ³  μžˆλ‹€λ©΄ ν•΄λ‹Ή μž‘μ—…μ΄ 끝날 λ•Œ κΉŒμ§€ CPUλ₯Ό μ μœ ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜λŠ” μ‹œκ°„μ€ 점점 λŠ˜μ–΄λ‚  것이고, κ·Έ 뒀에 λŒ€κΈ°ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ“€μ€ μžμ—°μŠ€λŸ½κ²Œ CPU μ½”μ–΄κ°€ μ μœ ν•˜κΈ°κΉŒμ§€μ˜ λŒ€κΈ° μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 것이닀.

μ΄λ ‡κ²Œ CPU μžμ›μ„ λ‚­λΉ„ν•˜κ³  μžˆλŠ”λ°, 이 λ•Œμ— λŒ€κΈ°ν•˜κ³  μžˆλŠ” CPU μ½”μ–΄κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€ ν˜Ήμ€ μŠ€λ ˆλ“œλ‘œ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ν•˜κ³  μž‘μ—…μ„ 계속 μˆ˜ν–‰ν•œλ‹€λ©΄ μ–΄λ–¨κΉŒ? CPU μžμ›μ„ 효율적으둜 μ‚¬μš©ν•˜κ²Œ λ˜λ‹ˆκΉŒ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€ ν˜Ήμ€ μŠ€λ ˆλ“œλ₯Ό λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•  수 μžˆμ„ 것이닀. μ΄λŸ¬ν•œ 방식을 Non-Blocking이라고 ν•œλ‹€.

μ§€κΈˆ Blockingκ³Ό Non-Blocking에 λŒ€ν•΄μ„œ λ‹€μ‹œ μ •λ¦¬ν•˜λ©΄μ„œ Synchronous, Asynchronous에 λŒ€ν•œ μ΄μ•ΌκΈ°λŠ” λ‚˜μ˜€μ§€ μ•Šμ•˜λŠ”λ°, μœ„μ˜ λ‚΄μš©μ„ 잘 μ‚΄νŽ΄λ³΄λ©΄ Blockingκ³Ό Non-Blocking은 IO μž‘μ—… μ‹œμ— μ–ΈκΈ‰λ˜λŠ” κ°œλ…μΈ 것을 확인 ν•  수 μžˆλ‹€.
즉, Synchronous와 AsynchronousλŠ” CPU μžμ›μ„ μ–΄λ–»κ²Œ μ‚¬μš©ν•  것인지에 λŒ€ν•œ κ°œλ…μ΄λ‹€. μ‹±κΈ€ μ½”μ–΄ CPUκ°€ μžˆλ‹€κ³  κ°€μ •ν•˜μž.
ν•΄λ‹Ή CPU μ½”μ–΄κ°€ μž‘μ—…μ„ μˆ˜ν–‰ ν•  λ•Œ, ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜κ°€ λ‹€ λλ‚˜μ•Ό λ‹€μŒ ν”„λ‘œμ„ΈμŠ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 Synchronous, ν˜„μž¬ μ μœ ν•˜κ³  μžˆλŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μž‘μ—… 쀑 CPUκ°€ λŒ€κΈ°ν•˜λŠ” μˆœκ°„ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ‘œ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ν•˜μ—¬ ν•˜λ‚˜μ˜ CPUκ°€ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό ν•œ λ²ˆμ— μž‘μ—…ν•˜λŠ” 것 처럼 보이도둝 ν•˜λŠ” 것이 Asynchronous 이닀.


κ°„λ‹¨νžˆ μ •λ¦¬ν•˜λ©΄! CPUκ°€ μΌν•˜λŠ” 방식에 λŒ€ν•œ κ°œλ…μ΄ Sync, Async이고, 이와 관계 없이 IO μž‘μ—… μ‹œ CPUκ°€ λŒ€κΈ°ν•˜λŠλƒ λŒ€κΈ°ν•˜μ§€ μ•ŠλŠλƒμ— λŒ€ν•œ κ°œλ…μ΄ Blocking, Non-Blocking이닀! (κ΄€μ μ˜ 차이!)

μΆ”κ°€μ μœΌλ‘œ 곡뢀할 λ‚΄μš©λ“€

πŸ’₯ λ„€νŠΈμ›Œν¬ μŠ€μœ„μΉ˜μ™€ λΌμš°ν„°, L4 / L7 μŠ€μœ„μΉ˜

πŸ’₯ λ‘œλ“œ λ°ΈλŸ°μŠ€μ™€ Reverse Proxy, Forward Proxy

πŸ’₯ SNMP, JMX

'μ‚Ά > F-Lab' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Week 10  (0) 2021.07.10
Week 9  (0) 2021.07.02
Week 7  (0) 2021.06.18
Week 6  (0) 2021.06.11
Week 5  (0) 2021.06.03