준비하는 대학생

[Network] Transmission Control Protocol(TCP) 본문

Network

[Network] Transmission Control Protocol(TCP)

Bangii 2023. 8. 10. 16:42

 

1. TCP란?

TCP는 Transmission Control Protocol의 약자로, 데이터 전송을 관리하는 인터넷 프로토콜입니다. 이는 우리가 인터넷을 통해 정보를 주고받을 때, 해당 정보가 안정적이고 순서대로 도착하는 것을 보장해 주는 핵심 역할을 합니다.

2. TCP를 사용하는 이유

예를 들어, 전자 메일을 보낼 때 메일의 내용이 흐트러지지 않고, 모든 문장이 순서대로 도착해야 한다고 상상해보세요. TCP는 이러한 신뢰성 있는 데이터 전송을 보장하기 위해 설계되었습니다.

3. TCP의 주요 특징

  • 신뢰성: TCP는 데이터의 분실, 중복 또는 오류가 발생할 경우 재전송을 수행합니다.
  • 연결 지향적: 통신을 시작하기 전에 송수신자간에 연결을 설정합니다.
  • 흐름 제어: 네트워크의 혼잡도를 감지하고 데이터 전송 속도를 조절하여 효율적인 통신을 유지합니다.
  • 순서 보장: 데이터는 전송 순서대로 목적지에 도착합니다.

4. TCP와 UDP

인터넷 프로토콜에는 TCP 외에도 UDP (User Datagram Protocol)가 있습니다. UDP는 연결 설정 없이 데이터를 전송하며, TCP보다 빠른 전송 속도를 가지지만, 신뢰성이 낮습니다. 따라서 빠른 전송이 필요하면서 데이터의 손실이 크게 문제가 되지 않는 환경(예: 스트리밍, 온라인 게임)에서 주로 사용됩니다.

5. TCP의 동작 과정

TCP는 3단계의 과정을 거쳐 연결을 설정하고, 데이터를 전송한 후 연결을 종료합니다.

  1. 연결 설정 (3-way handshake)
    • SYN: 초기 연결 요청
    • SYN + ACK: 연결 요청 수락 및 응답
    • ACK: 최종적으로 연결 완료
  2. 데이터 전송
    • 데이터 패킷 전송 및 수신 확인 (ACK)
  3. 연결 종료 (4-way handshake)
    • FIN: 연결 종료 요청
    • ACK: 연결 종료 응답
    • FIN: 연결 종료 확인
    • ACK: 연결 완전히 종료

6. TCP의 각종 프로세스 및 제어

6-1. TCP 3-Way Handshake

3-Way Handshake는 TCP 연결을 시작할 때 사용하는 프로세스입니다. 이것은 클라이언트와 서버 간에 세션을 초기화하는 데 필요한 3개의 단계를 포함합니다.

  1. SYN: 클라이언트는 SYN 패킷을 서버에 보내 연결 요청을 합니다.
  2. SYN + ACK: 서버는 SYN 패킷을 수신하고, SYN 및 ACK 패킷을 클라이언트에게 전송합니다.
  3. ACK: 클라이언트는 ACK 패킷을 서버에게 보내 연결을 확인합니다.

이렇게 3-Way Handshake를 통해 클라이언트와 서버 사이의 연결이 확립됩니다.

6-2. TCP 4-Way Handshake (또는 종료 과정)

이 프로세스는 TCP 연결을 종료하기 위해 사용됩니다.

  1. FIN: 종료를 원하는 측 (클라이언트 또는 서버)이 FIN 패킷을 상대방에게 보냅니다.
  2. ACK: 상대방은 FIN 패킷을 받고 ACK 패킷을 전송하여 이를 확인합니다.
  3. FIN: 이제 상대방도 연결을 종료하길 원하므로, 자신의 FIN 패킷을 보냅니다.
  4. ACK: 종료를 원하는 원래의 측이 ACK 패킷을 보내 상대방의 FIN 패킷을 확인합니다.

6-3. Congestion Control (혼잡 제어)

TCP는 네트워크 내의 데이터 트래픽을 관리하기 위한 메커니즘이 필요합니다. 혼잡 제어는 네트워크 내의 데이터 혼잡을 방지하고 관리하는 프로세스입니다. 이것은 네트워크의 성능을 최적화하고 패킷 손실을 줄이기 위해 사용됩니다.

6-4. Flow Control (흐름 제어)

흐름 제어는 송신 측과 수신 측 간의 데이터 전송 속도를 조절하는 프로세스입니다. 이것은 수신 측이 처리할 수 있는 양보다 더 많은 데이터를 송신 측이 전송하는 것을 방지하기 위해 사용됩니다.

 

Comments