TCP / UDP

CODE-K·2025년 2월 7일

컴퓨터 네트워크

목록 보기
1/16

TCP

  • Tranport Layer는 송신자 <-> 수신자 사이의 연결을 통한 통신을 제공하는 Layer이다.

TCP(Transmission Control Protocol)
TCP : Reliable(책임감 있는) Protocol이라고 불린다.
이는 통신에 대한 신뢰성을 가지고 있기 때문이다.

TCP는 송, 수신자 사이에 교환되는 데이터 뭉치인 Packet의 전송에 대해서
전송 성공 여부를 확인하는데,
이러한 과정을 통해 데이터를 확실하게 전송할 수 있다는 신뢰성을 가지게 된다.

TCP 특징

1. 전이중 통신

  • 동시에 양방향으로 전송할 수 있으며, 전송한 데이터에 대한 확인 응답을 함께
    전송하는 Piggybacking 형식을 사용한다.

2. Multiplex / Demultiplex

  • 송신 : Multiplex / 수신 : Demultiplex 를 통하여 올바른 경로를 통해 데이터 전송이
    이루어진다.

3. 연결형 서비스

  • TCP는 송신자와 수신자 사이의 연결을 통하여 이루어진다.
  • 통신 시작 시 3-way handshaking
  • 통신 종료 시 4-way handshaking

4. 신뢰성 서비스

  • 데이터 전송에 대하여 확인 응답과 재전송을 통한 신뢰성을 보장한다.

5. 흐름 제어 (Flow Control)

  • Packet 전송 속도를 조절하여 수신자의 Buffer가 넘치지 않도록하여
    데이터의 손실을 방지한다.

6. 혼잡 제어 (Congestion Control)

  • 네트워크 망의 트래픽이 증가하여 처리할 수 있는 한도를 초과할 경우를 방지하기
    위해 관리

흐름 제어, 혼잡 제어, Piggybacking, 3-way handshaking 등의 다양한 방식은 모두

신뢰성 있는 통신을 제공하기 위한 TCP의 방식이다.


TCP 재전송 (오류 처리)

TCP의 통신 중에서 Packet 손실이 일어났을 때 or 오류가 발생하였을 때
이를 처리하기 위한 방식을 Pipelining method라고 한다.

Pipelining method

  1. Go-Back-N (GBN)

    • 오류가 발생한 Packet 이후에 전송된 Packet을 모두 재전송한다.
  2. Selective repeat

    • 오류가 발생한 Packet만 재전송한다.

TCP의 통신 형태를 간단하게 표현하면 위와 같다.

1) 송신자가 Packet을 전송, 해당 Packet에 대한 Timer 설정

2) 수신자는 Packet에 대해 이상 여부 확인 후 확인 응답인 Ack 전송

3) 보낸 Packet에 대한 확인 응답이 도착했다면 다음 Packet 전송

4) 확인 응답인 Ack에 문제가 발생하면 해당 Packet 재전송

그림을 보면 pkt1 가 전송 도중 손실되었고,
이에 따라 수신자 측에서 해당 Packet에 대한 Ack가 전송되지 않았다.

송신자는 전송한 Ack를 받지 못한채로 설정한 Timer가 끝났다.

송신자는 더 이상 Ack를 기다리지 않고 중간에 문제가 발생했다고 판단,

해당 Packet을 재전송한다.

송신자는 Packet을 보낼 때 Timer를 설정하는데, 이는 수신자 측에서 전송한

Ack를 받는 제한 시간이다.

Packet 혹은 Ack 가 손실 되었을 때, Timer를 설정함으로써 재전송하는 것이다.

Timer의 시간을 너무 빠르게 설정하였을 경우, Ack 메세지가 정상적으로 도달하기 전에 Time out으로 처리하여 재전송하게 되는데, 이는 낭비가 될 수 있기 때문에 Timer의 시간 설정은 신중하게 진행해야 한다.


Pipelined Method

그림과 같이, 일반적으로 TCP는 여러 Packet을 한 번에 전송하며,

이를 Pipelined Method라고 한다.

전송되는 Packet 중 오류가 발생하는 Packet이 생길 수 있다.

이럴 때 Packet을 재전송하게 되는데, 이 때 사용하는 두 가지 방식이

1) Go-Back-N
2) Selective Repeat 이다.

위 그림과 같이 Packet 2번이 손실되었을 때,
수신자는 Packet 2번을 받아야하는 차례인데,
Packet이 도착하지 않아 이전에 받았던 Packet 1번에 대한 확인 Ack만을 전송하게 되고
Ack 2번에 대한 Timeout으로 인하여 Packet 2번을 재전송한다.
이 때 Packet 2번 이후의 Packet들도 함께 재전송되는데, 이것이 Go-Back-N 방식이다.

반면 이 그림은 Packet 2번이 전송 도중 손실되었음에도 불구하고,

수신자는 이후 도착한 Packet에 대한 Ack를 전송한다.

이후 Packet 2에 대한 Timeout이 발생, Packet 2만 재전송된다.

이것이 Selective Repeat 방식으로,
손실이 발생한 Packet이 있더라도 이후 도착한 Packet들은 수신자의 Buffer에 임시 보관하고,
이후 손실된 Packet이 재전송 되었을 때,
Buffer에 저장되어있던 Packet들도 온전히 수신한다.


UDP(User Datagram Protocol)

UDP : Transport Layer의 Protocol로 데이터의 전송을 담당한다.

UDP 특징

1. 비연결형 서비스

  • TCP는 연결형 서비스였으나, UDP는 비연결형 서비스이다.
    이는 곧, 송신자는 수신자의 통신을 받지 않는다는 것으로,
    데이터 전송 여부를 확인을 하지 않는다는 것을 의미한다.

2. 신뢰성 없음

  • UDP 또한 전송하는 데이터의 오류를 판단하기 위한 방법이 있지만, 데이터 전송 확인
    및 재전송과 같은 일을 하지는 않는다.

3. 빠른 속도

  • UDP는 TCP와 다르게 많은 것을 보장해주지 않고 단순히 데이터 전송만을 목적으로
    한다.
    반면, 그로 인해 TCP에 필요한 부가적인 요소들이 없기 때문에, 더 빠른 통신이
    가능하다.
profile
개발자 지망생입니다.

0개의 댓글