Home > Network > 2024 > 🌐[Network] TCP(Transmission Control Protocol)λž€ λ¬΄μ—‡μΌκΉŒ?

🌐[Network] TCP(Transmission Control Protocol)λž€ λ¬΄μ—‡μΌκΉŒ?
Network

🌐[Network] TCP(Transmission Control Protocol)λž€ λ¬΄μ—‡μΌκΉŒ?

  • TCP(Transmisson Control Protocol)λŠ” 인터넷 ν”„λ‘œν† μ½œ μŠ€μœ„νŠΈ(Internet Protol Suite)의 핡심 ν”„λ‘œν† μ½œ 쀑 ν•˜λ‚˜λ‘œ, μ‹ λ’°μ„± μžˆλŠ” 데이터 전솑을 보μž₯ν•˜λŠ” μ—°κ²° 지ν–₯ν˜• ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
  • TCPλŠ” 데이터 νŒ¨ν‚·μ„ 손싀 없이, μˆœμ„œλŒ€λ‘œ, μ •ν™•ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•˜λ©°, 인터넷을 ν¬ν•¨ν•œ λŒ€λΆ€λΆ„μ˜ λ„€νŠΈμ›Œν¬μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.
  • TCP/IP라고도 뢈리며, IP(Internet Protocol)와 ν•¨κ»˜ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

1️⃣ TCP의 μ£Όμš” νŠΉμ§•.

1️⃣ μ—°κ²° 지ν–₯ν˜• ν”„λ‘œν† μ½œ.

  • TCPλŠ” 데이터λ₯Ό μ „μ†‘ν•˜κΈ° 전에 μ†‘μ‹ μžμ™€ μˆ˜μ‹ μž 간에 연결을 μ„€μ •ν•©λ‹ˆλ‹€.
    • 이 연결을 톡해 두 μž₯μΉ˜κ°€ 데이터λ₯Ό 주고받을 수 μžˆλŠ” 가상 νšŒμ„ μ„ ν˜•μ„±ν•©λ‹ˆλ‹€.
      • 연결이 μ„€μ •λ˜λ©΄, 데이터가 μ†μ‹€λ˜μ§€ μ•Šκ³  μˆœμ„œλŒ€λ‘œ 전달 λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

2️⃣ μ‹ λ’°μ„± μžˆλŠ” 데이터 전솑.

  • TCPλŠ” νŒ¨ν‚· 손싀이 λ°œμƒν•  경우 μ†μ‹€λœ νŒ¨ν‚·μ„ μž¬μ „μ†‘ν•˜κ³ , μˆ˜μ‹ ν•œ νŒ¨ν‚·μ΄ μ˜¬λ°”λ₯Έμ§€ ν™•μΈν•˜λŠ” 였λ₯˜ κ²€μΆœ 및 μˆ˜μ • λ©”μ»€λ‹ˆμ¦˜μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.
    • 이둜 인해 데이터가 μ†μ‹€λ˜κ±°λ‚˜ μ†μƒλ˜μ§€ μ•Šκ³ , μ •ν™•νžˆ λͺ©μ μ§€μ— λ„λ‹¬ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

3️⃣ 데이터 흐름 μ œμ–΄.

  • TCPλŠ” μˆ˜μ‹  츑이 데이터λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ” 속도에 맞좰 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 흐름 μ œμ–΄ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 솑신 μΈ‘μ—μ„œ 데이터λ₯Ό λ„ˆλ¬΄ 빨리 보내 μˆ˜μ‹  츑이 μ²˜λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” 상황을 λ°©μ§€ν•©λ‹ˆλ‹€.

