3-way handshake & 4-way handshake
π¬ Intro
3-way handshake & 4-way handshakeμ λν΄ μμλ΄ μλ€.
β 3-way handshake
3-Way Handshakeλ ν΄λΌμ΄μΈνΈκ° μλ²μ μ°κ²°μ μ€μ νκΈ° μν΄ μ¬μ©νλ κ³Όμ μ λλ€. μ΄ κ³Όμ μ μ°κ²°μ μμ μ μΌλ‘ μ€μ νκ³ , λ°μ΄ν° μ μ‘μ μμνκΈ° μ μ ν΅μ κ²½λ‘λ₯Ό νμΈνλ λ¨κ³μ λλ€.
- SYN (Synchronization): μ°κ²° μμ²μ λνλ΄λ©°, ν΄λΌμ΄μΈνΈκ° μλ²μ μΈμ μ μ€μ νκΈ° μν΄ μ΄κΈ° μνμ€ λ²νΈλ₯Ό μ μ‘ν©λλ€.
- ACK (Acknowledgement): μλ²κ° ν΄λΌμ΄μΈνΈμ μνμ€ λ²νΈμ 1μ λν ACKλ₯Ό λ°ννμ¬ μμ²μ νμΈν©λλ€.
Step 1: ν΄λΌμ΄μΈνΈκ° μλ²λ‘ SYN μ μ‘
- ν΄λΌμ΄μΈνΈλ μλ²μμ μ°κ²°μ μ€μ νκΈ° μν΄ SYN ν¨ν·μ μ μ‘ν©λλ€. μ΄ ν¨ν·μλ ν΄λΌμ΄μΈνΈ μΈ‘μ μ΄κΈ° μνμ€ λ²νΈκ° ν¬ν¨λ©λλ€.
- μ΄κΈ° μνμ€ λ²νΈ(ISN) λμλ‘ μ§μ λ©λλ€.
컀λ₯μ μ λ§Ίμ λ μ¬μ©νλ ν¬νΈλ μ νν λ²μ λ΄μμ μ¬μ©λλ©°, μκ°μ΄ μ§λλ©΄ μ¬μ¬μ©λ μ μμ΅λλ€. λ°λΌμ λ ν΅μ νΈμ€νΈκ° κ³Όκ±°μ μ¬μ©λ ν¬νΈ λ²νΈ μμ λ€μ μ¬μ©ν κ°λ₯μ±μ΄ μ‘΄μ¬ν©λλ€. μλ² μΈ‘μμλ μΈκ·Έλ¨ΌνΈμ SYNμ λ³΄κ³ μΈκ·Έλ¨ΌνΈλ₯Ό ꡬλΆνλλ°, λ§μ½ μνμ€ λ²νΈκ° λμκ° μλ μμ°¨μ μΈ λ²νΈλ‘ μ μ‘λλ€λ©΄, μ΄μ μ 컀λ₯μ μμ μ¨ μΈκ·Έλ¨ΌνΈλ‘ μλͺ» μΈμλ μ μμ΅λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό λ°©μ§νκΈ° μν΄ μ΄κΈ° μνμ€ λ²νΈ(ISN)λ λμλ‘ μ€μ λ©λλ€.
μλ₯Ό λ€μ΄, μ΄μ μ°κ²°μμ μ¬μ©λ ISNμ΄ 100μ΄κ³ , νμ¬ μ°κ²°μμ μ¬μ©λ ISNμ΄ 200μ΄λΌκ³ κ°μ νλ©΄, μ΄μ μ°κ²°μ λ°μ΄ν° μΈκ·Έλ¨ΌνΈλ μνμ€ λ²νΈ 100λΆν° μμν κ²μ λλ€. λ°λ©΄μ, μλ‘μ΄ μ°κ²°μμλ ISNμ΄ 200λΆν° μμνλ―λ‘, μλ‘ λ€λ₯Έ μνμ€ λ²νΈλ‘ μΈν΄ μ΄μ μ°κ²°μ λ°μ΄ν°κ° νμ¬ μ°κ²°λ‘ μλͺ» μ λ¬λλ μν©μ λ°©μ§ν μ μμ΅λλ€.
Step 2: μλ²κ° SYN + ACK μ μ‘
- μλ²λ ν΄λΌμ΄μΈνΈλ‘λΆν° SYN ν¨ν·μ μμ ν ν, μμ²μ μλ½νμμ λνλ΄λ ACK ν¨ν·κ³Ό μλ² μΈ‘μ μνμ€ λ²νΈλ₯Ό λ΄μ SYN ν¨ν·μ λμμ 보λ λλ€.
- μλ²λ ν΄λΌμ΄μΈνΈμ λ§μ°¬κ°μ§λ‘ λμλ₯Ό μνμ€ λ²νΈλ‘ μ€μ ν©λλ€.
- μλ²κ° ν΄λΌμ΄μΈνΈμκ² λ³΄λ΄λ ACKλ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ μνμ€ λ²νΈμ +1μ ν κ°μ λ°νν©λλ€.
Step 3: ν΄λΌμ΄μΈνΈκ° ACK μ μ‘
- ν΄λΌμ΄μΈνΈλ μλ²λ‘λΆν° SYNκ³Ό ACK ν¨ν·μ λ°μΌλ©΄, μλ²μ μνμ€ λ²νΈμ +1μ ν ACK ν¨ν·μ μλ²λ‘ μ μ‘ν©λλ€.
- μ΄ μμ μμ ν λνλ μ€(Full-Duplex) ν΅μ μ΄ κ΅¬μΆλλ©°, μλ°©ν₯ λ°μ΄ν° μ μ‘μ΄ κ°λ₯ν©λλ€.
- Full - duplex ν΅μ μ ꡬμ±
- step 1,2 μμλ ν΄λΌμ΄μΈνΈ β μλ² λ°©ν₯μ λν μ°κ²° νλΌλ―Έν°λ₯Ό μ€μ νκ³ μ΄λ₯Ό μλ²κ° μΉμΈ
- step 2,3 μμλ μλ² β ν΄λΌμ΄μΈνΈ λ°©ν₯μ λν μ°κ²° νλΌλ―Έν°λ₯Ό μ€μ νκ³ μ΄λ₯Ό ν΄λΌμ΄μΈνΈκ° μΉμΈ
- μ΄λ₯Ό ν΅ν΄ full-duplex ν΅μ μ΄ κ΅¬μΆ
β 4-way handshake
4-Way Handshakeλ TCP μ°κ²° μ’ λ£ κ³Όμ μ λνλ λλ€. μ°κ²°μ μ’ λ£ν λλ FIN νλκ·Έκ° μ¬μ©λλ©°, ν΄λΌμ΄μΈνΈμ μλ²κ° λͺ¨λ λ°μ΄ν°λ₯Ό μ μ‘ μλ£νμμ νμΈνλ κ³Όμ μ κ±°μΉ©λλ€.
- FIN (Finish): λ μ΄μ μ μ‘ν λ°μ΄ν°κ° μμμ λνλ΄λ©°, μ°κ²°μ μ’ λ£νκΈ° μν μμ²μ λλ€.
Step 1: ν΄λΌμ΄μΈνΈ β μλ²λ‘ FIN μ μ‘
- ν΄λΌμ΄μΈνΈκ° μ°κ²°μ μ’ λ£νλ €κ³ ν λ FIN ν¨ν·μ μ μ‘ν©λλ€. μ΄ ν¨ν·μ ν΄λΌμ΄μΈνΈκ° λ μ΄μ λ³΄λΌ λ°μ΄ν°κ° μμμ λνλ λλ€.
Step 2: μλ²κ° ACK μ μ‘
- μλ²λ FIN ν¨ν·μ μμ νκ³ , μ΄μ λν ACK ν¨ν·μ ν΄λΌμ΄μΈνΈμκ² μ μ‘ν©λλ€. ACKλ ν΄λΌμ΄μΈνΈκ° λ³΄λΈ μνμ€ λ²νΈμ +1μ λν΄ λ°νν©λλ€.
- μλ²λ μμ§ μ μ‘ν λ°μ΄ν°κ° λ¨μ μμ μ μμΌλ―λ‘, ν΄λΌμ΄μΈνΈκ° FINμ λ³΄λΈ νμλ μ°κ²°μ μ μ§ν©λλ€.
Step 3: μλ²κ° FIN μ μ‘
- μλ²λ λͺ¨λ λ°μ΄ν°λ₯Ό μ μ‘ν ν, FIN ν¨ν·μ ν΄λΌμ΄μΈνΈλ‘ μ μ‘ν©λλ€. μ΄λ μλ² μΈ‘μμ λ μ΄μ λ³΄λΌ λ°μ΄ν°κ° μμμ λνλ λλ€.
Step 4: ν΄λΌμ΄μΈνΈκ° ACK μ μ‘
- ν΄λΌμ΄μΈνΈλ μλ²μ FIN ν¨ν·μ μμ ν ν ACK ν¨ν·μ μ μ‘ν©λλ€. μ΄λ‘μ¨ μμͺ½ λͺ¨λ μ°κ²° μ’ λ£λ₯Ό νμΈνλ©°, TIME_WAIT μνμ μ§μ νμ¬ μ μ λκΈ°ν ν μ°κ²°μ΄ μμ ν μ’ λ£λ©λλ€.
βTCP κ΄λ ¨ μ§λ¬Έ
Q1: TCP μ°κ²° μ€μ (3λ¨κ³)κ³Ό μ°κ²° μ’ λ£(4λ¨κ³) κ³Όμ μ΄ λ¨κ³κ° λ€λ₯Έ μ΄μ ?
λ΅λ³: ν΄λΌμ΄μΈνΈκ° λ°μ΄ν° μ μ‘μ μ’ λ£νλλΌλ μλ²λ μμ§ λ³΄λΌ λ°μ΄ν°κ° λ¨μ μμ μ μμ΅λλ€. λ°λΌμ ν΄λΌμ΄μΈνΈκ° FIN ν¨ν·μ 보λ΄λ©΄ μλ²λ ACK ν¨ν·μΌλ‘ μλ΅ν ν, λ°μ΄ν°λ₯Ό λͺ¨λ μ μ‘ν λ€μμμΌ FIN ν¨ν·μ 보λ΄κ² λ©λλ€. μ΄ λλ¬Έμ μ°κ²° μ’ λ£ κ³Όμ μ 4λ¨κ³λ‘ μ΄λ£¨μ΄μ§λλ€.
Q2: μλ²μμ FIN ν¨ν·λ³΄λ€ λ¦κ² λμ°©νλ ν¨ν·μ΄ μμ κ²½μ°?
λ΅λ³: μ΄λ¬ν μν©μ λλΉν΄ ν΄λΌμ΄μΈνΈλ μλ²λ‘λΆν° FIN ν¨ν·μ μμ νλλΌλ TIME_WAIT μνμ λ€μ΄κ°λλ€. μ΄ κΈ°κ° λμ μμ¬ ν¨ν·μ κΈ°λ€λ¦¬λ©°, κΈ°λ³Έμ μΌλ‘ 240μ΄ λμ μΈμ μ μ μ§νκ³ ν¨ν·μ μμ ν μ€λΉλ₯Ό ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ§μ°λ ν¨ν·μ΄ μ°κ²°μ΄ μ’ λ£λ μ΄νμλ μμ νκ² μ²λ¦¬λ μ μλλ‘ ν©λλ€.
Q3: μ΄κΈ° μνμ€ λ²νΈ(ISN)λ₯Ό λμλ‘ μμ±νλ μ΄μ ?
λ΅λ³: ν¬νΈ λ²νΈλ μ νν λ²μλ₯Ό κ°μ§λ©°, μκ°μ΄ μ§λλ©΄ μ¬μ¬μ©λ μ μμ΅λλ€. λ°λΌμ μ΄μ μ°κ²°μμ μ¬μ©λ ν¬νΈ λ²νΈμ μνμ€ λ²νΈκ° μλ‘μ΄ μ°κ²°κ³Ό μ€λ³΅λ κ°λ₯μ±μ΄ μμ΅λλ€. μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μ΄κΈ° μνμ€ λ²νΈ(ISN)λ₯Ό λμλ‘ μ€μ νμ¬ μ€λ³΅λ λ°μ΄ν° ν¨ν·μ΄ μλͺ»λ μ°κ²°λ‘ μΈμλλ κ²μ λ°©μ§ν©λλ€.
β¨ Summary
TCPμ 3-Way Handshakeλ μμ μ μΈ μ°κ²°μ μ€μ νκΈ° μν κ³Όμ μ΄λ©°, 4-Way Handshakeλ μμ νκ² μ°κ²°μ μ’ λ£νκΈ° μν κ³Όμ μ λλ€. κ°κ°μ λ¨κ³μμ μνμ€ λ²νΈμ ACK λ²νΈλ₯Ό νμ©νμ¬ λ°μ΄ν° μ μ‘μ μ λ’°μ±μ 보μ₯νλ©°, μ΄λ₯Ό ν΅ν΄ TCPλ μ λ’°μ± μλ ν΅μ μ μ 곡ν©λλ€.