Network
OSI 7κ³μΈ΅
TCP/IP : νλ¦μ μ΄, νΌμ‘μ μ΄
β¨ TCP
μΌλ°μ μΌλ‘ TCPμ IPλ₯Ό ν¨κ» μ¬μ©νλλ°, IPκ° λ°μ΄ν°μ λ°°λ¬μ μ²λ¦¬νλ€λ©΄ TCPλ ν¨ν·μ μΆμ λ° κ΄λ¦¬νλ€.
μ λ’°μ± μλ λ°μ΄ν° μ μ‘μ μ§μνλ μ°κ²° μ§ν₯ν νλ‘ν μ½μ΄λ€.
μ¬μ μ 3-way handshakeλΌλ κ³Όμ μ ν΅ν΄ μ°κ²°μ μ€μ νκ³ ν΅μ μ μμνλ€.
4-way handshake κ³Όμ μ ν΅ν΄ μ°κ²°μ ν΄μ (κ°μ νμ λ°©μ)νλ€.
νλ¦ μ μ΄, νΌμ‘ μ μ΄, μ€λ₯ μ μ΄λ₯Ό ν΅ν΄ μ λ’°μ±μ 보μ₯νλ€. κ·Έλ¬λ μ΄ λλ¬Έμ UDPλ³΄λ€ μ μ‘ μλκ° λ리λ€λ λ¨μ μ΄ μλ€.
λ°μ΄ν°μ μ μ‘ μμλ₯Ό 보μ₯νλ©° μμ μ¬λΆλ₯Ό νμΈν μ μλ€.
TCPλ₯Ό μ¬μ©νλ μλ‘λ λλΆλΆμ μΉ HTTP ν΅μ , μ΄λ©μΌ, νμΌ μ μ‘μ μ¬μ©λλ€.
TCPκ° κ°μνμ λ°©μμ μ 곡νλ€λ κ²μ μ‘μ μΈ‘κ³Ό μμ μΈ‘μ μ°κ²°νμ¬ ν¨ν·μ μ μ‘νκΈ° μν λ Όλ¦¬μ κ²½λ‘λ₯Ό λ°°μ νλ€λ λ»μ΄λ€.
ν¨ν·(Packet)?
μΈν°λ· λ΄μμ λ°μ΄ν°λ₯Ό 보λ΄κΈ° μν κ²½λ‘ λ°°μ (λΌμ°ν )μ ν¨μ¨μ μΌλ‘ νκΈ° μν΄μ λ°μ΄ν°λ₯Ό μ¬λ¬ κ°μ μ‘°κ°μΌλ‘ λλμ΄ μ μ‘μ νλλ°, μ΄λ μ‘°κ°μ ν¨ν·μ΄λΌκ³ νλ€.
TCPλ ν¨ν·μ μ΄λ»κ² μΆμ λ° κ΄λ¦¬νλκ°?
λ°μ΄ν°λ ν¨ν· λ¨μλ‘ λλμ΄ κ°μ λͺ©μ μ§(IP κ³μΈ΅)μΌλ‘ μ μ‘λλ€.
Ex) ν μ€λ‘ μμΌ νλ A,B,CλΌλ μ¬λ(ν¨ν·)μ΄ μμΈ(μ‘μ μΈ‘)μμ μΆλ°νμ¬ λΆμ°(μμ μΈ‘)μΌλ‘ κ°μΌνλ€κ³ κ°μ νλ€.
A,B,Cκ° μμ°¨μ μΌλ‘ κ°λ μν©μμ Bκ° κΈΈμ μλͺ» λ€μ΄μ λΆμ€λμλ€.
νμ§λ§ λͺ©μ μ§μμλ A,B,Cκ° λͺ¨λ νμνμ§ λͺ¨λ₯΄κ³ A,Cλ§ λ³΄κ³ λ€ μλ€κ³ μ°©κ°ν μ μλ€. κ·Έλ κΈ° λλ¬Έμ A,B,CλΌλ ν¨ν·μ 1,2,3μ΄λΌλ λ²νΈλ₯Ό λΆμ¬νμ¬ ν¨ν·μ λΆμ€ νμΈ μ²λ¦¬λ₯Ό νκΈ° μν΄ λͺ©μ μ§μμ ν¨ν·μ μ¬μ‘°λ¦½νλ€.
μ΄λ° λ°©μμΌλ‘ TCPλ ν¨ν·μ μΆμ νλ©°, λλμ΄ λ³΄λ΄μ§ λ°μ΄ν°λ₯Ό λͺ©μ μ§μμ λ°κ³ μ¬μ‘°λ¦½ν μ μκ² λλ€.
β¨ νλ¦ μ μ΄
μ‘μ μΈ‘κ³Ό μμ μΈ‘ μ¬μ΄μ λ°μ΄ν° μ²λ¦¬ μλ μ°¨μ΄(νλ¦)μ ν΄κ²°νκΈ° μν κΈ°λ².
λ§μ½, μ‘μ μΈ‘μ μ μ‘λ > μμ μΈ‘μ μ²λ¦¬λμΌ κ²½μ° μ μ‘λ ν¨ν·μ μμ μΈ‘μ νλ₯Ό λμ΄μ μμ€λ μ μκΈ° λλ¬Έμ μ‘μ μΈ‘μ ν¨ν· μ μ‘λμ μ μ΄νκ² λλ€.
Stop and Wait(μ μ§ - λκΈ°)
λ§€λ² μ μ‘ν ν¨ν·μ λν νμΈ μλ΅μ λ°μμΌ κ·Έ λ€μ ν¨ν·μ μ μ‘ν μ μλ€.
μ΄λ¬ν ꡬ쑰 λλ¬Έμ λΉν¨μ¨μ μ΄λ€. (λ¨μ )
Give & Take.
Sliding Window(μ¬λΌμ΄λ© μλμ°)
(μ‘μ μΈ‘ = μ μ‘μΈ‘)
μμ μΈ‘μμ μ€μ ν μλμ° ν¬κΈ°λ§νΌ μ‘μ μΈ‘μμ νμΈ μλ΅ μμ΄ μΈκ·Έλ¨ΌνΈλ₯Ό μ μ‘ν μ μκ² νμ¬ λ°μ΄ν° νλ¦μ λμ μΌλ‘ μ‘°μ νλ κΈ°λ²μ΄λ€.
μλμ° : μ‘μ , μμ μ€ν μ΄μ μμͺ½μμ λ§λ€μ΄μ§ λ²νΌμ ν¬κΈ°.
Stop and Waitμ λΉν¨μ¨μ±μ κ°μ ν κΈ°λ²
μ‘μ μΈ‘μμλ Ack νλ μμ μμ νμ§ μλλΌλ μ¬λ¬ κ°μ νλ μμ μ°μμ μΌλ‘ μ μ‘ν μ μλ€.
μ‘μ μΈ‘μμ 0,1,2,3,4,5,6μ λ³΄λΌ μ μλ νλ μμ κ°μ§κ³ μκ³ λ°μ΄ν° 0,1μ μ μ‘νλ€κ³ κ°μ νλ©΄ μ¬λΌμ΄λ© μλμ°μ ꡬ쑰λ 2,3,4,5,6μ²λΌ λ³νκ² λλ€.
μ΄λ, λ§μ½ μμ μΈ‘μΌλ‘λΆν° ACKλΌλ νλ μμ λ°κ² λλ€λ©΄ μ‘μ μΈ‘μ μ΄μ μ λ³΄λΈ λ°μ΄ν° 0,1μ μμ μΈ‘μμ μ μμ μΌλ‘ λ°μμμ μκ² λκ³ μ‘μ μΈ‘μ μ¬λΌμ΄λ© μλμ°λ ACK νλ μμ λ°λ₯Έ νλ μμ μλ§νΌ μ€λ₯Έμͺ½μΌλ‘ κ²½κ³κ° νμ₯λλ€.
β¨μ€λ₯ μ μ΄
μ€λ₯ κ²μΆκ³Ό μ¬μ μ‘μ ν¬ν¨νλ€.
ARQ(Automatic Repeat Request) κΈ°λ²μ μ¬μ©ν΄ νλ μμ΄ μμλμκ±°λ μμ€λμμ κ²½μ°, μ¬μ μ‘μ ν΅ν΄ μ€λ₯λ₯Ό 볡ꡬνλ€.
ARQ κΈ°λ²μ νλ¦ μ μ΄ κΈ°λ²κ³Ό κ΄λ ¨λμ΄ μλ€.
Stop and Wait ARQ
μ‘μ μΈ‘μμ 1κ°μ νλ μμ μ‘μ νκ³ , μμ μΈ‘μμ μμ λ νλ μμ μλ¬ μ 무 νλ¨μ λ°λΌ ACK or NAKλ₯Ό 보λ΄λ λ°©μμ΄λ€.
μλ³μ μν΄ λ°μ΄ν° νλ μκ³Ό ACK νλ μμ κ°κ° 0,1 λ²νΈλ₯Ό λ²κ°μκ°λ©° λΆμ¬νλ€.
μμ μΈ‘μ΄ λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νμ κ²½μ°, NAKλ₯Ό 보λ΄κ³ NAKλ₯Ό λ°μ μ‘μ μΈ‘μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
λ§μ½, λ°μ΄ν°λ ACKκ° λΆμ€λμμ κ²½μ° μΌμ κ°κ²©μ μκ°μ λκ³ νμμμμ΄ λλ©΄, μ‘μ μΈ‘μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
Go-Back-n ARQ(μ¬λΌμ΄λ© μλμ°)
μ μ‘λ νλ μμ΄ μμλκ±°λ λΆμ€λ κ²½μ° κ·Έλ¦¬κ³ ACK ν¨ν·μ μμ€λ‘ μΈν TIME_OUTμ΄ λ°μν κ²½μ°, νμΈλ λ§μ§λ§ νλ μ μ΄νλ‘ λͺ¨λ νλ μμ μ¬μ μ‘νλ€.
μ¬λΌμ΄λ© μλμ°λ μ°μμ μΈ νλ μ μ μ‘ κΈ°λ²μΌλ‘ μ μ‘μΈ‘μ μ μ‘λ λͺ¨λ νλ μμ 볡μ¬λ³Έμ κ°μ§κ³ μμ΄μΌ νλ©°, ACKμ NAK λͺ¨λ κ°κ° ꡬλ³ν΄μΌ νλ€.
ACK : λ€μ νλ μμ μ μ‘.
NAK : μμλ νλ μ μ체 λ²νΈλ₯Ό λ°ν.
[μ¬μ μ‘ λλ κ²½μ°]
(1). NAK νλ μμ λ°μμ κ²½μ°.
λ§μ½, μμ μΈ‘μΌλ‘ 0~5κΉμ§μ λ°μ΄ν°λ₯Ό 보λλ€κ³ κ°μ νμ.
μμ μΈ‘μμ λ°μ΄ν°λ₯Ό λ°μμμ νμΈνλ ACK νλ μμ μ€κ° μ€κ° 보λ΄κ² λλ©°, ACK νλ μμ νμΈν μ μ‘μΈ‘μ κ³μν΄μ λ°μ΄ν°λ₯Ό μ μ‘νλ€.
κ·Έλ¬λ λ§μ½ μμ μΈ‘μμ λ°μ΄ν° μ€λ₯ νλ μ 2λ₯Ό λ°κ²¬νκ³ NAK2λ₯Ό μ μ‘μΈ‘μ 보λΈλ€κ³ ν΄λ³΄μ.
NAK2λ₯Ό λ°μ μ μ‘μΈ‘μ λ°μ΄ν° νλ μ 2κ° μλͺ»λμλ€λ κ²μ μκ³ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
GBn ARQμ νΉμ§μ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ λΆλΆμ΄λ€. NAK(n)λ₯Ό λ°μ n λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
(2). μ μ‘ λ°μ΄ν° νλ μμ λΆμ€
GBn ARQμ νΉμ§μ νμΈλ λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν° νλ μ μ¬μ μ‘κ³Ό μμ μΈ‘μ νκΈ°μ΄λ€.
μμ μΈ‘μμ λ°μ΄ν° 1μ λ°κ³ λ€μ λ°μ΄ν°λ‘ 3μ λ°κ² λλ€λ©΄ λ°μ΄ν° 2λ₯Ό λ°μ§ λͺ»νμΌλ―λ‘ μμ μΈ‘μμλ λ°μ΄ν° 3μ νκΈ°νκ³ λ°μ΄ν° 2λ₯Ό λ°μ§ λͺ»νλ€λ NAK2λ₯Ό μ μ‘μΈ‘μ 보λΈλ€.
NAKλ₯Ό λ°μ μ μ‘μΈ‘μ (1) κ²½μ°μ κ°μ΄ NAK(n) λ°μ΄ν°λ‘λΆν° λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ©° μμ μΈ‘μ κΈ°μ‘΄μ λ°μλ λ°μ΄ν° μ€ NAK(n)μΌλ‘ 보λλ λμ λ°μ΄ν° μ΄νμ λͺ¨λ λ°μ΄ν°λ₯Ό νκΈ°νκ³ μ¬μ μ‘ λ°λλ€.
(3). μ§μ λ νμ μμ λ΄μ ACK νλ μ λΆμ€(Lost ACK)
μ μ‘μΈ‘μ λΆμ€λ ACKλ₯Ό λ€λ£¨κΈ° μν΄ νμ΄λ¨Έλ₯Ό κ°μ§κ³ μλ€.
μ μ‘μΈ‘μμλ μ΄ νμ΄λ¨Έμ νμ μμ λμ μμ μΈ‘μΌλ‘λΆν° ACK λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νμ κ²½μ°, λ§μ§λ§ ACKλ λ°μ΄ν°λΆν° μ¬μ μ‘νλ€.
μ μ‘μΈ‘μ NAK γ νλ μμ λ°μμ κ²½μ°, NAK νλ μ λ²νΈλΆν° λ°μ΄ν°λ₯Ό μ¬μ μ‘νλ€.
μμ μΈ‘μ μνλ νλ μμ΄ μλ κ²½μ°, λ°μ΄ν°λ₯Ό λͺ¨λ νκΈ° μ²λ¦¬νλ€.
νμμμ(ACK λΆμ€)μ κ²½μ°, λ§μ§λ§ ACKλ λ°μ΄ν°λΆν° μ¬μ μ‘νλ€.
SR(Selective-Reject) ARQ
GBn ARQμ νμΈλ λ§μ§λ§ νλ μ μ΄νμ λͺ¨λ νλ μμ μ¬μ μ‘νλ λ¨μ μ 보μν κΈ°λ²μ΄λ€.
SR ARQλ μμλ, μμ€λ νλ μλ§ μ¬μ μ‘νλ€.
κ·Έλ κΈ° λλ¬Έμ λ³λμ λ°μ΄ν° μ¬μ λ ¬μ μνν΄μΌ νλ©°, λ³λμ λ²νΌλ₯Ό νμλ‘ νλ€.
μμ μΈ‘μ λ²νΌλ₯Ό λμ΄ λ°μ λ°μ΄ν°μ μ λ ¬μ΄ νμνλ€.
β¨ νΌμ‘ μ μ΄
μ‘μ μΈ‘μ λ°μ΄ν° μ λ¬κ³Ό λ€νΈμν¬μ λ°μ΄ν° μ²λ¦¬ μλλ₯Ό ν΄κ²°νκΈ° μν κΈ°λ²μ΄λ€.
ν λΌμ°ν°μκ² λ°μ΄ν°κ° λͺ°λ € λͺ¨λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μλ κ²½μ°, νΈμ€νΈλ€μ μ¬μ μ‘μ νκ² λκ³ κ²°κ΅ νΌμ‘λ§ κ°μ€μμΌ μ€λ²νλ‘μ°λ λ°μ΄ν° μμ€μ΄ λ°μνλ€.
μ΄λ¬ν λ€νΈμν¬μ νΌμ‘μ νΌνκΈ° μν΄ μ‘μ μΈ‘μμ 보λ΄λ λ°μ΄ν°μ μ μ‘ μλλ₯Ό μ μ΄νλ κ²μ΄ νΌμ‘ μ μ΄μ κ°λ μ΄λ€.
AIMD(Additive Increase Multicative Decrease)
ν© μ¦κ° / κ³± κ°μ μκ³ λ¦¬μ¦μ΄λΌκ³ νλ€.
μ²μμ ν¨ν· νλλ₯Ό 보λ΄λ κ²μΌλ‘ μμνμ¬ μ μ‘ν ν¨ν·μ΄ λ¬Έμ μμ΄ λμ°©νλ€λ©΄ Window Sizeλ₯Ό 1μ© μ¦κ°μν€λ©° μ μ‘νλ λ°©λ²μ΄λ€. λ§μ½, ν¨ν· μ μ‘μ μ€ν¨νκ±°λ TIME_OUTμ΄ λ°μνλ©΄ Window Sizeλ₯Ό μ λ°μΌλ‘ κ°μμν¨λ€.
μ΄ λ°©μμ 곡ννλ€.
μ¬λ¬ νΈμ€νΈκ° ν λ€νΈμν¬λ₯Ό 곡μ νκ³ μμΌλ©΄ λμ€μ μ§μ νλ μͺ½μ΄ μ²μμλ λΆλ¦¬νμ§λ§, μκ°μ΄ νλ₯΄λ©΄ νν μνλ‘ μλ ΄νκ² λλ νΉμ§μ΄ μλ€.
λ¬Έμ μ μ μ΄κΈ° λ€νΈμν¬μ λμ λμνμ μ¬μ©νμ§ λͺ»νκ³ λ€νΈμν¬κ° νΌμ‘ν΄μ§λ μν©μ 미리 κ°μ§νμ§ λͺ»νμ¬ νΌμ‘ν΄μ§κ³ λμμΌ λμνμ μ€μ΄λ λ°©μμ΄λ€.
Slow Start
AIMDκ° λ€νΈμν¬μ μμ©λ μ£Όλ³μμλ ν¨μ¨μ μΌλ‘ λμνμ§λ§, μ²μμ μ μ‘ μλλ₯Ό μ¬λ¦¬λ λ° μκ°μ΄ λ무 κΈΈλ€λ λ¨μ μ΄ μλ€.
Slow Startλ AIMDμ λ§μ°¬κ°μ§λ‘ ν¨ν·μ νλμ© λ³΄λ΄λ κ²λΆν° μμνλ€. μ΄ λ°©μμ ν¨ν·μ΄ λ¬Έμ μμ΄ λμ°©νλ©΄ κ°κ°μ ACK ν¨ν·λ§λ€ Window Sizeλ₯Ό 1μ© λλ¦°λ€. μ¦, ν μ£ΌκΈ°κ° μ§λλ©΄ Window Sizeλ 2λ°°κ° λλ€.
λ°λΌμ κ·Έλνμ λͺ¨μμ μ§μ ν¨μ κΌ΄μ΄ λλ€.
νΌμ‘ νμμ΄ λ°μνλ©΄ Window Sizeλ₯Ό 1λ‘ λ¨μ΄λ¨λ¦°λ€.
μ²μμλ λ€νΈμν¬μ μμ©λμ μμΈ‘ν μ μλ μ λ³΄κ° μμ§λ§ νλ² νΌμ‘ νμμ΄ λ°μνκ³ λλ©΄ λ€νΈμν¬μ μμ©λμ μ΄λμ λ μμν μ μμΌλ―λ‘ νΌμ‘ νμμ΄ λ°μνμλ Window Sizeμ μ λ°κΉμ§λ μ΄μ μ²λΌ μ§μ ν¨μ κΌ΄λ‘ Window Sizeλ₯Ό μ¦κ°μν€κ³ κ·Έ μ΄νλΆν°λ μλ§νκ² 1μ© μ¦κ°μν€λ λ°©μμ΄λ€.
미리 μ ν΄μ§ μκ³κ°(threshold)μ λλ¬ν λκΉμ§ μλμ°μ ν¬κΈ°λ₯Ό 2λ°°μ© μ¦κ°μν¨λ€.
Slow StartλΌλ μ΄λ¦μ μ¬μ©νμ§λ§, 맀 μ μ‘λ§λ€ 2λ°°μ© μ¦κ°νκΈ° λλ¬Έμ μ μ‘λμ΄μ§λ λ°μ΄ν°μ ν¬κΈ°λ μ§μν¨μμ μΌλ‘ μ¦κ°νλ€.
μ μ‘λλ λ°μ΄ν°μ ν¬κΈ°κ° μκ³ κ°μ λλ¬νλ©΄ νΌμ‘ ννΌ λ¨κ³λ‘ λμ΄κ°λ€.
[νΌμ‘ ννΌ(Congestion Avoidance)]
μλμ°μ ν¬κΈ°κ° μκ³ κ°μ λλ¬ν μ΄νμλ λ°μ΄ν°μ μμ€μ΄ λ°μν νλ₯ μ΄ λμμ§λ€.
λ°λΌμ μ΄λ₯Ό ννΌνκΈ° μν΄ μλμ° ν¬κΈ°λ₯Ό μ νμ μΌλ‘ 1μ© μ¦κ°μν€λ λ°©λ²μ΄λ€.
μμ μΈ‘μΌλ‘λΆν° μΌμ μκ° λμκΉμ§ ACKλ₯Ό μμ νμ§ λͺ»νλ κ²½μ°.
νμ μμμ λ°μ : λ€νΈμν¬ νΌμ‘μ΄ λ°μνλ€κ³ μΈμ.
νΌμ‘ μνλ‘ μΈμλ κ²½μ°
μλμ°μ ν¬κΈ°λ₯Ό μ¦, μΈκ·Έλ¨ΌνΈμ μλ₯Ό 1λ‘ κ°μμν¨λ€.
λμμ μκ³κ°μ ν¨ν· μμ€μ΄ λ°μνμ λμ μλμ° ν¬κΈ°μ μ λ°μΌλ‘ μ€μΈλ€.
[λΉ λ₯Έ ν볡(Fast Recovery)]
νΌμ‘ν μνκ° λλ©΄ Window Sizeλ₯Ό 1λ‘ μ€μ΄μ§ μκ³ μ λ°μΌλ‘ μ€μ΄κ³ μ ν μ¦κ°μν€λ λ°©λ²μ΄λ€.
λΉ λ₯Έ ν볡 μ μ± κΉμ§ μ μ©νλ©΄ νΌμ‘ μν©μ νλ² κ²ͺκ³ λμλΆν°λ μμν AIMD λ°©μμΌλ‘ λμνκ² λλ€.
[λΉ λ₯Έ μ¬μ μ‘(Fast Retransmit)]
μμ μΈ‘μμ ν¨ν·μ λ°μ λ λ¨Όμ λμ°©ν΄μΌ ν ν¨ν·μ΄ λμ°©νμ§ μκ³ λ€μ ν¨ν·μ΄ λμ°©ν κ²½μ°μλ ACK ν¨ν·μ 보λΈλ€. λ¨, μμλλ‘ μ λμ°©ν λ§μ§λ§ ν¨ν·μ λ€μ ν¨ν·μ μλ²μ ACK ν¨ν·μ μ€μ΄μ 보λΈλ€. λ°λΌμ μ€κ°μ ν¨ν· νλκ° μμ€λλ©΄ μ‘μ μΈ‘μμλ μλ²μ΄ μ€λ³΅λ ACK ν¨ν·μ λ°κ² λλ€. μ΄κ²μ κ°μ§νλ©΄ λ¬Έμ κ° λλ μλ²μ ν¨ν·μ μ¬μ μ‘ν μ μλ€.
λΉ λ₯Έ μ¬μ μ‘μ μ€λ³΅λ μλ²μ ν¨ν·μ 3κ°(3 ACK) λ°μΌλ©΄ μ¬μ μ‘νλ€. κ·Έλ¦¬κ³ μ΄λ¬ν νμμ΄ μΌμ΄λλ κ²μ μ½κ°μ νΌμ‘μ΄ λ°μν κ²μΌλ‘ κ°μ£Όνμ¬ Window Sizeλ₯Ό μ λ°μΌλ‘ μ€μΈλ€.
UDP
β¨ UDP
User Datagram Protocolμ μ½μμ΄λ€.
λ°μ΄ν°λ₯Ό λ°μ΄ν° κ·Έλ¨ λ¨μλ‘ μ²λ¦¬νλ νλ‘ν μ½.
λ°μ΄ν° κ·Έλ¨ : λ 립μ μΈ κ΄κ³λ₯Ό μ§λλ ν¨ν·
λΉμ°κ²°ν νλ‘ν μ½λ‘ μ¬μ μ μ°κ²° μ€μ μμ΄ λ°μ΄ν°λ₯Ό μ λ¬νλ€.
μ¬μ μ μ°κ²° μ€μ μ νμ§ μμ λ°μ΄ν° κ·Έλ¨ λ°©μμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ λ¬νκΈ° λλ¬Έμ νλμ λ©μμ§μμ λΆν λ κ°κ°μ ν¨ν·μ μλ‘ λ€λ₯Έ κ²½λ‘λ‘ μ μ‘λ μ μλ€.
μ‘μ μΈ‘μμ μ μ‘ν ν¨ν·μ μμμ μμ μΈ‘μ λμ°©ν ν¨ν·μ μμκ° λ€λ₯Ό μ μλ€. κ·Έλ¬λ μλ‘ λ€λ₯Έ κ²½λ‘λ‘ ν¨ν·μ μ²λ¦¬ν¨μλ λΆκ΅¬νκ³ μμλ₯Ό λΆμ¬νκ±°λ μ¬μ‘°λ¦½νμ§ μλλ€.
νλ¦ μ μ΄, νΌμ‘ μ μ΄, μ€λ₯ μ μ΄λ₯Ό νμ§ μμΌλ―λ‘ μμλ μΈκ·Έλ¨ΌνΈμ λν μ¬μ μ‘μ νμ§ μλλ€.
μ΄λ‘ μΈν΄ μλκ° λΉ λ₯΄λ©° λ€νΈμν¬ λΆνκ° μ λ€λ μ₯μ μ΄ μμ§λ§, μ λ’°μ± μλ λ°μ΄ν° μ μ‘μ 보μ₯νμ§ λͺ»νλ€.
UDPλ RTP(Real Time Protocol), Multicast, DNS λ±μμ μ¬μ©λλ€
DNS κ°μ κ²½μ° λκ΅°κ° DNS μλΉμ€λ₯Ό μμ²ν λλ§λ€ TCPμ²λΌ Sessionμ λ§Ίκ³ ν΅μ νλ€λ©΄ μλλ λλ¦¬κ³ , μλ² λ¦¬μμ€λ μμ²λκ² μλͺ¨λ κ²μ΄λ€.
κ·Έλ°κ° νλ©΄ NMS(Network Management Server)κ° 5λΆμ νλ²μ© μ₯λΉ μνλ₯Ό μ κ²νκΈ° μν΄ μ 보λ₯Ό μ½μ΄μ€λλ° μλ°±, μμ²λμ μ₯λΉμ Sessionμ λ§Ίμ΄μΌ νλ€λ©΄ μ΄κ²λ λ§μ°¬κ°μ§λ‘ λ¬Έμ κ° μκΈ΄λ€.
κ·Έλ κΈ° λλ¬Έμ UDPλ₯Ό μ¬μ©νλ€.
μ¬μ μ‘μ νλ©΄ μλλ μλΉμ€κ° μλ€.
λνμ μΌλ‘ RTPμ΄λ€.
μ νλ₯Ό νκ³ μλ€ λ€κ³ κ°μ ν΄λ³΄μ.
"μ¬","보","μΈ","μ"λΌλ 4κ°μ λ°μ΄ν°λ₯Ό μ μ‘νλλ°, "μΈ"λ₯Ό λͺ»λ°μλ€κ³ λ€μ 보λ΄λ¬λΌκ³ νλ©΄ "μ¬λ³΄μμΈ"κ° λ κ²μ΄λ€.
μ΄λ΄ λλ κ·Έλ₯ "μ¬λ³΄Xμ"λ‘ μ λ¬νλκ² λμ μν©μ΄λ€.
λν, Multicast μλΉμ€κ° UDPλ₯Ό μ¬μ©νλ€.
1:NμΌλ‘ ν΅μ νλ λ°©μμμ ν μ¬λμ΄ λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νλ€κ³ μ¬μ μ‘μ μμ²νλ€κ³ κ°μ ν΄λ³΄μ. μ λλ‘ λ°μ μ¬λλ€λ ν΄λΉ λ°μ΄ν°λ₯Ό λ€μ λ°μμ μ²λ¦¬ν΄μΌ νλ€λ λ¬Έμ μ μ΄ λ°μν μ μκΈ° λλ¬Έμ UDPλ₯Ό μ¬μ©νλ€.
3-Way handshake & 4-Way handshake
β¨ 3 way handshake
TCP/IP νλ‘ν μ½μ μ΄μ©νμ¬ ν΅μ μ μ§νν λ, λ μ’ λ¨ κ° μ νν λ°μ΄ν° μ μ‘μ 보μ₯νκΈ° μν΄ μ°κ²°μ μ€μ νλ κ³Όμ μ΄λ€.
[μ°κ²° κ³Όμ ]
SYN : Synchronize Sequence Number
ACK : Acknowledgement
ν΄λΌμ΄μΈνΈλ μλ²μ μ μμ μμ²νλ SYN(a) ν¨ν·μ 보λΈλ€.
μλ²λ ν΄λΌμ΄μΈνΈμ μμ²μΈ SYN(a) ν¨ν·μ λν μμ² μλ½ μλ΅μΌλ‘ ACK(a+1) ν¨ν·κ³Ό ν΄λΌμ΄μΈνΈλ ν¬νΈλ₯Ό μ΄μ΄λ¬λΌλ SYN(b) ν¨ν·μ 보λΈλ€.
ν΄λΌμ΄μΈνΈλ ACK(a+1) ν¨ν·κ³Ό SYN(b) ν¨ν·μ λ°κ³ μ΄μ λν μλ΅μΌλ‘ ACK(b+1) ν¨ν·μ 보λ΄λ©° μ°κ²°μ΄ μ±λ¦½λλ€.
[Q. μ 2wayκ° μλλΌ 3wayμΌκΉ?]
TCPλ μλ°©ν₯μ± μ°κ²°
μ΄κΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈμμ μλ²μκ² μμ μ μ‘΄μ¬λ₯Ό μλ¦¬κ³ ν¨ν·μ λ³΄λΌ μ μλ κ²μ²λΌ μλ²μμλ ν΄λΌμ΄μΈνΈμκ² μμ μ μ‘΄μ¬λ₯Ό μλ¦¬κ³ ν¨ν·μ λ³΄λΌ μ μλ€λ μ νΈλ₯Ό 보λ΄μΌ νκΈ° λλ¬Έμ΄λ€.
[μ°Έκ³ ]
μ²μμ ν΄λΌμ΄μΈνΈμμ SYN ν¨ν·μ λ³΄λΌ λ Sequence Numberμλ λλ€ν μ«μκ° λ΄κ²¨μ§λ€.
Connectionμ λ§Ίμ λ, μ¬μ©νλ ν¬νΈ(port)λ μ ν λ²μ λ΄μμ μ¬μ©νκ³ μκ°μ΄ μ§λ¨μ λ°λΌ μ¬μ¬μ©νλ€. λ°λΌμ μ΄μ μ μ¬μ©ν ν¬νΈ λ²νΈλ₯Ό μ¬μ¬μ©ν κ°λ₯μ±μ΄ μλ€.
Sequence Numberκ° μμ°¨μ μΈ μ«μλ‘ μ μ‘λλ€λ©΄ μλ²λ μ΄μ μ ConnectionμΌλ‘λΆν° μ μ‘λλ ν¨ν·μΌλ‘ μΈμν μ μλ€. λ°λΌμ μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λμλ‘ μ΄κΈ° Sequence Numberλ₯Ό μ€μ νλ€.
β¨ 4 way handshake
TCP/IP νλ‘ν μ½μ μ΄μ©ν ν΅μ κ³Όμ μμλ μμμ μΈκΈνλ κ²μ²λΌ 3 way handshake κ³Όμ μ ν΅ν΄ μ°κ²°μ μ€μ νκ³ 4 way handshake κ³Όμ μ ν΅ν΄ μ°κ²° μ€μ μ ν΄μ νλ€.
[μ°κ²° κ³Όμ ]
ν΄λΌμ΄μΈνΈλ μλ²μκ² μ°κ²°μ μ’ λ£νκ² λ€λ FIN ν¨ν·μ 보λΈλ€.
μλ²λ ν΄λΌμ΄μΈνΈμ μμ²(FIN)μ λν μλ΅μΌλ‘ ACK ν¨ν·μ 보λΈλ€.
2-1) μ²λ¦¬ν΄μΌ ν μμ μ ν΅μ μ΄ λλ λκΉμ§ κΈ°λ€λ¦°λ€.
μ²λ¦¬ν΄μΌ ν λͺ¨λ ν΅μ μ λλ§μ³€λ€λ©΄ μ°κ²°μ μ’ λ£νκ² λ€λ FIN ν¨ν·μ 보λΈλ€.
ν΄λΌμ΄μΈνΈλ FIN ν¨ν·μ λν νμΈ μλ΅μΌλ‘ ACK ν¨ν·μ 보λΈλ€.
ν΄λΌμ΄μΈνΈμ ACK ν¨ν·μ λ°μ μλ²λ μμΌ μ°κ²°μ close νλ€.
ν΄λΌμ΄μΈνΈλ μμ§ μλ²λ‘λΆν° λ°μ§ λͺ»ν λ°μ΄ν°κ° μμ κ²μ λλΉν΄ κΈ°λ€λ¦¬λ κ³Όμ μ κ±°μΉλ€.(TIME_WAIT)
[μλ¬ λ°μ]
ν΄λΌμ΄μΈνΈμμ FIN ν¨ν· μ μ‘ ν ACK ν¨ν·μ κΈ°λ€λ¦¬λ FIN_WAIT1κ³Ό μλ²μ ACK ν¨ν·μ λ°μ ν FIN ν¨ν·μ κΈ°λ€λ¦¬λ FIN_WAIT2 μλ¬ λ°μμΌλ‘ μΈν΄ Time outμ΄ λλ©΄ μ€μ€λ‘ μ°κ²°μ μ’ λ£νλ€.
κ·Έλ¬λ, CLOSE_WAITμ Applicationμ΄ close()λ₯Ό μ μ νκ² μ²λ¦¬νμ§ λͺ»νλ©΄ CLOSE_WAIT μνλ‘ κ³μ κΈ°λ€λ¦¬κ² λμ΄ Socket Hang Up μλ¬κ° λ°μν μ μλ€.
HTTP
Header
Caching
Optimization
HTTP2.0
β¨ HTTP
μΉ μλ²μ ν΄λΌμ΄μΈνΈ κ°μ λ¬Έμλ₯Ό κ΅ννκΈ° μν ν΅μ κ·μ½
μΉμμλ§ μ¬μ©νλ νλ‘ν μ½λ‘ TCP/IP κΈ°λ°μΌλ‘ μλ²μ ν΄λΌμ΄μΈνΈ κ°μ μμ²κ³Ό μλ΅μ μ μ‘νλ€.
β¨ HTTPμ νΉμ§
TCP κΈ°λ°μ ν΅μ λ°©μ
λΉμ°κ²° μ§ν₯
λΈλΌμ°μ λ₯Ό ν΅ν΄ μ¬μ©μμ μμ²μΌλ‘ μλ²μ μ μνμ¬ μμ²μ λν μλ΅μ λ°μ΄ν°λ₯Ό μ μ‘ν, μ°κ²°μ μ’ λ£νλ€.
κ°λ¨νκΈ° λλ¬Έμ μμμ΄ μ κ²λλ μ₯μ μ΄ μλ€.
νμ§λ§, μ°κ²°μ΄ μ§μμ μ΄μ§ μκΈ° λλ¬Έμ μ¬μ©μμ μ°κ²° μ’ λ£ν μΆκ°μ μΈ μμ²μ μ΄λ€ μ¬μ©μμ μμ²μΈμ§ λͺ¨λ₯Έλ€λ μ μ΄ μ‘΄μ¬νλ€.
μ¦, μ¬λ¬ μ¬μ©μκ° μμ²ν μ κ°κ°μ μ¬μ©μ μμ²μ ꡬλΆν μ μμ΄μ μ λλ‘ λ μλ΅ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ€λ λ¨μ μ΄ μλ€.
ν΄κ²° λ°©λ²μΌλ‘λ μΏ ν€, μΈμ , νλ νΌ νλ λ±μ΄ μλ€.
λ¨λ°©ν₯μ±
μ¬μ©μμ μμ² νκ°μ λν΄ νκ°μ μλ΅μ νλ λ°©μμ΄κΈ° λλ¬Έμ μλ²κ° λ¨Όμ μλ΅νμ§ μλλ€.
β¨ HTTPμ λ¬Έμ μ
HTTPλ νλ¬Έ ν΅μ μ΄κΈ° λλ¬Έμ λμ²μ΄ κ°λ₯νλ€.
ν΅μ μλλ₯Ό νμΈνμ§ μκΈ° λλ¬Έμ μμ₯μ΄ κ°λ₯νλ€.
μμ μ±μ μ¦λͺ ν μ μκΈ° λλ¬Έμ λ³μ‘°κ° κ°λ₯νλ€.
μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ HTTPSκ° λ±μ₯νλ€.
β¨ HTTPS
HTTP ν΅μ νλ μμΌ λΆλΆμ μΈν°λ· μμμ μ 보λ₯Ό μνΈννλ SSL(Secure Socket Layer)λΌλ νλ‘ν μ½λ‘ λ체ν κ²μ΄λ€.
HTTPλ TCPμ ν΅μ νμ§λ§, HTTPSμμ HTTPλ SSLκ³Ό ν΅μ νκ³ SSLμ΄ TCPμ ν΅μ νκ² λλ€.
μ¦, νλμ λ μ΄μ΄λ₯Ό λ λ κ²μ΄λ€.
HTTPSμ SSLμμλ λμΉν€ μνΈν λ°©μκ³Ό 곡κ°ν€ μνΈν λ°©μμ λͺ¨λ μ¬μ©νλ€.
β¨ SSL
SSL νλ‘ν μ½μ Netscape μ¬μμ μΉ μλ²μ λΈλΌμ°μ μ¬μ΄μ 보μμ μν΄ λ§λ€μ΄μ‘λ€. CA(Certificate Authority)λΌ λΆλ¦¬λ μλ νν°λ‘λΆν° μλ²μ ν΄λΌμ΄μΈνΈμ μΈμ¦μ νλλ° μ¬μ©λλ€.
μ ν리μΌμ΄μ μλ²λ₯Ό μ΄μνλ κΈ°μ μ CAλ₯Ό ν΅ν΄ μΈμ¦μλ₯Ό λ§λ λ€.
μ ν리μΌμ΄μ μλ²λ₯Ό μ΄μνλ κΈ°μ μ HTTPS μ μ©μ μν΄ κ³΅κ°ν€μ κ°μΈν€λ₯Ό λ§λ λ€.
μ λ’°ν μ μλ CA κΈ°μ μ μ ννκ³ μΈμ¦μ μμ±μ μμ²νλ€.
CAλ μλ²μ 곡κ°ν€, μνΈν λ°©λ² λ±μ μ 보λ₯Ό λ΄μ μΈμ¦μλ₯Ό λ§λ€κ³ ν΄λΉ CAμ κ°μΈν€λ‘ μνΈννμ¬ μλ²μ μ 곡νλ€.
ν΄λΌμ΄μΈνΈκ° SSLλ‘ μνΈνλ νμ΄μ§(https://)λ₯Ό μμ²μ μλ²λ μΈμ¦μλ₯Ό μ μ‘νλ€.
ν΄λΌμ΄μΈνΈμ μλ²μ ν΅μ νλ¦ κ³Όμ
ν΄λΌμ΄μΈνΈκ° SSLλ‘ μνΈνλ νμ΄μ§λ₯Ό μμ²νλ€.
μλ²λ ν΄λΌμ΄μΈνΈμκ² μΈμ¦μλ₯Ό μ μ‘νλ€.
ν΄λΌμ΄μΈνΈλ μΈμ¦μκ° μ μ©μ΄ μλ CAλ‘λΆν° μλͺ λ κ²μΈμ§ νλ¨νλ€. λΈλΌμ°μ λ CA 리μ€νΈμ ν΄λΉ CAμ 곡κ°ν€λ₯Ό κ°μ§κ³ μλ€. 곡κ°ν€λ₯Ό νμ©νμ¬ μΈμ¦μκ° λ³΅νΈνκ° κ°λ₯νλ€λ©΄ μ μν μ¬μ΄νΈκ° CAμ μν΄ κ²ν λμλ€λ κ²μ μλ―Ένλ€. λ°λΌμ μλ²κ° μ μ©μ΄ μλ€κ³ νλ¨νλ€. 곡κ°ν€κ° λ°μ΄ν°λ₯Ό μ 곡ν μ¬λμ μ μμ 보μ₯ν΄μ£Όλ κ²μΌλ‘ μ΄λ¬ν κ²μ μ μ μλͺ μ΄λΌκ³ νλ€.
ν΄λΌμ΄μΈνΈλ CAμ 곡κ°ν€λ₯Ό μ΄μ©ν΄ μΈμ¦μλ₯Ό 볡νΈννκ³ μλ²μ 곡κ°ν€λ₯Ό νλνλ€.
ν΄λΌμ΄μΈνΈλ μλ²μ 곡κ°ν€λ₯Ό μ¬μ©ν΄ λλ€ λμΉ μνΈνν€, λ°μ΄ν° λ±μ μνΈννμ¬ μλ²λ‘ μ μ‘νλ€.
μλ²λ μμ μ κ°μΈν€λ₯Ό μ΄μ©ν΄ 볡νΈννκ³ λλ€ λμΉ μνΈνν€, λ°μ΄ν° λ±μ νλνλ€.
μλ²λ λλ€ λμΉ μνΈνν€λ‘ ν΄λΌμ΄μΈνΈ μμ²μ λν μλ΅μ μνΈννμ¬ μ μ‘νλ€.
ν΄λΌμ΄μΈνΈλ λλ€ λμΉ μνΈνν€λ₯Ό μ΄μ©ν΄ 볡νΈννκ³ λ°μ΄ν°λ₯Ό μ΄μ©νλ€.
μΈμ¦μμ ν¬ν¨λ λ΄μ©
μλ²μΈ‘ 곡κ°ν€(public key)
곡κ°ν€ μνΈν λ°©λ²
μΈμ¦μλ₯Ό μ¬μ©ν μΉμλ²μ URL
μΈμ¦μλ₯Ό λ°νν κΈ°κ΄ μ΄λ¦
λͺ¨λ μΉνμ΄μ§μμ HTTPSλ₯Ό μ¬μ©νμ§ μλλ€. μ΄μ λ νλ¬Έ ν΅μ μ λΉν΄μ μνΈν ν΅μ μ CPUλ λ©λͺ¨λ¦¬ λ± λ¦¬μμ€λ₯Ό λ§μ΄ νμλ‘ νκΈ° λλ¬Έμ΄λ€. ν΅μ ν λλ§λ€ μνΈνλ₯Ό νλ©΄ 리μμ€λ₯Ό μλΉνκΈ° λλ¬Έμ μλ² ν λλΉ μ²λ¦¬ν μ μλ Request μκ° μ€μ΄λ€κ² λλ€.
λ°λΌμ λ―Όκ°ν μ 보λ₯Ό λ€λ£° λλ§ HTTPSμ μν μνΈν ν΅μ μ μ¬μ©ν΄μΌ νλ€.
곡κ°ν€ μνΈ, λμΉν€ μνΈ
β¨ λμΉν€ μνΈν
μνΈνμ μ¬μ©λλ ν€μ 볡νΈνμ μ¬μ©λλ ν€κ° λμΌν μνΈν κΈ°λ²μ΄λ€.
λμΉν€ μνΈ λ°©μμΌλ‘ μνΈνν μ 보λ₯Ό λκ΅°κ°μκ² λ³΄λΌ λ, μνΈν€λ ν¨κ» 보λ΄μΌ νλ€. μνΈν€ μ체λ μνΈνκ° λμ§ μμ νλ¬ΈμΌλ‘ λΆμ€νκ±°λ νμΈμκ² λ ΈμΆλλ©΄ 보μμ λ§€μ° μ·¨μ½ν μ μλ€.
ν€ μ λ¬ λ° κ΄λ¦¬μ μ΄λ €μμ΄ μμ§λ§, λμΉν€ μνΈν λ°©μμ μνΈν μ°μ° μλκ° λΉ λ₯΄κΈ° λλ¬Έμ ν¨μ¨μ μΈ μνΈ μμ€ν μ ꡬμΆν μ μλ€λ μ₯μ μ΄ μλ€.
λΈλ‘ μνΈν, μ€νΈλ¦Ό μνΈνκ° μλ€.
⨠곡κ°ν€ μνΈν
λμΉν€ μνΈν λ°©μμ ν€ μ λ¬μ μ·¨μ½μ μ ν΄κ²°νκΈ° μν΄ λμ¨ λ°©μμ΄λ€. μνΈνμ μ¬μ©νλ ν€μ 볡νΈνμ μ¬μ©νλ ν€λ₯Ό λΆλ¦¬νλ€. λ°λΌμ λΉλμΉν€ μνΈνλΌκ³ λ λΆλ₯Έλ€.
μμ μ΄ κ°μ§κ³ μλ κ³ μ ν μνΈν€(κ°μΈν€ νΉμ λΉλ°ν€)λ‘λ§ λ³΅νΈνν μ μλ μνΈν€(곡κ°ν€)λ₯Ό λμ€μκ² κ³΅κ°νλ€.
곡κ°ν€ μνΈν λ°©μμ μ§νκ³Όμ
B μ¬μ©μλ μμ μ 곡κ°ν€λ₯Ό 곡κ°νλ€. μ΄ κ³΅κ°ν€λ μνΈνμ μ¬μ©λλ ν€μ΄λ©°, λꡬλ μ§ μ΄λμ΄ κ°λ₯νλ€. (볡νΈνμ μ¬μ©λλ ν€λ B μμ λ§ κ°μ§κ³ μλ€. μμ΄λ²λ¦¬λ©΄ μλλ€.)
A μ¬μ©μλ B μ¬μ©μμ 곡κ°ν€λ‘ λ°μ΄ν°λ₯Ό μνΈννλ€.
μνΈνλ λ¬Έμλ₯Ό B μ¬μ©μμκ² μ μ‘νλ€.
B μ¬μ©μλ μμ λ§μ κ°μΈν€(볡νΈνν€)λ₯Ό μ΄μ©νμ¬ μ μ‘λ°μ μνΈν λ¬Έμλ₯Ό 볡νΈννμ¬ λ°μ΄ν°λ₯Ό μ΄λνλ€.
λμΉν€ μνΈν λ°©μμ ν€ μ λ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ§λ§ μνΈν, 볡νΈνλ₯Ό μν΄ λ³΅μ‘ν μν μ°μ°μ μννκΈ° λλ¬Έμ λμΉν€ λ°©μμ λΉν΄ μλκ° λλ¦¬κ³ λ³΅μ‘νλ€λ λ¨μ μ΄ μλ€.
λμΉν€ μνΈνμ μ₯μ κ³Ό 곡κ°ν€ μνΈνμ μ₯μ μ μ±ννμ¬ μ©λμ΄ ν° μ 보λ λμΉν€λ‘ μνΈννκ³ , μνΈνμ μ¬μ©λ λμΉν€λ 곡κ°ν€λ‘ μνΈννμ¬ λμμκ² μ λ¬νλ νμ΄λΈλ¦¬λ μνΈν λ°©λ²μ΄ μΌλ°μ μΌλ‘ μ¬μ©λκ³ μλ€.
곡κ°ν€ κΈ°λ° κ΅¬μ‘°
νΉμ μ¬λμ κ°μΈν€μ 곡κ°ν€λ μ΄λ»κ² μμ±ν κ²μ΄λ©°, μ΄λ»κ² λ°°ν¬ν κ²μ΄κ³ μ΄λ»κ² κ΄λ¦¬ν΄μΌ νλκ°μ λν μ΄μκ° μ‘΄μ¬νλ€. λν, μ΄λ€ 곡κ°ν€κ° νΉμ ν μ¬λμ 곡κ°ν€λΌλ κ²μ μ΄λ»κ² 보μ₯ν μ μλμ§μ λν μ΄μλ μ‘΄μ¬νλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λμ§νΈ μΈμ¦μλ₯Ό λμ νκ³ μ΄λ₯Ό νμ©νλ μννΈμ¨μ΄, νλμ¨μ΄, μ μ± , μ λ, μ¬μ©μ λ±μ μ΄μΉν΄μ 곡κ°ν€ κΈ°λ° κ΅¬μ‘°λΌκ³ νλ€.
β¨ TLS/SSL HandShake
HTTPSμμ ν΄λΌμ΄μΈνΈμ μλ²κ° ν΅μ μ SSL μΈμ¦μλ‘ μ λ’°μ± μ¬λΆλ₯Ό νλ¨νκΈ° μν΄ μ°κ²°νλ λ°©μ
μ§ν μμ
ν΄λΌμ΄μΈνΈλ μλ²μκ²
client hello
λ©μμ§λ₯Ό λ΄μ μλ²λ‘ 보λΈλ€. μ΄λ μνΈνλ μ 보λ₯Ό ν¨κ» λ΄λλ°,λ²μ
,μνΈ μκ³ λ¦¬μ¦
,μμΆ λ°©μ
λ±μ λ΄λλ€.μλ²λ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ μνΈ μκ³ λ¦¬μ¦κ³Ό μμΆ λ°©μμ λ°κ³ ,
μΈμ ID
μCA κ³΅κ° μΈμ¦μ
λ₯Όserver hello
λ©μμ§μ ν¨κ» λ΄μ μλ΅νλ€. μ΄ CA μΈμ¦μμλ μμΌλ‘ ν΅μ μ΄ν μ¬μ©ν λμΉν€κ° μμ±λκΈ° μ , ν΄λΌμ΄μΈνΈμμ handshake κ³Όμ μ μνΈνμ μ¬μ©ν 곡κ°ν€λ₯Ό λ΄κ³ μλ€.ν΄λΌμ΄μΈνΈ μΈ‘μ μλ²μμ λ³΄λΈ CA μΈμ¦μμ λν΄ μ ν¨ν μ§ CA λͺ©λ‘μμ νμΈνλ κ³Όμ μ μ§ννλ€.
CA μΈμ¦μμ λν μ λ’°μ±μ΄ ν보λμλ€λ©΄, ν΄λΌμ΄μΈνΈλ λμ λ°μ΄νΈλ₯Ό μμ±νμ¬ μλ²μ 곡κ°ν€λ‘ μνΈννλ€. μ΄ λμ λ°μ΄νΈλ λμΉν€λ₯Ό μ νλλ° μ¬μ©μ΄ λκ³ , μμΌλ‘ μλ‘ λ©μμ§λ₯Ό ν΅μ ν λ μνΈννλλ° μ¬μ©λλ€.
λ§μ½ 2λ² λ¨κ³μμ μλ²κ° ν΄λΌμ΄μΈνΈ μΈμ¦μλ₯Ό ν¨κ» μꡬνλ€λ©΄, ν΄λΌμ΄μΈνΈμ μΈμ¦μμ ν΄λΌμ΄μΈνΈμ κ°μΈν€λ‘ μνΈνλ μμμ λ°μ΄νΈ λ¬Έμμ΄μ ν¨κ» 보λ΄μ€λ€.
μλ²λ ν΄λΌμ΄μΈνΈμ μΈμ¦μλ₯Ό νμΈ ν, λμ λ°μ΄νΈλ₯Ό μμ μ κ°μΈν€λ‘ 볡νΈν ν λμΉ λ§μ€ν° ν€ μμ±μ νμ©νλ€.
ν΄λΌμ΄μΈνΈλ handshake κ³Όμ μ΄ μλ£λμλ€λ
finished
λ©μμ§λ₯Ό μλ²μ 보λ΄λ©΄μ, μ§κΈκΉμ§ λ³΄λΈ κ΅ν λ΄μλ€μ ν΄μ± ν κ·Έ κ°μ λμΉν€λ‘ μνΈννμ¬ κ°μ΄ λ΄μ 보λ΄μ€λ€.μλ²λ λμΌνκ² κ΅ν λ΄μ©λ€μ ν΄μ±ν λ€ ν΄λΌμ΄μΈνΈμμ 보λ΄μ€ κ°κ³Ό μΌμΉνλ μ§ νμΈνλ€. μΌμΉνλ©΄ μλ²λ λ§μ°¬κ°μ§λ‘
finished
λ©μμ§λ₯Ό μ΄λ²μ λ§λ λμΉν€λ‘ μνΈννμ¬ λ³΄λΈλ€.ν΄λΌμ΄μΈνΈλ ν΄λΉ λ©μμ§λ₯Ό λμΉν€λ‘ 볡νΈννμ¬ μλ‘ ν΅μ μ΄ κ°λ₯ν μ λ’°λ°μ μ¬μ©μλ κ±Έ μΈμ§νκ³ , μμΌλ‘ ν΄λΌμ΄μΈνΈμ μλ²λ ν΄λΉ λμΉν€λ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μκ² λλ€.
REST & RESTfulμ΄λ?
RESTλ Representational State Transferμ μ½μλ‘ μΉμ μ₯μ μ μ΅λν νμ©ν μ μλ Clientμ Server κ° ν΅μ λ°©μ μ€ νλμ΄λ€.
μ€κ³ κΈ°λ³Έ κ·μΉμΌλ‘ HTTP URIλ₯Ό ν΅ν΄ μμμ λͺ μνκ³ HTTP method(GET, POST, PUT, DELETE)λ₯Ό ν΅ν΄ μμμ μ²λ¦¬νλλ‘ μ€κ³λ μν€ν μ²μ΄λ€.
RESTfulμ RESTλΌλ μν€ν μ²λ₯Ό ꡬννλ μΉ μλΉμ€λ₯Ό λνλ΄λ κ²μΌλ‘ REST μ리λ₯Ό λ°λ₯΄λ μμ€ν μ RESTfulμ΄λΌλ μ©μ΄λ‘ μ§μΉνλ€.
Cookie & Session
HTTPλ λΉμνμ±(Stateless) νλ‘ν μ½λ‘ μν μ 보λ₯Ό μ μ§νμ§ μλλ€. μ°κ²°μ μ μ§νμ§ μκΈ° λλ¬Έμ 리μμ€ λλΉκ° μ€μ΄λλ κ²μ ν° μ₯μ μ΄μ§λ§ ν΅μ ν λλ§λ€ λ§€λ² μ°κ²° μ€μ μ ν΄μΌ νλ©°, μ΄μ μμ²κ³Ό νμ¬ μμ²μ΄ κ°μ μ¬μ©μμ μμ²μΈμ§ μ μ μλ€λ λ¨μ μ΄ μ‘΄μ¬νλ€.
μΏ ν€μ μΈμ μ ν΅ν΄μ HTTPμ Statelessν λ¬Έμ μ μ ν΄κ²°ν μ μλ€.
[μ μ₯ μμΉ]
μΏ ν€ : ν΄λΌμΈμ΄νΈμ μΉ λΈλΌμ°μ κ° μ§μ νλ λ©λͺ¨λ¦¬ or νλ λμ€ν¬
μΈμ : μλ²μ λ©λͺ¨λ¦¬
[λ§λ£ μμ ]
μΏ ν€ : μ μ₯ν λ, expires μμ±μ μ μνμ¬ λ¬΄ν¨νμν€λ©΄ μμ λ λ μ§λ₯Ό μ§μ ν μ μλ€.
μΈμ : ν΄λΌμ΄μΈνΈκ° λ‘κ·Έμμνκ±°λ μ€μ μκ° λμ λ°μμ΄ μμΌλ©΄ 무ν¨νλκΈ° λλ¬Έμ μ νν μμ μ μ μ μλ€.
[리μμ€]
μΏ ν€ : ν΄λΌμ΄μΈνΈμ μ μ₯λκ³ ν΄λΌμ΄μΈνΈμ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νκΈ° λλ¬Έμ μλ² μμμ μ¬μ©νμ§ μλλ€.
μΈμ : μλ²μ μ μ₯λκ³ , μλ² λ©λͺ¨λ¦¬λ‘ λ‘λ©λκΈ° λλ¬Έμ μΈμ μ΄ μκΈΈ λλ§λ€ 리μμ€λ₯Ό μ°¨μ§νλ€.
[μ©λ μ ν]
μΏ ν€ : ν΄λΌμ΄μΈνΈλ λͺ¨λ₯΄κ² μ μλλ μ¬μ΄νΈμ μνμ¬ μ€μ λ μ μκΈ° λλ¬Έμ μΏ ν€λ‘ μΈν΄ λ¬Έμ κ° λ°μνλ κ±Έ λ§κ³ μ ν λλ©μΈλΉ 20κ°, νλμ μΏ ν€λΉ 4KBλ‘ μ νν΄ λμλ€.
μΈμ : ν΄λΌμ΄μΈνΈκ° μ μνλ©΄ μλ²μ μν΄ μμ±λλ―λ‘ κ°μλ μ©λ μ νμ΄ μλ€.
[보μ]
μΏ ν€ : ν΄λΌμ΄μΈνΈμ μ μ₯νκΈ° λλ¬Έμ 보μμ μ·¨μ½νλ€.
μΈμ : μλ²μ μ μ₯νκΈ° λλ¬Έμ μΏ ν€μ λΉν΄μλ 보μμ μ°μνλ€.
Naverλ₯Ό μΉλ©΄ μΌμ΄λλ κ³Όμ (μΉν΅μ μ ν° νλ¦)
μ£Όμμ°½μ naver.comμ μΉλ©΄ μΌμ΄λλ μΌ
λ©΄μ μ§λ¬Έμμλ μ’ μ’ λμ€λ λ°©μμ΄λ€. μ΄ν΄νκΈ° μ μ IP μ£Όμμ λλ©μΈμ λν μ¬μ μ§μμ΄ νμνλ€.
IP μ£Όμ
IP μ£Όμλ λ§μ μ»΄ν¨ν°λ€μ΄ μΈν°λ· μμμ μλ‘λ₯Ό μΈμνκΈ° μν΄ μ§μ λ°μ μλ³μ© λ²νΈλΌκ³ μκ°νλ©΄ λλ€.
νμ¬λ IPv4 λ²μ (32λΉνΈ)λ‘ κ΅¬μ±λμ΄ μμΌλ©°, νλ²μ©μ λ€μ΄λ΄€μ λ²ν 127.0.0.1 κ°μ μ£Όμλ₯Ό λ§νλ€.
μκ°μ΄ κ°μλ‘ IPv4 μ£Όμμ λΆμ‘±μΌλ‘ IPv6κ° μκ²Όλλ°, 128λΉνΈλ‘ ꡬμ±λμ΄ μκΈ° λλ¬Έμ IP μ£Όμκ° λΆμ‘±νμ§ μλ€λ νΉμ§μ΄ μλ€.
λλ©μΈ λ€μ(Domain Name)
IP μ£Όμλ 12μ리μ μ«μλ‘ λμ΄ μκΈ° λλ¬Έμ μ¬λμ΄ μΈμ°κΈ° νλ€λ€λ λ¨μ μ΄ μλ€.
κ·Έλ κΈ° λλ¬Έμ 12μ리μ IP μ£Όμλ₯Ό λ¬Έμλ‘ ννν μ£Όμλ₯Ό λλ©μΈ λ€μμ΄λΌκ³ νλ€.
λ€μ λ§ν΄μ, λλ©μΈ λ€μμ 'naver.com'μ²λΌ λͺ κ°μ μλ―Έμλ λ¬Έμλ€κ³Ό .μ μ‘°ν©μΌλ‘ ꡬμ±λλ€.
λλ©μΈ λ€μμ μ¬λμ νΈμμ±μ μν΄ λ§λ μ£Όμμ΄λ―λ‘ μ€μ λ‘λ μ»΄ν¨ν°κ° μ΄ν΄ν μ μλ IP μ£Όμλ‘ λ³ννλ μμ μ΄ νμνλ€.
μ΄λ, μ¬μ©ν μ μλλ‘ λ―Έλ¦¬ λλ©μΈ λ€μκ³Ό ν¨κ» ν΄λΉνλ IP μ£Όμκ°μ ν μμΌλ‘ μ μ₯νκ³ μλ λ°μ΄ν°λ² μ΄μ€λ₯Ό DNS(Domain Name System) μ΄λΌκ³ λΆλ₯Έλ€.
λλ©μΈ λ€μμΌλ‘ μ λ ₯νλ©΄ DNSλ₯Ό μ΄μ©ν΄ μ»΄ν¨ν°λ IP μ£Όμλ₯Ό λ°μ μ°Ύμκ° μ μλ€.
μλ λ°©μ
μ¬μ©μκ° λΈλΌμ°μ μ λλ©μΈ λ€μ([www.naver.com)μ](http://www.naver.γ―%29-8040a/) μ λ ₯νλ€.
μ¬μ©μκ° μ λ ₯ν URL μ£Όμ μ€μμ λλ©μΈ λ€μ(Domain Name) λΆλΆμ DNS μλ²μμ κ²μνκ³ , DNS μλ²μμ ν΄λΉ λλ©μΈ λ€μμ ν΄λΉνλ IP μ£Όμλ₯Ό μ°Ύμ μ¬μ©μκ° μ λ ₯ν URL μ 보μ ν¨κ» μ λ¬νλ€.
νμ΄μ§ URL μ 보μ μ λ¬λ°μ IP μ£Όμλ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ HTTP μμ² λ©μμ§λ₯Ό μμ±νκ³ , μ΄λ κ² μμ±λ HTTP μμ² λ©μμ§λ TCP νλ‘ν μ½μ μ¬μ©νμ¬ μΈν°λ·μ κ±°μ³ ν΄λΉ IP μ£Όμμ μ»΄ν¨ν°λ‘ μ μ‘λλ€.
μ΄λ κ² λμ°©ν HTTP μμ² λ©μμ§λ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ μΉ νμ΄μ§ URL μ λ³΄λ‘ λ³νλμ΄ μΉ νμ΄μ§ URL μ 보μ ν΄λΉνλ λ°μ΄ν°λ₯Ό κ²μνλ€.
κ²μλ μΉ νμ΄μ§ λ°μ΄ν°λ λ λ€μ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ HTTP μλ΅ λ©μμ§λ₯Ό μμ±νκ³ TCP νλ‘ν μ½μ μ¬μ©νμ¬ μΈν°λ·μ κ±°μ³ μλ μ»΄ν¨ν°λ‘ μ μ‘λλ€.
λμ°©ν HTTP μλ΅ λ©μμ§λ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ μΉ νμ΄μ§ λ°μ΄ν°λ‘ λ³νλμ΄ μΉ λΈλΌμ°μ μ μν΄ μΆλ ₯λμ΄ μ¬μ©μκ° λ³Ό μ μκ² λλ€.
μ΄λ κ² λ§νλ©΄ μ΄λ μ λ μ€λͺ ν μ μμ§λ§, λκ° λΆμ‘±νλ€. μ‘°κΈ λ μμ보μ.
DHCP & ARP
λλΆλΆμ κ°μ μ§μμλ DHCP
λ‘ μΈν°λ· μ μμ νκ³ μλ€. DHCPλ Dynamic Host Configuration Protocolμ μ½μλ‘, νΈμ€νΈμ IP μ£Όμ λ° TCP / IP μ€μ μ ν΄λΌμ΄μΈνΈμ μλμΌλ‘ μ 곡νλ νλ‘ν μ½μ΄λ€. μ¬μ©μμ PCλ DHCP μλ²μμ μ¬μ©μ μμ μ IP μ£Όμ, κ°μ₯ κ°κΉμ΄ λΌμ°ν°μ IP μ£Όμ, κ°μ₯ κ°κΉμ΄ DNS μλ²μ IP μ£Όμλ₯Ό λ°λλ€. μ΄ν, ARP νλ‘ν μ½μ μ΄μ©νμ¬ IP μ£Όμλ₯Ό κΈ°λ°μΌλ‘ κ°μ₯ κ°κΉμ΄ λΌμ°ν°μ MAC μ£Όμλ₯Ό μμλΈλ€.
DHCP μλ²μ λμ κ°λ λ - ν΄λΌμ΄μΈνΈκ° μΈν°λ· μ μμ μλνλ©΄ IPμ κΈ°λ³Έ μ 보λ₯Ό μ 곡ν΄μ€λ€.
IP μ 보 μμ
μμ κ³Όμ μ ν΅ν΄ μΈλΆμ ν΅μ ν μ€λΉλ₯Ό λ§μ³€μΌλ―λ‘, DNS Queryλ₯Ό DNS μλ²μ μ μ‘νλ€. DNS μλ²λ μ΄μ λν κ²°κ³Όλ‘ μΉ μλ²μ IP μ£Όμλ₯Ό μ¬μ©μ PCμ λλ €μ€λ€. DNS μλ²κ° λλ©μΈμ λν IP μ£Όμλ₯Ό μ‘μ νλ κ³Όμ μ μ½κ° 볡μ‘νλ€.
κ³Όμ (www.naver.com μ΄λΌκ³ κ°μ νμ.)
μ¬μ©μμ PCλ κ°μ₯ λ¨Όμ μ§μ λ DNS μλ²(μ°λ¦¬λλΌμ κ²½μ°, ν΅μ μ¬λ³λ‘ μ§μ λ DNS μλ²κ° μλ€.)μ DNS Queryλ₯Ό μ‘μ νλ€. κ·Έ ν μ§μ λ DNS μλ²λ Root λ€μμλ²μ www.naver.comμ μ§μνκ³ , Root λ€μμλ²λ .com λ€μμλ²μ ip μ£Όμλ₯Ό μλ €μ€λ€.
κ·Έ ν .com λ€μμλ²μ www.naver.comμ μ§μνλ©΄ naver.com λ€μμλ²μ ip μ£Όμλ₯Ό λ°κ³ κ·Έκ³³μ μ§μλ₯Ό λ μ‘μ νλ©΄ www.naver.comμ IP μ£Όμλ₯Ό μμ νκ² λλ€.
μ΄μ κ°μ΄ μ¬λ¬λ² μλ€κ°λ€ νλ μ΄μ λ, λλ©μΈμ κ³μΈ΅ν ꡬ쑰μ λ°λΌ DNS μλ²λ κ³μΈ΅ν λμ΄μκΈ° λλ¬Έμ΄λ€. μ΄λ κ² κ³μΈ΅νλμ΄ μμΌλ―λ‘ λλ©μΈμ κ°μ₯ μ΅μλ¨, μ¦ κ°μ₯ λ·μͺ½(.com, .kr λ±λ±)μ λ΄λΉνλ DNS μλ²λ μ μΈκ³μ 13κ° λΏμ΄λ€.
μΉ μλ² μ μ
μ΄μ μΉ μλ²μ IP μ£ΌμκΉμ§ μμλ€. Http Requestλ₯Ό μν€ TCP Socketμ κ°λ°©νκ³ μ°κ²°νλ€. μ΄ κ³Όμ μμ 3-way hand shaking κ³Όμ μ΄ μΌμ΄λλ€. TCP μ°κ²°μ μ±κ³΅νλ©΄, Http Requestκ° TCP Socketμ ν΅ν΄ 보λ΄μ§λ€. μ΄μ λν μλ΅μΌλ‘ μΉ νμ΄μ§μ μ λ³΄κ° μ¬μ©μμ PCλ‘ λ€μ΄μ¨λ€.
λ‘λ λ°Έλ°μ±
λ μ΄μμ CPU or μ μ₯ μ₯μΉμ κ°μ μ»΄ν¨ν° μμλ€μκ² μμ μ λλλ κ²
μμ¦ μλμλ μΉμ¬μ΄νΈμ μ μνλ μΈμμ΄ κΈκ²©νκ² λμ΄λκ² λμλ€.
λ°λΌμ μ΄ μ¬λλ€μ λν΄ λͺ¨λ νΈλν½μ κ°λΉνκΈ°μ 1λμ μλ²λ‘λ λΆμ‘±νλ€.
λμ λ°©μμΌλ‘ νλμ¨μ΄μ μ±λ₯μ μ¬λ¦¬κ±°λ(Scale-up) μ¬λ¬λμ μλ²κ° λλ μ μΌνλλ‘ λ§λλ κ²(Scale-out)μ΄ μλ€.
νλμ¨μ΄ ν₯μ λΉμ©μ΄ λμ± λΉμΈκΈ°λ νκ³ , μλ²κ° μ¬λ¬ λ μ‘΄μ¬νλ©΄ 무μ€λ¨ μλΉμ€λ₯Ό μ 곡νλ νκ²½ ꡬμ±μ΄ μ©μ΄νλ―λ‘ Scale-out
μ΄ ν¨κ³Όμ μ΄λ€.
μ΄λ, μ¬λ¬ μλ²μκ² κ· λ±νκ² νΈλν½μ λΆμ°μμΌμ£Όλ κ²μ΄ λ°λ‘ λ‘λ λ°Έλ°μ±μ΄λ€.
Scale-up : Serverκ° λ λΉ λ₯΄κ² λμνκΈ° μν΄ νλμ¨μ΄μ μ±λ₯μ μ¬λ¦¬λ λ°©λ².
Scale-out : νλμ Server보λ€λ μ¬λ¬ λμ Serverκ° λλ μ μΌμ νλ λ°©λ².
λ‘λ λ°Έλ°μκ° μλ²λ₯Ό μ ννλ λ°©μ
λΌμ΄λ λ‘λΉ : CPU μ€μΌμ€λ§μ λΌμ΄λ λ‘λΉ λ°©μ νμ©
Least Connections : μ°κ²° κ°―μκ° κ°μ₯ μ μ μλ² μ ν(νΈλν½μΌλ‘ μΈν΄ μΈμ μ΄ κΈΈμ΄μ§λ κ²½μ° κΆμ₯)
Source : μ¬μ©μ IPλ₯Ό ν΄μ±νμ¬ λΆλ°°(νΉμ μ¬μ©μκ° νμ κ°μ μλ²λ‘ μ°κ²°λλ κ²μ 보μ₯)
λ‘λ λ°Έλ°μ μ₯μ λλΉ
μλ²λ₯Ό λΆλ°°νλ λ‘λ λ°Έλ°μμ λ¬Έμ κ° μκΈΈ μ μκΈ° λλ¬Έμ λ‘λ λ°Έλ°μλ₯Ό μ΄μ€ννμ¬ λλΉνλ€.
Active μν
Passive μν
Stateful vs Stateless μλΉμ€μ HTTP λ° REST
reference
HTTP λμ κ³Όμ κ³Ό HTTP Method, μνμ½λ
HyperText Transfer Protocalμ μ½μλ‘μ¨ μΈν°λ· ν΅μ μ μν΄ μ¬μ©λλ νλ‘ν μ½μ΄λ€.
β¨ HTTP λμ
Clientκ° λΈλΌμ°μ λ₯Ό ν΅ν΄ URIμ ν΅ν΄ νΉμ μμ²(Request)μ 보λ΄λ©΄, Serverλ ν΄λΉ μμ²(Request)μ λ°μ μ²λ¦¬λ₯Ό νμ¬ Clientμκ² μλ΅(Response)μ νλ νν
β¨ HTTP νΉμ§
TCP/IPμ μ΄μ©ν μμ© νλ‘ν μ½μ΄λ€.
μ°κ²° μνλ₯Ό μ μ§νμ§ μλ λΉμ°κ²°μ± νλ‘ν μ½μ΄λ€.
μμ²κ³Ό μλ΅ λ°©μμΌλ‘ λμνλ€.
μλ²μ ν΄λΌμ΄μΈνΈμ μν΄ HTTP λ©μΈμ§κ° ν΄μλλ€.
β¨ HTTP Method
β¨ HTTP Status Code
μ 보μ μ‘ μμμλ΅ (1xx)
μ±κ³΅ (2xx)
리λ€μ΄λ μ
(3xx)
ν΄λΌμ΄μΈνΈ μμ² μ€λ₯ (4xx)
μλ²μλ¬ (5xx)
Blocking, Non-blocking & Synchronous, Asynchronous
homoefficioλ λΈλ‘κ·Έμ λμ¨ 2λ2 맀νΈλ¦μ€λ‘ μ μ 리λ μ¬μ§μ΄λ€. μ΄ μ¬μ§λ§ λ³΄κ³ λͺ¨λ μ΄ν΄κ° λλ€λ©΄, μ°¨μ΄μ μ λν΄ μ μκ³ μλ κ²μ΄λ€.
β¨ Blocking/Non-blocking
λΈλ/λ
ΌλΈλμ κ°λ¨ν λ§ν΄μ νΈμΆλ ν¨μ
κ° νΈμΆν ν¨μ
μκ² μ μ΄κΆμ 건λ€μ£Όλ μ 무μ μ°¨μ΄λΌκ³ λ³Ό μ μλ€.
ν¨μ A, Bκ° μκ³ , A μμμ Bλ₯Ό νΈμΆνλ€κ³ κ°μ ν΄λ³΄μ. μ΄λ νΈμΆν ν¨μλ Aκ³ , νΈμΆλ ν¨μλ Bκ° λλ€. νμ¬ Bκ° νΈμΆλλ©΄μ Bλ μμ μ μΌμ μ§νν΄μΌ νλ€. (μ μ΄κΆμ΄ Bμκ² μ£Όμ΄μ§ μν©)
Blocking : ν¨μ Bλ λ΄ ν μΌμ λ€ λ§μΉ λκΉμ§ μ μ΄κΆμ κ°μ§κ³ μλλ€. Aλ Bκ° λ€ λ§μΉ λκΉμ§ κΈ°λ€λ €μΌ νλ€.
Non-blocking : ν¨μ Bλ ν μΌμ λ§μΉμ§ μμμ΄λ Aμκ² μ μ΄κΆμ λ°λ‘ λ겨μ€λ€. Aλ Bλ₯Ό κΈ°λ€λ¦¬λ©΄μλ λ€λ₯Έ μΌμ μ§νν μ μλ€.
μ¦, νΈμΆλ ν¨μμμ μΌμ μμν λ λ°λ‘ μ μ΄κΆμ 리ν΄ν΄μ£Όλλ, ν μΌμ λ§μΉκ³ 리ν΄ν΄μ£Όλλμ λ°λΌ λΈλκ³Ό λ ΌλΈλμΌλ‘ λλμ΄μ§λ€κ³ λ³Ό μ μλ€.
β¨ Synchronous/Asynchronous
λκΈ°/λΉλκΈ°λ μΌμ μν μ€μΈ λμμ±
μ μ£Όλͺ©νμ
μκΉμ²λΌ ν¨μ Aμ BλΌκ³ λκ°μ΄ μκ°νμ λ, Bμ μν κ²°κ³Όλ μ’ λ£ μνλ₯Ό Aκ° μ κ²½μ°κ³ μλ μ 무μ μ°¨μ΄λΌκ³ μκ°νλ©΄ λλ€.
Synchronous : ν¨μ Aλ ν¨μ Bκ° μΌμ νλ μ€μ κΈ°λ€λ¦¬λ©΄μ, νμ¬ μνκ° μ΄λ€μ§ κ³μ 체ν¬νλ€.
Asynchronous : ν¨μ Bμ μν μνλ₯Ό B νΌμ μ§μ μ κ²½μ°λ©΄μ μ²λ¦¬νλ€. (Callback)
μ¦, νΈμΆλ ν¨μ(B)λ₯Ό νΈμΆν ν¨μ(A)κ° μ κ²½μ°λμ§, νΈμΆλ ν¨μ(B) μ€μ€λ‘ μ κ²½μ°λμ§λ₯Ό λκΈ°/λΉλκΈ°λΌκ³ μκ°νλ©΄ λλ€.
λΉλκΈ°λ νΈμΆμ Callbackμ μ λ¬νμ¬ μμ μ μλ£ μ¬λΆλ₯Ό νΈμΆν ν¨μμκ² λ΅νκ² λλ€. (Callbackμ΄ μ€κΈ° μ κΉμ§ νΈμΆν ν¨μλ μ κ²½μ°μ§ μκ³ λ€λ₯Έ μΌμ ν μ μμ)
μ κ·Έλ¦Όμ²λΌ μ΄ 4κ°μ§μ κ²½μ°κ° λμ¬ μ μλ€. μ΄κ±Έ μ’ λ μ΄ν΄νκΈ° μ½κ² Case λ³λ‘ μμλ₯Ό ν΅ν΄ 보면μ μ΄ν΄νκ³ λμ΄κ°λ³΄μ
μν© : μΉν¨μ§μ μ§μ μΉν¨μ μ¬λ¬κ°
1) Blocking & Synchronous
λ : μ¬μ₯λ μΉν¨ νλ§λ¦¬λ§ ν¬μ₯ν΄μ£ΌμΈμ μ¬μ₯λ : λ€ κΈλ°©λλκΉ μ μλ§μ! λ : λΉ -- μ¬μ₯λ μΉν¨ νκΈ°λ μ€-- λ : (μ μΈμ λμ§?..κΆκΈνλ° κ·Έλ₯ λ©λ±ν μμ μΉν¨ νκΈ°λκ±° 보면μ κΈ°λ€λ¦Ό)
2) Blocking & Asynchronous
λ : μ¬μ₯λ μΉν¨ νλ§λ¦¬λ§ ν¬μ₯ν΄μ£ΌμΈμ μ¬μ₯λ : λ€ κΈλ°©λλκΉ μ μλ§μ! λ : μ λΉ -- μ¬μ₯λ μΉν¨ νκΈ°λ μ€-- λ : (μΈμ λλμ§ μ κΆκΈν¨, μ μλ§μ΄λμ λ€ λ λκΉμ§ μμ λΆμ‘ν μν©)
3) Non-blocking & Synchronous
λ : μ¬μ₯λ μΉν¨ νλ§λ¦¬λ§ ν¬μ₯ν΄μ£ΌμΈμ μ¬μ₯λ : λ€~ μ£Όλ¬Έ λ°λ €μ μκ° μ’ κ±Έλ¦¬λκΉ λ³ΌμΌ λ³΄μλ€ μ€μΈμ λ : λΉ -- μ¬μ₯λ μΉν¨ νκΈ°λ μ€-- (5λΆλ€) λ : μ κΊΌ λμλμ? μ¬μ₯λ : μμ§μ΄μ (10λΆλ€) λ : μ κΊΌ λμλμ? μ¬μ₯λ : μμ§μ΄μγ
(15λΆλ€) λ : μ κΊΌ λμλμ? μ¬μ₯λ : μμ§μ΄μγ
γ
4) Non-blocking & Asynchronous
λ : μ¬μ₯λ μΉν¨ νλ§λ¦¬λ§ ν¬μ₯ν΄μ£ΌμΈμ μ¬μ₯λ : λ€~ μ£Όλ¬Έ λ°λ €μ μκ° μ’ κ±Έλ¦¬λκΉ λ³ΌμΌ λ³΄μλ€ μ€μΈμ λ : λΉ -- μ¬μ₯λ μΉν¨ νκΈ°λ μ€-- λ : (μμμ λ€λ₯Έ μΌ νλ μ€) ... μ¬μ₯λ : μΉν¨ λμμ΅λλ€ λ : μλ¨Ήκ² μ΅λλ€~
Blocking & Non-Blocking I/O
I/O μμ μ Kernel levelμμλ§ μνν μ μλ€. λ°λΌμ, Process, Threadλ 컀λμκ² I/Oλ₯Ό μμ²ν΄μΌ νλ€.
Blocking I/O
I/O Blocking ννμ μμ μ
(1) Process(Thread)κ° Kernelμκ² I/Oλ₯Ό μμ²νλ ν¨μλ₯Ό νΈμΆ
(2) Kernelμ΄ μμ μ μλ£νλ©΄ μμ κ²°κ³Όλ₯Ό λ°ν λ°μ.
νΉμ§
I/O μμ μ΄ μ§νλλ λμ user Process(Thread) λ μμ μ μμ μ μ€λ¨ν μ± λκΈ°
Resource λλΉκ° μ¬ν¨(I/O μμ μ΄ CPU μμμ κ±°μ μ°μ§ μμΌλ―λ‘)
μ¬λ¬ Client κ° μ μνλ μλ²λ₯Ό Blocking λ°©μμΌλ‘ ꡬννλ κ²½μ°
-> I/O μμ μ μ§ννλ μμ μ μ€μ§ -> λ€λ₯Έ Clientκ° μ§νμ€μΈ μμ μ μ€μ§νλ©΄ μλλ―λ‘, client λ³λ‘ λ³λμ Threadλ₯Ό μμ±ν΄μΌ ν¨ -> μ μμ μκ° λ§€μ° λ§μμ§μ΄λ‘ μΈν΄, λ§μμ§ Threads λ‘ μ»¨ν μ€νΈ μ€μμΉ νμκ° μ¦κ°ν¨,,, λΉν¨μ¨μ μΈ λμ λ°©μ
Non-Blocking I/O
I/O μμ μ΄ μ§νλλ λμ User Processμ μμ μ μ€λ¨νμ§ μμ.
μ§ν μμ
User Processκ° recvfrom ν¨μ νΈμΆ (컀λμκ² ν΄λΉ SocketμΌλ‘λΆν° dataλ₯Ό λ°κ³ μΆλ€κ³ μμ²ν¨)
Kernelμ μ΄ μμ²μ λν΄μ, 곧λ°λ‘ recvBufferλ₯Ό μ±μμ 보λ΄μ§ λͺ»νλ―λ‘, "EWOULDBLOCK"μ returnν¨.
Blocking λ°©μκ³Ό λ¬λ¦¬, User Processλ λ€λ₯Έ μμ μ μ§νν μ μμ.
recvBufferμ userκ° λ°μ μ μλ λ°μ΄ν°κ° μλ κ²½μ°, Bufferλ‘λΆν° λ°μ΄ν°λ₯Ό 볡μ¬νμ¬ λ°μμ΄.
μ΄λ, recvBufferλ Kernelμ΄ κ°μ§κ³ μλ λ©λͺ¨λ¦¬μ μ μ¬λμ΄ μμΌλ―λ‘, Memoryκ° λ³΅μ¬λ‘ μΈν΄, I/Oλ³΄λ€ ν¨μ¬ λΉ λ₯Έ μλλ‘ dataλ₯Ό λ°μμ¬ μ μμ.
recvfrom ν¨μλ λΉ λ₯Έ μλλ‘ dataλ₯Ό 볡μ¬ν ν, 볡μ¬ν dataμ κΈΈμ΄μ ν¨κ» λ°νν¨.
DNS round robin
β¨ DNS Round Robin λ°©μμ λ¬Έμ μ
μλ²μ μ λ§νΌ κ³΅μΈ IP μ£Όμκ° νμν¨ λΆν λΆμ°μ μν΄ μλ²μ λμλ₯Ό λ리기 μν΄μλ κ·Έ λ§νΌμ κ³΅μΈ IP κ° νμνλ€.
κ· λ±νκ² λΆμ°λμ§ μμ λͺ¨λ°μΌ μ¬μ΄νΈ λ±μμ λ¬Έμ κ° λ μ μλλ°, μ€λ§νΈν°μ μ μμ μΊλ¦¬μ΄ κ²μ΄νΈμ¨μ΄ λΌκ³ νλ νλ‘μ μλ²λ₯Ό κ²½μ νλ€. νλ‘μ μλ²μμλ μ΄λ¦λ³ν κ²°κ³Όκ° μΌμ μκ° λμ μΊμ±λλ―λ‘ κ°μ νλ‘μ μλ²λ₯Ό κ²½μ νλ μ μμ νμ κ°μ μλ²λ‘ μ μλλ€. λν PC μ© μΉ λΈλΌμ°μ λ DNS μ§μ κ²°κ³Όλ₯Ό μΊμ±νκΈ° λλ¬Έμ κ· λ±νκ² λΆνλΆμ° λμ§ μλλ€. DNS λ μ½λμ TTL κ°μ μ§§κ² μ€μ ν¨μΌλ‘μ¨ μ΄λ μ λ ν΄μκ° λμ§λ§, TTL μ λ°λΌ μΊμλ₯Ό ν΄μ νλ κ²μ μλλ―λ‘ λ°λμ μ£Όμκ° νμνλ€.
μλ²κ° λ€μ΄λλ νμΈ λΆκ° DNS μλ²λ μΉ μλ²μ λΆνλ μ μ μ λ±μ μν©μ λ°λΌ μ§μκ²°κ³Όλ₯Ό μ μ΄ν μ μλ€. μΉ μλ²μ λΆνκ° λμμ μλ΅μ΄ λλ €μ§κ±°λ μ μμκ° κ½ μ°¨μ μ μμ μ²λ¦¬ν μ μλ μν©μΈ μ§λ₯Ό μ ν κ°μ§ν μκ° μκΈ° λλ¬Έμ μ΄λ€ μμΈμΌλ‘ λ€μ΄λλλΌλ μ΄λ₯Ό κ²μΆνμ§ λͺ»νκ³ μ μ λ€μκ² μ 곡νλ€. μ΄λλ¬Έμ μ μ λ€μ κ°νΉ λ€μ΄λ μλ²λ‘ μ°κ²°μ΄ λκΈ°λ νλ€. DNS λΌμ΄λ λ‘λΉμ μ΄λκΉμ§λ λΆνλΆμ° μ μν λ°©λ²μ΄μ§ λ€μ€ν λ°©λ²μ μλλ―λ‘ λ€λ₯Έ S/W μ μ‘°ν©ν΄μ κ΄λ¦¬ν νμκ° μλ€.
Round Robin λ°©μμ κΈ°λ°μΌλ‘ λ¨μ μ ν΄μνλ DNS μ€μΌμ€λ§ μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νλ€. (μΌλΆλ§ μκ°)
Weighted round robin (WRR)
κ°κ°μ μΉ μλ²μ κ°μ€μΉλ₯Ό κ°λ―Έν΄μ λΆμ° λΉμ¨μ λ³κ²½νλ€. λ¬Όλ‘ κ°μ€μΉκ° ν° μλ²μΌμλ‘ λΉλ²νκ² μ νλλ―λ‘ μ²λ¦¬λ₯λ ₯μ΄ λμ μλ²λ κ°μ€μΉλ₯Ό λκ² μ€μ νλ κ²μ΄ μ’λ€.
Least connection
μ μ ν΄λΌμ΄μΈνΈ μκ° κ°μ₯ μ μ μλ²λ₯Ό μ ννλ€. λ‘λλ°Έλ°μμμ μ€μκ°μΌλ‘ connection μλ₯Ό κ΄λ¦¬νκ±°λ κ° μλ²μμ μ£ΌκΈ°μ μΌλ‘ μλ €μ£Όλ κ²μ΄ νμνλ€.
Connection Management
Last updated