본문 바로가기
개발/Network

TCP 재전송 기능

by BellOne4222 2024. 1. 30.

CH4-07. TCP 재전송 기능


TCP는 신뢰성 프로토콜

  • 무엇인가를 확실히 전송했다는 보장이 있으려면?
  1. 재전송 기반의 오류제어 : 잘못 전송된 경우 재전송
  2. 흐름 제어 : 받을 수 있을 만큼만 받기
  3. 혼잡 제어 : 보낼 수 있는 상황에서만 보내기
  • 잘못 전송 된 경우(패킷이 유실된 경우)에 언제 잘못 되었음을 인지할까?
  1. 중복된 ACK 세그먼트를 수신 했을 때

→ 손실이 난 부분 에서는 호스트 B는 n+1 세그먼트를 받길 예상하고있다. 그래서 손실을 알리기 위해 중복된 세그먼트를 다시 전송

  1. 타임아웃이 발생했을 때 → 재전송 타이머으로 알 수 있다.

→ 액티브 오픈 호스트에서 세그먼트 전송 할때 타이머를 시작하고 패시브 오픈 호스트에서 중간에 유실되서 못받아서 응답시간이 길어지면 타이머가 끝나서 타임아웃이 발생하고 그래서 다시 재전송을 한다.

TCP 오류 제어

  • TCP는 재전송 기반의 오류 제어를 수행
  • 재전송을 기반으로 잘못된 전송을 바로잡는 것 : ARQ(자동 재전송 요구)
  • Go-Back-N ARQ, Selective Repeat ARQ를 혼합해서 요즘 많이 사용한다.
  • Stop-and-Wait ARQ도 있다.

Stop-and-Wait ARQ

  • 가장 단순한 형대
  • 제대로 보냈음을 확인하기 전까지는 보내지 않음(ACK를 받지 않았다면 다음 세그먼트를 보내지 않는다.)
  • 전송→ 확인 과정을 반복
  • 네트워크 이용 효율이 낮아지는 문제가 있다. → 확인을 해야 보내는 방식때문에 효율이 낮다.

→ 이런 문제를 해결하기 위해 파이프 라이닝 사용

파이프 라이닝 : 여러 세그먼트를 한 번에 전송 → 보낼 수 있는 양껏 보내는 방법

Go-Back-N ARQ

  • 올바른 세그먼트에 대해서는 확인 응답 보냄
  • 올바르지 않은 세그먼트가 수신되면 이후의 모든 세그먼트는 폐기한다, 올바르게 수신 받지 못한 세그먼트에 대해서만 확인 응답 전송 → 타임 아웃 발생 → 재전송
  • 파이프 라이닝 방식 사용
  • 누적 확인 응답 : 올바르지 않은 세그먼트 다음의 세그먼트가 모두 옳아도 전부 폐기하기 때문에 세그먼트 각각이 아니라 지금까지 전송한 옳은 세그먼트만 누적하는 확인 응답 방식

Selective Repeat ARQ

  • 올바른 세그먼트에 대해서만 확인 응답 보냄
  • 각 세그먼트에 대한 확인 응답: 개별 확인 응답
  • 확인 응답 받지 못한 세그먼트를 확인해서 재전송

빠른 재전송

  • 빠른 재전송이 없는 경우 : 재전송 타이머가 만료되어야 비로소 재전송
  • 빠른 재전송이 있는 경우 : 재전송 타이머가 만료되지 않아도 중복 세그먼트가 수신되면(3번) 재전송

'개발 > Network' 카테고리의 다른 글

DNS  (0) 2024.01.30
TCP의 혼잡 제어와 흐름 제어  (0) 2024.01.30
TCP 상태  (0) 2024.01.30
TCP 연결  (0) 2024.01.30
TCP와 UDP  (0) 2024.01.30