π Intro
TCP/IP νλ‘ν μ½κ³Ό, OSI 7 κ³μΈ΅μ 4κ³μΈ΅μ Transport Layer (μ μ‘ κ³μΈ΅) μ λ°μ΄ν°λ₯Ό λ°μμΌ ν μλλ₯Ό μ νν μ°Ύμμ£Όλ μν μ νλ©°, μ€μ λ‘ μ λλ¬νλμ§ νμΈνλ€. μ¦, μ ν리μΌμ΄μ νλ‘μΈμ€λ₯Ό μ νν μ°Ύμκ°κ³ λ°μ΄ν° ν¨ν·μ μ μͺΌκ° 보λ΄κ³ 쑰립νλ μν μ΄λ€. μ΄μ TCP/IP κ΄λ ¨ κΈμμ μ΄λ―Έ μ΄λ₯Ό κ°λ΅ν μκ°ν λ° μλλ°, μ¬μ€ 4κ³μΈ΅μμ μλνλ κ²μ TCP νλ‘ν μ½λ§μ΄ μλλ€. TCP λλ UDP κ° κ°κ° νΉμ ν¨κ» μ¬μ©λλλ°, κ° κ°λ μ λν΄ κ΅¬μ²΄μ μΌλ‘ μμλ³΄κ³ μ νλ€.
β¨ TCP (Transmission Control Protocol)
TCP νλ‘ν μ½μ μ μ‘νκ±°λ μ λ¬λ°λ λ°μ΄ν°μ μ νμ±, λλ μκ²°μ±μ΄ μ€μν λ μ¬μ©λλ€. TCP κ° λ³΄μ₯νλ λͺ κ°μ§ νΉμ§μ΄ μλλ°, κ·Έ μ€ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ§λ€ μλ΅ μ νΈλ₯Ό λ³΄λ΄ μμ μ±μ μΆκ΅¬νλ€λ μ₯μ μ΄ μκΈ° λλ¬Έμ΄λ€. κ·Έλ λ€λ©΄ TCP λ μ΄λ€ λ°©μμΌλ‘ μμ μ±μ λ¬μ±νκ² λλκ°?
λ€νΈμν¬ κ° κ³μΈ΅μμλ λ°μ΄ν°μ, μΆλ°μ§μ λμ°©μ§μ λν μ 보λ₯Ό ν€λμ μΆκ°νλ€. μ΄ λ κ³μΈ΅μμ μ μνλ 'λ°μ΄ν°' λ λμ°©μ§ λ€νΈμν¬μ λμΌ κ³μΈ΅μμ μ¬μ©λλ μ 보μ΄λ©°, μ΄κ² λ§κ³ λ ν€λμ λ΄κΈ°λ 'μμ νλ‘ν μ½ μ§μμ μ 보' λ λμΌ κ³μΈ΅μ΄ μλ μμ κ³μΈ΅μ μν μ 보μ΄λ€. μ¦ μμμ νλ‘ν μ½ λλ νλ‘μΈμ€λ₯Ό μ νν μ°Ύμκ° μ μλλ‘ ν΄ μ£Όλ μ 보μ΄λ€.
μ μ‘ κ³μΈ΅μμλ μ΄λ¬ν μ 보λ₯Ό νμ©νμ¬ μμ λ§ν μμ μ±μ λ¬μ±νκ² λλ€.
π μμ νλ‘ν μ½ μ§μμ μ 보: PORT
μ μ‘ κ³μΈ΅μμ λ΄κΈ°λ μμ νλ‘ν μ½ μ§μμ μ 보λ λ°λ‘ ν¬νΈ λ²νΈμ΄λ€. ν¬νΈ λ²νΈλ μΆλ°μ§μ λͺ©μ μ§κ° ꡬλΆλμ΄ λ΄κΈ΄λ€.
Port λ²νΈλ νλμ IP μ£Όμ μμμ νΉμ μμ μ΄ μ΄λ£¨μ΄μ§λ μμΉμ΄λ€. 16λΉνΈλ‘ μ΄λ£¨μ΄μ Έ μμ΄ 0λΆν° 65,535λ²κΉμ§ μΈ μ μμΌλ©°, 0λ²λΆν° 1023κΉμ§λ μ§μ λ νλ‘μΈμ€λ₯Ό μν΄ IANA(Internet Assigned Numbers Authority) μ λ±λ‘λμ΄ μλ€. μ΄λ¬ν "μ§μ λ νλ‘μΈμ€" λ Well-Known ν¬νΈλ‘λ λΆλ¦°λ€. (HTTP: 80, HTTPS: 443, SMTP:25 λ±)
- Well-known ν¬νΈ: 0~1023, μ¬μ€ ν¬νΈλ‘ μ¬μ© λΆκ°
- 1024~49151 ν¬νΈ: IANA μ λ±λ‘λμ΄ μμ§λ§ 곡μ λΉκ³΅μ λ²νΈ νΌμ¬λμ΄ μ¬μ€ ν¬νΈλ‘λ μ¬μ© κ°λ₯
- 49152~65535 ν¬νΈ: IANA μ λ±λ‘λμ§ μμΌλ©° μμ, μ¬μ€ μ¬μ© κ°λ₯
π κ³μΈ΅μμ μ μνλ μ 보: Seq, Ack
TCP νλ‘ν μ½μ ν° νΉμ§μ μ 보μ μ€ μλ ν΅μ μ 보μ₯νλ€λ μ μ΄λ€. TCP λ μ΄λ₯Ό μν΄ λ°μ΄ν°λ₯Ό λΆν νλ©°, λΆν λ ν¨ν·μ΄ λμ°©μ§μ μ μ μ‘λμλμ§ κ³μ νμΈνλ€.
μ΄λ₯Ό μν΄ ν¨ν·μ Seq(sequence λ²νΈ)μ, Ack(acknowledge λ²νΈ)λ₯Ό λΆμ¬νλ€. μ μ‘ κ³μΈ΅μ Seq λ²νΈλ₯Ό ν΅ν΄ λ°μ΄ν°μ μμκ° λ³κ²½λμλμ§ νμΈν μ μκ² λλ€.
Seq, Ack λ²νΈκ° ν΅μ λλ λ°©μμ λ€μκ³Ό κ°λ€ (λλ¬Έμ ACK λ μΌλ¨ 무μνλ©°, window size λ 1μΈ κ²½μ°μ΄λ€).
1. A νλ‘μΈμ€ (μΆλ°μ§) μμ Seq λ²νΈλ₯Ό 10μΌλ‘ 보λΈλ€.
2. B νλ‘μΈμ€ (λμ°©μ§) μμ Seq 10λ²μ μ λ°μμΌλ, μ¬κΈ°μ +1 μ νμ¬ Ack μ λ΄λλ€.
3. B νλ‘μΈμ€μμλ λ³ΈμΈμ Seq λ²νΈμΈ 50λ λ΄μ 보λΈλ€.
4. A νλ‘μΈμ€λ μ΄μ B μμ λ°μ Seq 50 λ²μ μ λ°μλ€λ μλ―Έλ‘ +1 μ νμ¬ Ack μ λ΄λλ€.
5. A νλ‘μΈμ€λ λ³ΈμΈμ΄ λ€μμΌλ‘ λ³΄λΌ λ°μ΄ν°μΈ Seq 11 λ²μ ν¨ν·μ λ΄μ 보λΈλ€.
μ¬κΈ°μ μ€μν κ²μ μλμ Seq λ²νΈλ₯Ό κ³μ μ κ²νλ©΄μ λ°μ΄ν°μ μμλ₯Ό νμΈν μ μλ€λ μ μ΄λ€. ν¨ν· λ²νΈκ° μμμ λ§μΌλ©΄ Ack μλ΅μ μ£Όκ² λλλ°, μ΄λ +1 μ μ¦κ°μν΄μΌλ‘μ¨ λ€μ μμμ ν¨ν·μ μμ²νλ€.
π Window Size
μμ Seq, Ack ν΅μ κ³Όμ μ Window size κ° 1μΈ κ²½μ°μλ€. Window size λ, λ°μ΄ν° (ν¨ν·) μ ν λ²μ μΌλ§λ λ³΄λΌ μ μλμ§ κ³ λ €ν μ μ‘ ν¬κΈ°μ΄λ©°, ν λ²μ λ°μ μ μλ λ°μ΄ν°μ ν¬κΈ°(μ©λ)μ΄κΈ°λ νλ€. Window size κ° 1μ΄λΌλ λ»μ, ν λ²μ 1λ°μ΄νΈμ ν¨ν·μ΄ μ μ‘λκ³ μμ λ¨μ μλ―Ένλ€. (μ΅λ 2^16 μΈ 65,535 Byte κΉμ§ νμ κ°λ₯νλ€)
μΆλ°μ§μ λμ°©μ§λ κ³μν΄μ μλ΅μ μ£Όκ³ λ°λλ°, μκ±°λ¦¬μΌ κ²½μ° μλ΅ λκΈ° μκ°μ κΈΈμ΄μ§ μ λ°μ μλ€. κ·Έλμ TCP λ ν¨μ¨μ μΈ ν΅μ μ μν΄ ν λ²μ μ΅λν λ§μ μμ ν¨ν·μ 보λ΄κ³ , ν λ²μ μλ΅ (Ack) λ§ λ°λ λ°©μμ μ·¨νλ€. νμ§λ§ λ€νΈμν¬ μνκ° μ’μ§ μμ κ²½μ° ν λ²μ λ무 λ§μ μμ ν¨ν·μ 보λλ€κ°λ μ μ€λ κ°λ₯μ±μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ, κ·Έ μ€κ° μ§μ μ μ°Ύλ κ²μ΄ μ€μνλ€.
μ΄μ²λΌ λ€νΈμν¬μ μν©μ λ°λΌ Window size λ₯Ό μ‘°μ νλ κ²μ Sliding window λΌκ³ νλ€. Sliding window λ λΆμμ ν λ€νΈμν¬λ‘ μΈν΄ λ°μ΄ν° μ μ€μ΄ λ°μν κ²½μ° Window size λ₯Ό μ λ°μΌλ‘ λ¨μ΄λ¨λ¦° λ€, μ μμ μΈ ν΅μ μ΄ μμλλ©΄ λ€μ μ¬μ΄μ¦λ₯Ό νλμ© λλ €κ°λ©° ν΅μ μ μμ μ±μ ν보νλ€.
π 3-way handshake
TCP λ 본격μ μΈ ν΅μ μ μμνκΈ° μ΄μ μ μ¬μ μ°κ²°μμ μ μ§ννλ€. λ€μ λ§ν΄ "μ§κΈ λ°μ΄ν°λ₯Ό μμ νκ² λ°μ μ μλ?" λ₯Ό νμΈνλ μ¬μ κ³Όμ μ΄λ€.
3-way handshake λ λ€νΈμν¬ ν΅μ ν립μ μν΄ μ§ν μν©μ λ°λΌ μν μ 보λ₯Ό μμ νλ€.
1. μ΅μ΄ μν: ν΄λΌμ΄μΈνΈλ Closed, μλ²λ listen μν (ν΄λΌμ΄μΈνΈμ μ μμ λ°μλ€μΌ μ μλ λκΈ° μν) μ΄λ€.
2. ν΄λΌμ΄μΈνΈκ° ν΅μ μ μλνλ €κ³ νλ μλ²μ SYN ν¨ν·μ 보λΈλ€. μ΄ λ ν΄λΌμ΄μΈνΈλ SYN_SENT μνμ΄λ€.
3. ν΄λΌμ΄μΈνΈμ SYN ν¨ν·μ λ°μ μλ²λ SYN-RECEIVE μνκ° λλ€.
4. μλ²κ° ν΄λΌμ΄μΈνΈμμΈ SYN + ACK ν¨ν·μ 보λΈλ€.
5. μλ²μ SYN + ACK ν¨ν·μ λ°μ ν΄λΌμ΄μΈνΈλ ν΅μ μ ν립νμμΌλ―λ‘, μνλ₯Ό ESTABLISHED λ‘ μμ νλ€.
6. ν΄λΌμ΄μΈνΈλ μλ²μκ² ν΅μ ν립μ λ»νλ ACK λ₯Ό 보λ΄λ©°, μ΄λ₯Ό λ°μ μλ² μμ ESTABLISHED μνκ° λλ€.
μ΄λ κ² μ¬μ μ μ΄ 3λ¨κ³λ₯Ό κ±°μ³ μ°κ²°μ΄ ν립λλ―λ‘, 3-way handshake λ‘ λΆλ¦°λ€.
π Header μ Flag
ν΅μ μ λ§€λ² λ°μ΄ν°λ₯Ό 보λ΄κΈ° μ μ μμ μ μΌλ‘ ν립λμ΄μΌ νλλ°, κΈ°μ‘΄ ν΅μ κ³Ό μλ‘μ΄ ν΅μ ꡬλΆνλ λ²μ 무μμΌκΉ? TCP λ μ΄λ₯Ό μν΄ ν¨ν·μ ν€λμ Flag κ°μ λ£κ³ , μμ νλ€.
Flag μ’ λ₯ | |
SYN | μ°κ²°μ μμν λ μ¬μ©νλ€. μμͺ½ λͺ¨λ SYN μ΄ 1μΈ μνμ¬μΌ μ°κ²°μ΄ ν립λλ€. |
ACK | μλ΅ λ²νΈκ° μ ν¨νμ§ μ€μ ν λ μ¬μ©νλ€. ACK κ° 1μ΄λ©΄, μλλ‘λΆν° ν¨ν·μ λ°μλ€λ κ²μ μλ €μ€λ€. ν΄λΌμ΄μΈνΈκ° λ³΄λΈ μ΅μ΄μ SYN ν¨ν· μ΄νμλ λͺ¨λ 1λ‘ μ€μ λλ€. |
FIN | μΈμ μ°κ²°μ μ’ λ£μν¬ λ μ¬μ©λλ€. λ°μ΄ν° ν΅μ μ΄ λͺ¨λ λλ λ€, μλ°©ν₯ ν΅μ μ λλλ€λ μλ―Έλ₯Ό κ°μ§ λ 1λ‘ μ€μ λλ€. |
RST | μΈμ μ°κ²°μ μΌλ°©μ μΌλ‘ κ°μ μ’ λ£ν λ μ¬μ©λκ±°λ, μ ν¨νμ§ μμ μΈκ·Έλ¨ΌνΈμ λν μλ΅μΌλ‘ μ¬μ©λλ€. |
URG | κΈ΄κΈ λ°μ΄ν°μΈ κ²½μ° 1λ‘ μ€μ λλ€. |
PSH | λ²νΌλ§λ λ°μ΄ν°λ₯Ό μμ κ³μΈ΅μ μ¦μ μ λ¬ν λ μ¬μ©λλ€. |
μ΅μ΄ μμ² μ ν΄λΌμ΄μΈνΈλ SYN Flag λ₯Ό 1λ‘ νμνλ©°, μ΄λ₯Ό λ°μ μλ΅μ 보λ΄λ μλ²λ SYN κ³Ό ACK Flag λ₯Ό 1λ‘ νμνλ€. μ΄ν ν΄λΌμ΄μΈνΈλ SYN μ 0μΌλ‘ μ νν λ€, ACK λ§ 1λ‘ νμνλ©°, μ΄λ₯Ό μ μ μ§νλ€. μλ² μμ ν΄λΌμ΄μΈνΈμ ACK λ₯Ό λ°μ λ€λΆν°λ ACK λ§ 1λ‘ νμνλ€.
β¨ UDP (User Datagram Protocol)
UDP λ λ°μ΄ν°μ μ λ’°μ±μ΄λ μλ°©ν₯ ν΅μ λ³΄λ€ ν μͺ½μμ λ€λ₯Έ μͺ½μΌλ‘ μΌλ¨ λ°μ΄ν°λ₯Ό μ λ¬νλ κ²μ΄ μ€μν λ μ¬μ©λλ€. UDPλ λ°μ΄ν°λ₯Ό 보λ΄λ©΄ κ·Έκ²μΌλ‘ λμΈ λ¨λ°©ν₯ ν΅μ νλ‘ν μ½μ΄λ€. μλ΅μ λ°κ±°λ νμΈνμ§ μκΈ° λλ¬Έμ, μ λ’°μ±μ μμ§λ§, ν΅μ μ μ μμ±μ λμΈλ€. μ£Όλ‘ μμ± λ°μ΄ν°λ₯Ό νμ©νλ ν΅μ , μ€μκ° μ€νΈλ¦¬λ°κ³Ό κ°μ΄ μκ°μ λ―Όκ°ν ν΅μ λλ μλ΅μ λ°κΈ° μ΄λ €μ΄ λ©ν°μΊμ€νΈν ν΅μ μΌ κ²½μ° UDP κ° μ¬μ©λλ€.
UDP λ λ°μ΄ν° μ μ‘μ 보μ₯νμ§ μκΈ° λλ¬Έμ, μΌλΆ λ°μ΄ν°κ° μ μ€λ μ μλ€. νμ§λ§ λ°μ΄ν°κ° μ μ€λλλΌλ μκ° λ§μΆ° λ°μ΄ν°λ₯Ό κ³μ λΉ λ₯΄κ² μ μ‘νλ κ²μ΄ μ€μν μμ€ν μ κ²½μ°, UDP μ μ΄μ μ μ νμ©ν μ μλ€. νμνμ κ°μ κ²½μ° UDP λ₯Ό μ¬μ©νκΈ°λ νλλ°, μΌλΆ μμ μλ£κ° μ μ€λμ΄λ κ³μ νμλ₯Ό μ§νν μ μλλ‘ ν΄ μ£Όλ κ²μ΄ UDP μ μν μ΄λ€.
UDP μμλ ν΅μ μ ν립νκΈ° μν΄ ν΄λΌμ΄μΈνΈμμ μλ²μκ² λ¦¬μμ€ ν보λ₯Ό μν 첫 μμ²μ 보λΈλ€. νμ§λ§ μ΄ μμ²μ μλ²κ° ν΄λΌμ΄μΈνΈμκ² μλ΅μ 보λκ³Ό μ¦μμ μ μ€λλ©°, μ΄νμλ μλ²κ° ν΄λΌμ΄μΈνΈμκ² μΌλ°©μ μΌλ‘ λ°μ΄ν°λ₯Ό 보λ΄κ² λλ€.
β¨ TCP, UDP μμ½
TCP λ μ λ’°μ± μλ ν΅μ μ μν΄ μμΈ‘ κ°μ μ°κ²°μ 미리 ν립νλ νλ‘ν μ½μ΄λ€. TCP λ₯Ό ν΅ν΄ λ°μ΄ν° μ μ€ λλ μμ λ³λμ λ°©μ§ν μ μμΌλ©°, λ€νΈμν¬ μνμ λ°λΌ λ°μ΄ν° μ μ‘λλ μ‘°μ ν μ μλ€.
UDP λ λΉ λ₯Έ μκ°μ λ°μ΄ν°λ₯Ό μ μ‘νκΈ° μν λ¨λ°©ν₯ νλ‘ν μ½μ΄λ€. UDP λ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°κ° μ μ€λ μλ μμ΄λ, μκ°μ λ―Όκ°νκ±°λ μλ΅μ λ°κΈ° μ΄λ €μ΄ νΈμ€νΈμλ λ°μ΄ν°λ₯Ό μ μ‘ν μ μλ€.
πTCP Keywords: μ°κ²°ν, μ€λ₯μ μ΄, νλ¦μ μ΄, μ λμΊμ€νΈ, λ°μ΄ν° μ μ‘
πUDP Keywords: λΉμ°κ²°ν, λΉμ€λ₯μ μ΄, λΉνλ¦μ μ΄, μ λ/λ©ν°/λΈλ‘λμΊμ€νΈ, νΈλν½ μ μ‘
β¨ μ°Έκ³ μλ£
- IT μμ§λμ΄λ₯Ό μν λ€νΈμν¬ μ λ¬Έ (κΈΈλ²)
- [Network] TCP / UDPμ κ°λ κ³Ό νΉμ§, μ°¨μ΄μ
'π» DEV > Network' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Network] λΌμ°ν° (Router) μ λμ λ°©μ (0) | 2021.10.04 |
---|---|
[Network] μ€μμΉμ λμ λ°©μ (0) | 2021.09.27 |
[Network] IP μ£Όμ 체κ³μ κ³Όκ±°μ νμ¬ (0) | 2021.09.13 |
[Network] TCP/IP νλ‘ν μ½ μ€ν (κ·Όλ° μ΄μ OSI 7κ³μΈ΅μ κ³λ€μΈ) (0) | 2021.09.09 |
[Network] νλ‘μ(Proxy) λ? (0) | 2021.06.05 |
λκΈ