TCP(μ μ‘ μ μ΄ νλ‘ν μ½) : μΈν°λ·μ ν΅ν΄ λ°μ΄ν°λ₯Ό μ μ‘νκΈ° μν΄ λ리 μ¬μ©λλ νλ‘ν μ½μ λλ€.
μ΄λ μ λ’°ν μ μλ μ°κ²° μ§ν₯ νλ‘ν μ½λ‘, λ°μ΄ν°λ₯Ό μ μ‘νκΈ° μ μ λ μ₯μΉ κ°μ μ°κ²°μ΄ μ€μ λμ΄μΌ ν©λλ€.
μ°κ²° μ€μ νλ‘μΈμ€μλHandShake
λΌκ³ νλ μΌλ ¨μ λ¨κ³κ° ν¬ν¨λ©λλ€.
λ μ₯μΉ κ°μ μ°κ²°μ μ€μ νλ 3λ¨κ³ νλ‘μΈμ€ μ λλ€.
-
SYN : 첫 λ²μ§Έ λ¨κ³λ
SYN(λκΈ°ν) ν¨ν·
μ λλ€. ν΄λΌμ΄μΈνΈλ μλ²μ SYN ν¨ν·μ λ³΄λ΄ μ°κ²°μ μμνλ €κ³ ν¨μ λνλ λλ€. ν¨ν·μλ μ°κ²°μ μλ³νλ λ° μ¬μ©λλ μμμ μνμ€ λ²νΈκ° ν¬ν¨λμ΄ μμ΅λλ€. -
SYN-ACK : λ λ²μ§Έ λ¨κ³λ
SYN-ACK(synchronize-acknowledge) ν¨ν·
μ λλ€. μλ²κ° SYN ν¨ν·μ μμ νλ©΄ SYN-ACK ν¨ν·μ λ€μ ν΄λΌμ΄μΈνΈλ‘ 보λ λλ€. ν¨ν·μλ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ κ²κ³Ό λμΌν μνμ€ λ²νΈμ μ체 μμ μνμ€ λ²νΈκ° ν¬ν¨λ©λλ€. -
ACK : μΈ λ²μ§Έ λ¨κ³λ
ACK(μΉμΈ) ν¨ν·
μ λλ€. ν΄λΌμ΄μΈνΈκ° SYN-ACK ν¨ν·μ μμ νλ©΄ ACK ν¨ν·μ λ€μ μλ²λ‘ 보λ λλ€. μ΄ ν¨ν·μλ SYN-ACK ν¨ν·μ μνμ€ λ²νΈμ 1μ λν κ°μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
3 way handshakeλ λ λμ μ»΄ν¨ν°κ° μΌλ ¨μ λ©μμ§λ₯Ό κ΅ννμ¬ μλ‘ μ°κ²°μ μ€μ νλ νλ‘μΈμ€μ
λλ€.
λ§μΉ λ μ¬λμ΄ μ νλ‘
C - "μ¬λ³΄μΈμ? λ΄ λ§ λ€λ €μ?"
S - "λ€, λ€λ €μ."
C - "μ’μμ. μ΄μΌκΈ°λ₯Ό μμν΄ λ³ΌκΉμ?"
λΌκ³ λ§νλ κ²κ³Ό κ°μ΅λλ€.
μ°κ²°μ μ’ λ£νλλ° μ¬μ©λλ 4λ¨κ³ νλ‘μΈμ€μ λλ€.
-
FIN : 첫 λ²μ§Έ λ¨κ³λ
FIN(μ’ λ£) ν¨ν·
μ λλ€. μ°κ²°μ μ’ λ£νλ €κ³ ν λ ν΄λΌμ΄μΈνΈμμ FIN ν¨ν·μ μλ²λ‘ 보λ λλ€. -
ACK : λ λ²μ§Έ λ¨κ³λ
ACK ν¨ν·
μ λλ€. μλ²κ° FIN ν¨ν·μ μμ νλ©΄ ACK ν¨ν·μ λ€μ ν΄λΌμ΄μΈνΈλ‘ 보λ λλ€. (μ΄λ λͺ¨λ λ°μ΄ν°λ₯Ό 보λ΄κΈ° μν΄ CLOSE_WAIT μνκ° λ©λλ€.) -
FIN : κ·Έλ° λ€μ μλ²λ μμ μ
FIN ν¨ν·
μ ν΄λΌμ΄μΈνΈλ‘ λ³΄λ΄ μ°κ²°μ μ’ λ£ν κ²μμ λνλ λλ€. -
ACK : λ§μ§λ§μΌλ‘ ν΄λΌμ΄μΈνΈλ FIN ν¨ν·μ μμ νκ³ νμΈνλ€λ
ACK ν¨ν·
μ μλ²λ‘ λ€μ μ μ‘ν©λλ€. (μμ§ μλ²λ‘λΆν° λ°μ§ λͺ»ν λ°μ΄ν°κ° μμ μ μμΌλ―λ‘ TIME_WAITμ ν΅ν΄ κΈ°λ€λ¦½λλ€.)- μλ²λ ACKλ₯Ό λ°μ μ΄ν μμΌμ λ«μ΅λλ€ (Closed)
- IME_WAIT μκ°μ΄ λλλ©΄ ν΄λΌμ΄μΈνΈλ λ«μ΅λλ€ (Closed)
μ΄λ κ² 4λ²μ ν΅μ μ΄ μλ£λλ©΄ μ°κ²°μ΄ ν΄μ λ©λλ€.
4 way handshakeλ λ λμ μ»΄ν¨ν°κ° μΌλ ¨μ λ©μμ§λ₯Ό κ΅ννμ¬ μλ‘ μ°κ²°μ μ’
λ£νλ κ³Όμ μ
λλ€.
λ§μΉ λ μ¬λμ΄ μ νλ‘
C - "μ’μ, μκΈ° λ€ νμ΄."
S - "μμμ΄, λ€μμ΄"
S - "μ¬μ€ λλ λλ¬μ΄"
C - "μμμ΄, μλ
!"
λΌκ³ λ§νλ κ²κ³Ό κ°μ΅λλ€.