본문 바로가기
게임 서버

TCP/UDP 그리고 3way handshake

by WaDDak 2024. 10. 7.

**TCP (Transmission Control Protocol)**와 **UDP (User Datagram Protocol)**는 전송 계층에서 사용되는 두 가지 주요 프로토콜입니다. 이 두 프로토콜은 데이터를 네트워크에서 전송하는 방식에서 중요한 차이점을 가지고 있습니다.

1. TCP (Transmission Control Protocol)

TCP는 연결 지향 프로토콜로, 신뢰성 있는 데이터 전송을 보장합니다. 이를 위해 데이터를 전송하기 전에 송신자와 수신자가 연결을 설정하고, 데이터가 정확하게 도착했는지 확인하는 과정을 거칩니다.

주요 특징:

  • 연결 지향성: 데이터를 전송하기 전에 연결을 설정하고, 연결을 종료할 때까지 데이터를 주고받습니다. 이 과정에서 3-way handshake라는 절차를 통해 연결을 설정합니다.
  • 신뢰성 보장: 데이터가 손실되거나 순서가 바뀌는 경우, 이를 감지하고 재전송하는 메커니즘이 있습니다. 또한, 전송된 데이터가 제대로 도착했는지 수신자의 응답(ACK)을 통해 확인합니다.
  • 흐름 제어 및 혼잡 제어: 송신자가 수신자의 처리 속도에 맞춰 데이터를 전송하도록 조절하며, 네트워크 혼잡을 감지하고 대처합니다.
  • 데이터 순서 보장: 데이터를 전송하는 순서대로 수신자가 데이터를 받을 수 있도록 관리합니다.

사용 사례:

  • HTTP/HTTPS: 웹 브라우징
  • FTP: 파일 전송
  • 이메일 전송 (SMTP, IMAP, POP3)

요약:

  • 장점: 신뢰성, 정확성, 순서 보장
  • 단점: 연결 설정 및 확인 절차가 있어 속도가 느릴 수 있음

2. UDP (User Datagram Protocol)

UDP는 비연결형 프로토콜로, 신뢰성보다는 빠른 데이터 전송에 중점을 둡니다. 연결 설정 없이 데이터를 빠르게 전송하며, 데이터가 도착했는지 확인하지 않습니다.

주요 특징:

  • 비연결성: 데이터를 전송하기 전에 별도의 연결 설정 과정이 없으며, 데이터 패킷을 보내기만 하고 확인하지 않습니다.
  • 신뢰성 없음: 데이터가 손실되거나 순서가 바뀌어도 재전송을 하지 않습니다. 수신 여부를 확인하지 않으므로 빠른 전송이 가능합니다.
  • 빠른 속도: 오류 검출이나 복구 작업이 없기 때문에 빠르게 데이터를 전송할 수 있습니다.
  • 데이터 순서 보장 없음: 패킷이 순서대로 도착하지 않을 수 있으며, 이를 프로토콜 차원에서 보장하지 않습니다.

사용 사례:

  • VoIP (인터넷 전화): 음성이나 화상 통화는 약간의 데이터 손실을 허용하면서 실시간 전송이 중요합니다.
  • 동영상 스트리밍: 작은 데이터 손실이 발생해도 실시간 전송이 중요한 경우.
  • 온라인 게임: 빠른 데이터 전송이 필수적인 경우.

요약:

  • 장점: 빠른 전송 속도, 연결 설정 없이 바로 데이터 전송 가능
  • 단점: 데이터 손실, 순서 보장 없음

TCP와 UDP 비교

특징TCPUDP

연결 방식 연결 지향형 (3-way handshake) 비연결형
신뢰성 신뢰성 보장 (데이터 재전송 및 확인) 신뢰성 없음 (데이터 유실 가능)
데이터 순서 데이터 순서 보장 순서 보장 없음
속도 느림 (연결 설정 및 확인 과정) 빠름 (오버헤드 없음)
흐름 및 혼잡 제어 있음 없음
사용 사례 웹 브라우징, 이메일, 파일 전송 실시간 스트리밍, 온라인 게임, VoIP

선택 기준:

  • 신뢰성이 중요할 때: TCP (예: 파일 전송, 웹 브라우징)
  • 속도가 중요할 때: UDP (예: 실시간 스트리밍, VoIP, 온라인 게임)

이 두 프로토콜은 각각의 장점과 단점이 있어, 사용 환경에 따라 적합한 프로토콜을 선택하는 것이 중요합니다.

 

 

 

3-way handshakeTCP 프로토콜에서 사용하는 연결 설정 절차로, 송신자와 수신자 간에 안전하고 신뢰성 있는 연결을 만들기 위해 사용하는 과정입니다. 이 과정에서 송신자와 수신자는 서로 연결 가능 여부를 확인하고, 데이터 전송을 위한 초기 설정을 마칩니다.

3-way handshake 과정:

  1. SYN (Synchronize) - 연결 요청:
    • 클라이언트(송신자)가 서버(수신자)에게 연결을 요청합니다.
    • 이때 클라이언트는 SYN 플래그를 설정한 패킷을 서버에게 전송합니다.
    • SYN 패킷에는 클라이언트가 사용할 **초기 순번(Synchronization number)**이 포함되어 있습니다.
     
    클라이언트 ---- SYN ----> 서버
     
  2. SYN-ACK (Synchronize-Acknowledge) - 연결 수락:
    • 서버는 클라이언트로부터 SYN 패킷을 받으면, 클라이언트의 요청을 수락했다는 신호로 SYN-ACK 패킷을 보냅니다.
    • SYN-ACK 패킷에는 서버의 초기 순번과 클라이언트의 요청을 받았다는 **확인 응답 번호(ACK number)**가 포함됩니다.
     
    클라이언트 <---- SYN-ACK ---- 서버
     
  3. ACK (Acknowledge) - 연결 확정:
    • 클라이언트는 서버로부터 SYN-ACK 패킷을 수신하면, 연결이 가능하다는 응답을 받았으므로 ACK 패킷을 서버로 보냅니다.
    • 이때 클라이언트는 서버의 순번에 대한 **확인 응답 번호(ACK number)**를 포함한 패킷을 보내면서 연결을 확정합니다.
     
    클라이언트 ---- ACK ----> 서버

이 과정을 통해 클라이언트와 서버 간의 연결이 완료되며, 그 후에 데이터 전송을 시작할 수 있습니다.

3-way handshake 단계 요약:

  1. SYN: 클라이언트가 서버에 연결 요청을 보냅니다.
  2. SYN-ACK: 서버가 클라이언트의 요청을 수락하고 응답을 보냅니다.
  3. ACK: 클라이언트가 서버에게 응답을 확인하며 연결을 확정합니다.

3-way handshake의 목적:

  • 신뢰성: 송신자와 수신자가 서로 연결할 준비가 되었음을 확인하고, 순번을 동기화하여 신뢰성 있는 데이터 전송을 보장합니다.
  • 상호 동의: 데이터 전송 전에 양쪽이 모두 연결에 동의했음을 확인하는 절차입니다.

이 과정을 통해 TCP는 신뢰성 있는 연결을 설정하고 데이터 전송을 시작할 준비를 완료합니다.

'게임 서버' 카테고리의 다른 글

흐름제어와 혼잡제어  (0) 2024.10.07
라우터란 무엇인가  (0) 2024.10.04
주소창 주소입력  (1) 2024.10.04
IP 의 개념  (0) 2024.10.04
HTTP 와 TCP 웹소  (0) 2024.09.27