4️⃣ 혼작 μ œμ–΄.

  • λ„€νŠΈμ›Œν¬μ—μ„œ 혼작이 λ°œμƒν•  경우, TCPλŠ” 전솑 속도λ₯Ό 쀄여 λ„€νŠΈμ›Œν¬ λΆ€ν•˜λ₯Ό μ™„ν™”ν•˜λŠ” 혼작 μ œμ–΄ κΈ°λŠ₯을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 λ„€νŠΈμ›Œν¬κ°€ κ³ΌλΆ€ν•˜ μƒνƒœμ— 빠지지 μ•Šλ„λ‘ λ³΄ν˜Έν•©λ‹ˆλ‹€.

5️⃣ νŒ¨ν‚· μˆœμ„œ 보μž₯.

  • λ„€νŠΈμ›Œν¬μ—μ„œλŠ” νŒ¨ν‚·μ΄ μ„œλ‘œ λ‹€λ₯Έ 경둜λ₯Ό 톡해 λͺ©μ μ§€μ— 도달할 수 있기 λ•Œλ¬Έμ—, 도착 μˆœμ„œκ°€ λ‹¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • TCP(Transmission Control Protocol)λŠ” μ΄λŸ¬ν•œ νŒ¨ν‚·μ„ μ˜¬λ°”λ₯Έ μˆœμ„œλ‘œ μž¬μ‘°λ¦½ν•˜μ—¬ μ›λž˜μ˜ λ°μ΄ν„°λ‘œ λ³΅μ›ν•©λ‹ˆλ‹€.

6️⃣ νŒ¨ν‚· 였λ₯˜ κ²€μΆœ 및 μˆ˜μ •.

  • TCP(Transmission Control Protocol) νŒ¨ν‚·μ— 체크섬(Checksum)μ΄λΌλŠ” 였λ₯˜ κ²€μΆœ 값을 ν¬ν•¨ν•˜μ—¬, 데이터가 μ†μƒλ˜μ§€ μ•Šμ•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
    • λ§Œμ•½ νŒ¨ν‚·μ΄ μ†μƒλ˜μ—ˆκ±°λ‚˜ λ„μ°©ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄, ν•΄λ‹Ή νŒ¨ν‚·μ„ λ‹€μ‹œ μ „μ†‘ν•©λ‹ˆλ‹€.

2️⃣ TCP의 λ™μž‘ 원리.

  • TCPλŠ” 데이터λ₯Ό μ†‘μ‹ μžμ—μ„œ μˆ˜μ‹ μžλ‘œ μ•ˆμ „ν•˜κ²Œ μ „μ†‘ν•˜κΈ° μœ„ν•΄ μ„Έ 가지 μ£Όμš” 단계λ₯Ό κ±°μΉ©λ‹ˆλ‹€.

1️⃣ μ—°κ²° μ„€μ •(3-Way Handshake)

  • TCP(Transmisson Control Protocol)λŠ” 데이터 전솑을 μ‹œμž‘ν•˜κΈ° 전에 μ†‘μ‹ μžμ™€ μˆ˜μ‹ μž 간에 3단계 ν•Έλ“œμ…°μ΄ν¬(3-Way Handshake)λ₯Ό 톡해 연결을 μ„€μ •ν•©λ‹ˆλ‹€.
    • 1️⃣ SYN : μ†‘μ‹ μžλŠ” μˆ˜μ‹ μžμ—κ²Œ μ—°κ²° μš”μ²­(SYN)을 λ³΄λƒ…λ‹ˆλ‹€.
    • 2️⃣ SYN-ACK : μˆ˜μ‹ μžλŠ” μ†‘μ‹ μžμ˜ μš”μ²­μ„ μˆ˜λ½ν•˜κ³ , 연결을 μŠΉμΈν•˜λŠ” 응닡(SYN-ACK)을 λ³΄λƒ…λ‹ˆλ‹€.
    • 3️⃣ ACK : μ†‘μ‹ μžλŠ” μˆ˜μ‹ μžμ˜ 응닡을 확인(ACK)ν•˜κ³ , 데이터 전솑을 μ‹œμž‘ν•  μ€€λΉ„κ°€ μ™„λ£Œλ©λ‹ˆλ‹€.
      • 이 과정이 μ™„λ£Œλ˜λ©΄ μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžλŠ” 데이터 전솑을 μœ„ν•œ 가상 연결을 ν™•λ¦½ν•˜κ²Œ λ©λ‹ˆλ‹€.

