본문 바로가기

네트워크

TCP/UDP 프로토콜

TCP (Transmission Control Protocol)

TCP 는 네트워크 통신에서 연결 지향적이면서 신뢰성을 보장하는 프로토콜이다. OSI 7계층 기준으로 전송 계층에서 사용하는 프로토콜이다. 

 

3-way handshake 방식을 이용한 연결 성립 방식

 

3-way handshake

3-way handshake 는 TCP 의 연결 과정에서 사용하는 절차이다. 송신자와 수신자가 데이터 전송을 시작 전에 서로가 연결되어 있는지 확인하는 과정이다. TCP의 연결 지향적 프로토콜의 신뢰성을 보장한다.

1.  SYN 

  • 클라 -> 서버로 연결 요청
  • 클라가 서버에 TCP 연결을 요청하는 패킷을 보내는 것.
  • SYN 플래그가 있어 연결 요청임을 알 수 있다. 플래그에는 시퀀스 번호를 포함한다.

2. SYN-ACK

  • 서버 -> 클라 로 연결 요청 수락 및 확인했음을 알림
  • 이때 서버 자신의 시퀀스 번호와 함께 SYN-ACK 패킷을 보낸다.
  • 패킷은 SYN 플래그오 ACK 플래그가 모두 설정되어 있다.
  • ACK 는 클라의 시퀀스 번호  + 1 이다.

3. ACK

  • 클라 -> 서버로 서버의 응답을 확인하여 최종적으로 ACK 플래그만 포함하는 패킷을 서버에게 보냄
  • 이때 ACK 번호는 서버의 시퀀스 번호 + 1 로 설정
  • 최종적으로 양쪽 연결 확인. 통신 시작

 


다시 TCP로 와서

TCP 의 특징

 

1. 3-way handshake 을 이용한 연결 지향

2. 신뢰성 보장 : 데이터 손실 시에 재전송한다. ACK 를 통해 수슨 측에 데이터가 제대로 도착했는지 확인한다.

3. 데이터의 순서를 보장 : 전송 순대로 데이터를 재조립한다. 패킷의 도착 순서가 달라도 수신 측에서 정렬한다.

4. 송신자의 데이터 전송 속도 조절 가능

 

TCP 장단점

1. 신뢰성 보장. 네트워크 자체의 오류 시 재전송 기능으로 데이터를 복구 할 수 있다.

2. 더 많은 자원이 필요하고 속도가 상대적으로 느리다.

 

 


UDP

UDP는 비연결형 프로토콜이다.  빠르고 데이터 패킷 크기가 상대적으로 작다. 신뢰성이 떨어지는 단점이 있다.

UDP 의 주요 특징

 

1. 비연결형 : 송수진자를 연결하지 않는다. 데이터 전송 시 마다 목적지 주소와 포트를 지정한다.

2. 빠른 전송 : 연결 과정이 없어서 데이터 전송이 빠르다.

3. 신뢰성 미보장 : 데이터가 손실 시 혹은 순서 변경 시 복구 되지 않는다.

4. 재전송 불가능 : ack 가 없어서 재송신 자체가 불가하다.

5. 오버헤드가 적음 : 간단한 구조라서 자원의 크기가 작다.

 

 

TCP와 UDP를 선택하는 기준

  1. 데이터 신뢰성이 중요한 경우:
    • TCP 사용.
    • 예: 파일 전송, 웹 브라우징, 이메일.
  2. 속도가 중요한 경우:
    • UDP 사용.
    • 예: 스트리밍, 온라인 게임, 음성 통화.