TIL 44 | TCP/UDP

CHAEIN·2021년 8월 2일
0

Network

목록 보기
6/8
post-thumbnail

TCP와 UDP는 전송 계층에 해당하는 프로토콜로 여기서 전송 계층은 End Point 간 신뢰성있는 데이터 전송을 담당하는 계층이다.

전송 계층의 특징
1) 신뢰성 - 데이터를 순차적, 안정적으로 전달함
2) 전송 - 포트 번호에 해등하는 프로세스에 데이터를 전달함.

TCP

"Transmission Control Protocol"의 약자로서, 인터넷에서 사용되는 표준 통신 프로토콜

전송계층(Transport Layer)에서 사용하는 프로토콜로, 보통 하위 계층(Network Layer)에서 사용되는 IP와 엮어서 TCP/IP로 표현한다. 군사적 목적으로 개발되어 신뢰성을 보장한다.

TCP의 특징

  • 신뢰성 : 신뢰성을 제공하기 위해, 패킷이 손실되거나, 중복되거나, 네트워크 계층에서 순서의 바뀜 등이 없도록 보장해야 한다. 또한, TCP는 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계를 사용한다. TCP 하위계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공한다.

    1) 흐름제어 : 상대방이 받을 수 있을 만큼만 데이터를 효율적으로 전송하는 것을 의미한다.
    2) 오류제어 : 데이터의 오류나 누락 없이 안전한 전송을 보장하고, 오류 또는 누락이 발생했을 경우, 재전송을 수행하여 이를 보정한다.
    3) 혼잡제어 : 네트워크의 혼잡 정도에 따라 송신자가 데이터 전송량을 제어하는 것을 의미한다.

  • 다중화 : 한 라우터의 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있는 것을 뜻한다. 이들 프로세스는 같은 네트워크 인터페이스에서 통신할 수 있음으로, 네트워크 인터페이스의 IP 주소로 식별된다. 하지만 한 컴퓨터의 같은 네트워크 인터페이스를 사용하는 모든 프로세스는 공통의 IP 주소를 가지고 있기 때문에 IP 주소 외에도 더 많은 것이 필요하다. TCP는 TCP를 사용하는 응용 프로그램에 포트 번호 값을 연계시킨다

  • 연결형 서비스 : 물리적으로 전용회선이 연결된 것처럼 가상의 연결통로를 설정하여 통신하는 방식이다. 이러한 가상 회선 방식은 논리적인 연결통로를 통해 데이터를 주고받음으로써 데이터의 전송 순서를 보장해준다.

  • 양방향성 : 하나의 전송 선로에서 데이터가 동시에 양쪽으로 전송될 수 있다는 것을 의미한다.

연결 과정

TCP는 신뢰성 보장을 위해 사전 연결 설정인 3-way shaking, 연결된 세션의 종료를 위한 4-way shaking을 수행한다.

  • 3-way shaking
  1. 클라이언트는 서버에 연결 요청을 하기 위해 SYN(Synchronize Sequence Numbers) 데이터를 보내고, SYN_SENT 상태가 된다.
  2. 서버는 LISTEN 상태에서 SYN 요청을 받고, 클라이언트에게 ACK와 SYN 플래그를 발송한다. 서버는 클라이언트가 ACK 패킷으로 응답하기를 기다리는데, 이때 서버는 SYN_RECEIVED 상태가 된다.
  3. 클라이언트는 서버에게 ACK 패킷을 보내 데이터 송수신 상태인 ESTABLISHED로 된다.
  • 4-way shaking
  1. 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송한다.
  2. 서버는 확인 메시지(ACK)를 보내고 자신의 통신이 끝날 때까지 기다린다.
  3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 패킷을 전송한다.
  4. 클라이언트는 확인했다는 메시지(ACK)를 보낸다.
    * TIME-WAIT : 서버가 FIN 패킷을 전송하기 전에 전송한 ACK 패킷이 라우팅 지연이나 패킷 유실로 인해 재전송으로 FIN 패킷보다 늦게 도착할 수 있다. 클라이언트가 세션을 종료하고 뒤늦게 패킷이 도착하면, 데이터가 유실된다. 이러한 현상에 대비하여 클라이언트는 서버로부터 FIN을 수신하더라도 일정 시간 동안 세션을 남겨놓고 잉여 패킷을 기다린다. 이 상태를 TIME_WAIT이라고 한다.

TCP 활용

  • HTTP : HTTP 문서로 된 웹 페이지는 신뢰성이 중요하기 때문에 UDP 보다는 TCP를 사용한다. TCP 연결 설정 지연은 웹 문서 다운로드 지연에 주 원인이 된다.

UDP

전송 계층이 할 수 있는 최소 기능으로 작동하는 통신 프로토콜이다. 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜을 기반으로 구현되었다. 신뢰성이 낮은 프로토콜로, 완전성을 보장하지 않지만, 가상회선을 굳이 확립할 필요가 없고, 유연하며, 효율적인 응용의 데이터 전송에 적합하다.

UDP가 필요한 이유
실시간 App은 종종 최소 전송률을 요구하고 지나친 Latency를 지양하므로 조금의 데이터 손실을 감수하기에 TCP는 이런 APP 요구사항에 맞지 않는다. 이런 APP 들을 UDP를 사용하고 UDP 의 기본 세그먼트 전달 외에 필요한 기능은 개발자가 직접 구현하여 정교하게 제어할 수 있다.

UDP 활용

  • DNS : TCP는 데이터 전송을 위해 사전 연결 설정(3-way handshking)이 필요하다. DNS가 TCP에서 동작한다면 서비스를 요청한 송신자 모두와 연결 설정을 해야해 많이 느려질 것이다.

  • 실시간 영상 스트리밍 : 스트림 영상은 긴 파일로 간주하고, 여러 개의 작은 부분으로 나누어져 각각 실시간으로 전송 또는 방송된다. 전송 계층이 손실되거나 훼손된 프레임을 재전송하게 되면, 전체 전송의 동기가 맞지 않게 되어, 시청자는 갑자기 빈 화면만 보게 될 것이고, 두 번째 전송이 도착하기 전까지 기다려야 한다. 즉, 지연에 민감하다. 하지만 UDP는 훼손되거나 손실된 패킷을 무시하고 나머지 응용 프로그램으로 전달한다. 화면의 일부분이 아주 잠깐 공백이 되겠지만, 시청자들의 대부분은 알지 못한다. 즉, 손실에 둔감하다.

  • VolP : 음성 인터넷 프로토콜(Voice over IP)의 약자로, 음성신호를 압축하여 디지털 신호로 바꾸고, 이를 패킷 형태로 나누어 IP 기반 망을 통해서 전달하는 기술


TCP VS UDP

TCPUDP
연결지향형 프로토콜비연결지향형 프로토콜
가상회선 방식 사용데이터 그램 방식
전송 순서 보장전송 순서 보장하지 않음
일대일 통신(수신여부 확인)일대일, 다대일, 다대다 통신(수신여부 미확인)
신뢰성 높은신뢰성 낮음
속도 느림속도 빠름
사용자 요청에 따라 데이터 확인 및 재전송데이터 재전송하지 않음
오류 수정 가능오류 수정 불가능

신뢰성이 요구되는 애플리케이션에는 TCP, 간단하고 빠른 데이터 전송에는 UDP

참조
10분 테코톡 - 르윈의 TCP, UDP
해시넷 - TCP
해시넷 - UDP

0개의 댓글