2️⃣ 데이터 전솑

  • 데이터λ₯Ό μž‘μ€ νŒ¨ν‚·μœΌλ‘œ λ‚˜λˆ„μ–΄ μ „μ†‘ν•©λ‹ˆλ‹€.
    • 각 νŒ¨ν‚·μ€ μˆœμ„œ λ²ˆν˜Έκ°€ λΆ€μ—¬λ˜λ©°, μˆ˜μ‹ μžλŠ” 이 번호λ₯Ό μ΄μš©ν•΄ νŒ¨ν‚·μ΄ μ˜¬λ°”λ₯Έ μˆœμ„œλ‘œ λ„μ°©ν–ˆλŠ”μ§€ ν™•μΈν•˜κ³  μž¬μ‘°λ¦½ν•©λ‹ˆλ‹€.
  • 각 νŒ¨ν‚·μ΄ μ„±κ³΅μ μœΌλ‘œ λ„μ°©ν•˜λ©΄ μˆ˜μ‹ μžλŠ” μ†‘μ‹ μžμ—κ²Œ ACK(Acknowledgement, 확인 응닡)λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.
    • λ§Œμ•½ μˆ˜μ‹ μžκ°€ νŒ¨ν‚·μ„ 받지 λͺ»ν•˜κ±°λ‚˜ νŒ¨ν‚·μ΄ μ†μƒλœ 경우, μ†‘μ‹ μžλŠ” ν•΄λ‹Ή νŒ¨ν‚·μ„ μž¬μ „μ†‘ν•©λ‹ˆλ‹€.

3️⃣ μ—°κ²° ν•΄μ œ(4-Way Handshake)

  • 데이터 전솑이 μ™„λ£Œλ˜λ©΄, μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžλŠ” 4단계 ν•Έλ“œ 셰이크(4-Way Handshake) 과정을 톡해 연결을 ν•΄μ œν•©λ‹ˆλ‹€.
    • 1️⃣ FIN : μ†‘μ‹ μžλŠ” 연결을 μ’…λ£Œν•˜κΈ° μœ„ν•œ μš”μ²­(FIN)을 λ³΄λƒ…λ‹ˆλ‹€.
    • 2️⃣ ACK : μˆ˜μ‹ μžλŠ” 이 μš”μ²­μ„ μˆ˜λ½ν•˜κ³  ACK(Acknowledgement, 확인 응닡)을 λ³΄λƒ…λ‹ˆλ‹€.
    • 3️⃣ FIN : μˆ˜μ‹ μžλ„ 연결을 μ’…λ£Œν•˜κ³  싢을 λ•Œ FIN을 λ³΄λƒ…λ‹ˆλ‹€.
    • 4️⃣ ACK : μ†‘μ‹ μžλŠ” μˆ˜μ‹ μžμ˜ FIN에 λŒ€ν•œ ACK(Acknowledgement, 확인 응닡)λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.
      • 이 과정이 μ™„λ£Œλ˜λ©΄ μ†‘μ‹ μžμ™€ μˆ˜μ‹ μž κ°„μ˜ 연결이 μ’…λ£Œλ©λ‹ˆλ‹€.

