TCP와 UDP 간단 요약

Chaeyoung·2023년 7월 31일
0
post-thumbnail
post-custom-banner

사진 출처 : https://www.geeksforgeeks.org/differences-between-tcp-and-udp/

  • 개인 학습용으로 작성되었습니다.

TCP

  • Transmission Control Protocol
  • 적절한 애플리케이션 데이터를 전달하기 위해 이용되는 프로토콜
  • IP, HTTP, FTP, SMTP 등과 같이 프로토콜의 일종이다.

MSS (Maximun Segment Size)

  • TCP의 데이터 사이즈 최대치

TCP 헤더 포맷의 요소

  • 여기서 헤더란? 데이터 본체와는 별도로 데이터의 맨 앞에 추가되는 정보이다. 그리고 TCP 헤더를 추가한 애플리케이션 데이터를 TCP 세그먼트라고 부른다.

TCP 연결의 성립과 종료

  • TCP에서 TCP헤더 정보를 어떻게 사용하여 데이터를 전송할까?

TCP 데이터 전송

  • TCP 연결의 성립과 종료
  • 데이터 전송 시의 동작

TCP 연결 성립

  • TCP는 애플리케이션 간의 신뢰성 있는 데이터 전송을 수행하기 위해 3 way handshake 기업을 사용한다.
  • 말 그대로 세번 인사한다는 뜻

3 way handshake

  • 연결 요구(SYN 플래그) : 연결해도 되니?
  • 응답(SYN/ACK 플래그) : 응, 나도 연결할게
  • 응답(ACK 플래그) : 나도 오케이
  • 이 3단계를 거침으로써 쌍방향 연결을 성립시키는 것으로 TCP를 연결형 프로토콜이라고도 한다.

TCP 연결 종료

  • 세그먼트 4개가 오고감
  • A 종료 요구(FIN/ACK 플래그) :연결 종료해도 되니?
  • B 종료 요구 확인(ACK 플래그) : 응, 고럼고럼
  • A 자신도 연결을 종료하겠다는 의사(FIN/ACK 플래그) : 나도 연결 종료할게
  • B 종료 요구 확인(ACK 플래그) : 그랭

데이터 전송 시의 동작

  • TCP는 윈도우제어, 재전송 제어, 혼잡 제어와 같은 제어 기능을 구사하여 확실하고 효율적인 데이터를 전송한다.

윈도우 제어

  • 얼만큼의 TCP 세그먼트를 한 번에 보낼 것인가를 제어하는 시스템
  • 슬라이딩 윈도우 방식이라고도 불림
  • 윈도우 제어에서 TCP 세그먼트 여러 개를 보내다 보면 수신하는 쪽에 도착하는 순서가 바뀔 가능성도 생긴다. 이럴 경우 순서 제어 시스템을 수행하여 TCP 헤더의 시퀀스 번호를 이용한다.
  • 시퀀스 번호는 송신 데이터의 순서를 가리키는 번호!

재전송 제어

  • TCP 세그먼트가 네트워크 상에서 전송될 때 데이터가 유실되는 경우도 발생하는데 이때 유실된 TCP 세그먼트를 재전송하는 시스템이다.
  • TCP 세그먼트를 송신했을 때 RTO(Retransmission Time Out)시간 이내에 확인 응답을 받아야하는 규칙이 있다. RTO 시간 이내에 확인 응답을 받지 못하면 데이터가 유실 된 것을 판단되어 재전송 제어에 의해 TCP 세그먼트가 재전송 된다.
  • RTT(Round Trip Time) : TCP 세그먼트의 확인 응답이 돌아오기 까지의 시간

재전송 타임아웃 발생하는 3가지 원인

  • TCP 세그먼트 유실
  • 확인 응답 유실
  • TCP 세그먼트, 확인 응답의 전송이나 처리에 시간이 너무 오래 걸림

혼잡 제어

  • TCP 세그먼트가 유실되는 원인은 대부분 네트워크 혼잡에 있다.
  • 혼잡 제어는 네트워크 혼잡을 회피하는 것
  • 혼잡 제어에는 다양한 방식이 있다.

슬로우 스타트 알고리즘 방식

  • 맨 처음 송신하는 쪽에서 혼잡 윈도우(송신하는 쪽에서 한번에 보내는 데이터의 양)를 1로 설정할 때 수신하는 쪽의 윈도우 사이즈 만큼의 데이터를 가지고 한꺼번에 보내는 것이 아니라, 확인 응답이 돌아오면 혼잡 윈도우를 1씩 늘이는 방식이다. 한번에 송신하는 데이터의 양을 서서히 늘려가며 전송한다.
  • 혼잡 제어는 재전송 타임아웃이 발생했을 때 TCP 세그먼트 재전송에도 사용된다.

UDP

  • User Datagram Protocol
  • TCP 처럼 포트 번호에 따라 적절한 애플리케이션에 데이터를 전달하기 위한 프로토콜
  • UDP는 TCP와 달리 데이터 전달말고는 아무것도 하지않는다.
  • 단지 데이터를 전달하는 것이 목적인 UDP
  • UDP 데이터그램
  • TCP 헤더는 표준 20바이트지만 UDP헤더는 8바이트이기 때문에 오버헤드가 적으므로 TCP보다 통신 효율이 높아짐

UDP 용도

  • 실시간 데이터를 전송할 때
  • 여러 상대에게 같은 내용의 데이터를 전송할 때
  • 데이터 전송 시 신뢰성이 필요하지 않은 소량의 데이터를 전송할 때

실시간 데이터를 전송할 때

  • VoIP(Voice over IP) : IP 네트워크상에서 음성을 IP 패킷으로 주고받는 기술, IP 전화에 주고받는 기술이라 생각하기
  • VoIP 패킷은 지연에 민감함으로 TCP 같은 연결의 성립이나 확인 응답 시스템은 오버헤드일 뿐이다. 신뢰성이 낮더라도 빠르게 데이터를 전송하는 것이 목적! 유실되더라도 음성이 약간 끊길 뿐임

여러 상태와의 통신

  • TCP에서는 브로드캐스트, 멀티 캐스트 통신이 불가하다.(TCP는 유니캐스트 통신만 가능)
  • 화상회의 애플리케이션 등에 UDP를 주로 사용함

소량의 데이터를 빈번히 주고 받을 때

  • DNS가 대표적 예시

TCP와 UDP 비교

  • 각각의 특징과 주요 기능, 용도에 대해 알아두는 것이 중요!

출처: 손으로 배우며 익히는 네트워크 첫걸음

post-custom-banner

0개의 댓글