3️⃣ TCP와 IP의 관계.

  • TCP(Transmisson Control Protocol)λŠ” 전솑 계측(Transport Layer)μ—μ„œ λ™μž‘ν•˜λŠ” ν”„λ‘œν† μ½œμ΄λ©°, IP(Internet Protocol)λŠ” λ„€νŠΈμ›Œν¬ 계측(Network Layer)μ—μ„œ λ™μž‘ν•˜λŠ” ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€.
    • 이 λ‘˜μ€ TCP/IPλΌλŠ” μ΄λ¦„μœΌλ‘œ ν•¨κ»˜ μ‚¬μš©λ˜λ©°, TCP(Transmisson Control Protocol)λŠ” 데이터 μ „μ†‘μ˜ 신뒰성을 보μž₯ν•˜κ³ , IP(Internet Protocol)λŠ” μ‹ λ’°μ„±μ΄λ‚˜ μˆœμ„œ 보μž₯을 ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, TCP(Transmisson Control Protocol)κ°€ κ·Έ μœ„μ—μ„œ νŒ¨ν‚·μ˜ μˆœμ„œ 및 무결성을 보μž₯ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

4️⃣ TCP의 μž₯점.

  • 1️⃣ μ‹ λ’°μ„± : TCP(Transmisson Control Protocol)λŠ” 데이터 손싀, νŒ¨ν‚· 였λ₯˜, μˆœμ„œ 였λ₯˜ 등을 μžλ™μœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬, 데이터λ₯Ό μ •ν™•ν•˜κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€.
  • 2️⃣ μˆœμ„œ 보μž₯ : TCPλŠ” νŒ¨ν‚·μ΄ μˆœμ„œλŒ€λ‘œ λ„μ°©ν•˜λ„λ‘ 보μž₯ν•˜μ—¬, μ „μ†‘λœ 데이터가 μ •ν™•ν•˜κ²Œ 재쑰립될 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.
  • 3️⃣ 흐름 μ œμ–΄ : μˆ˜μ‹  츑의 처리 속도에 λ§žμΆ”μ–΄ 데이터λ₯Ό μ‘°μ ˆν•¨μœΌλ‘œμ¨, 데이터 κ³ΌλΆ€ν•˜λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€.
  • 4️⃣ 혼작 μ œμ–΄ : λ„€νŠΈμ›Œν¬ 혼작 μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜μ—¬, λ„€νŠΈμ›Œν¬ λΆ€ν•˜κ°€ λ°œμƒν–ˆμ„ λ•Œλ„ 효율적으둜 데이터 전솑을 μœ μ§€ν•©λ‹ˆλ‹€.

5️⃣ TCP의 단점.

  • 1️⃣ 속도
    • TCP(Transmisson Control Protocol)λŠ” λ°μ΄ν„°μ˜ 신뒰성을 보μž₯ν•˜κΈ° μœ„ν•΄ λ§Žμ€ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•©λ‹ˆλ‹€.
      • 확인 응닡(ACK, Acknowledgement)을 μ£Όκ³ λ°›κ³ , μž¬μ „μ†‘μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— UDP(User Datagram Protocol)에 λΉ„ν•΄ 속도가 느릴 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 2️⃣ λ³΅μž‘μ„±
    • TCP(Transmisson Control Protocol)λŠ” μƒνƒœλ₯Ό μœ μ§€ν•˜κ³ , 각 νŒ¨ν‚·μ˜ μˆœμ„œμ™€ 무결성을 μΆ”μ ˆν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— κ΅¬ν˜„μ΄ λ³΅μž‘ν•©λ‹ˆλ‹€.
  • 3️⃣ μ‹€μ‹œκ°„ 데이터 전솑에 뢀적합
    • TCP(Transmisson Control Protocol)λŠ” μ‹€μ‹œκ°„μœΌλ‘œ λΉ λ₯΄κ²Œ 전솑해야 ν•˜λŠ” 슀트리밍 μ„œλΉ„μŠ€λ‚˜ 온라인 κ²Œμž„ λ“±μ—μ„œλŠ” μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
      • μ‹€μ‹œκ°„ μ‘λ‹΅λ³΄λ‹€λŠ” 신뒰성이 더 μ€‘μš”ν•  λ•Œ TCPκ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

6️⃣ TCP와 UDP의 비ꡐ.

νŠΉμ§• TCP(Transmisson Control Protocol) UDP(User Datagram Protocol)
μ—°κ²° 방식 μ—°κ²° 지ν–₯ν˜•(3-Way Handshake) λΉ„μ—°κ²°ν˜•
데이터 전솑 보μž₯ μ‹ λ’°μ„± 보μž₯, νŒ¨ν‚· μž¬μ •μ†‘, μˆœμ„œ 보μž₯ μ‹ λ’°μ„± μ—†μŒ, νŒ¨ν‚· 손싀 λ°œμƒ κ°€λŠ₯μ„±
속도 μƒλŒ€μ μœΌλ‘œ 느림 μƒλŒ€μ μœΌλ‘œ 빠름
였λ₯˜ 처리 였λ₯˜ κ²€μΆœ 및 μž¬μ „μ†‘ 였λ₯˜ κ²€μΆœ μ—†μŒ
μ ν•©ν•œ μš©λ„ μ›Ή λΈŒλΌμš°μ§•, 파일 전솑, 이메일 λ“± μ‹€μ‹œκ°„ 슀트리밍, 온라인 κ²Œμž„ λ“±

7️⃣ TCP의 μ‚¬μš© 사둀.

  • μ›Ή λΈŒλΌμš°μ§•(HTTP/HTTPS)
    • TCPλŠ” HTTP와 HTTPSμ—μ„œ μ‚¬μš©λ˜λ©°, μ›Ή νŽ˜μ΄μ§€κ°€ 손상 없이 μ •ν™•ν•˜κ²Œ λ‘œλ“œ 될 수 μžˆλ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.
  • 파일 전솑(FTP, File Transport Protocol)
    • FTP(File Transport Protocol)λŠ” TCPλ₯Ό μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ μ‹ λ’°μ„± 있게 μ „μ†‘ν•©λ‹ˆλ‹€.
  • 이메일(SMTP/IMAP/POP3)
    • 이메일 전솑 및 μˆ˜μ‹  μ‹œ, SMTP, IMAP, POP3λŠ” TCP(Transmission Control Protocol)λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터가 μ†μ‹€λ˜μ§€ μ•Šκ³  λ„μ°©ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.
  • 원격 접속(SSH, Telent)
    • 원격 μ„œλ²„μ— μ•ˆμ „ν•˜κ²Œ μ—°κ²°ν•˜μ—¬ λͺ…령을 전솑할 λ•Œ TCPλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹ λ’°μ„± μžˆλŠ” 톡신을 보μž₯ν•©λ‹ˆλ‹€.

8️⃣ κ²°λ‘ .

  • TCP(Transmisson Control Protocol)λŠ” μ‹ λ’°μ„± μžˆλŠ” 데이터 전솑을 보μž₯ν•˜λŠ” ν”„λ‘œν† μ½œλ‘œ, μΈν„°λ„·μ—μ„œ 널리 μ‚¬μš©λ©λ‹ˆλ‹€.
  • 데이터가 μ •ν™•ν•˜κ²Œ, 손싀 없이 μ „λ‹¬λ˜λŠ” 것을 보μž₯ν•˜λ©°, 연결을 μ„€μ •ν•œ ν›„ 데이터λ₯Ό μ†‘μˆ˜μ‹ ν•˜κ³ , μ „μ†‘λœ 데이터가 μ†μƒλ˜μ§€ μ•Šμ•˜λŠ”μ§€ ν™•μΈν•˜λ©°, μ†μƒλœ λ°μ΄ν„°λŠ” μž¬μ „μ†‘ν•©λ‹ˆλ‹€.
  • μ›Ή λΈŒλΌμš°μ§•, 파일 전솑, 이메일 전솑등 신뒰성이 μ€‘μš”ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 주둜 μ‚¬μš©λ˜λ©°, 이둜 인해 λ„€νŠΈμ›Œν¬μ˜ μ•ˆμ •μ„±μ„ 크게 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.