Computer/네트워크

[네트워크] 신뢰적인 데이터 전송 서비스

치즈랑 2026. 7. 13. 00:49

https://app.notion.com/p/3-2-TCP-34ee2a9f37498095b5c5d5cf6789c76d

 

3장 2, 연결지향형 TCP, 혼잡 제어 | Notion

목표

forest-helenium-82b.notion.site

 

신뢰적인 데이터 전송 서비스

  • 의미
    • 손상 X
    • 손실/중복 X
    • 순서 유지
  • ※ 왜 전송계층은 신뢰적인 데이터 전송 서비스가 필요할까?
    • 인터넷의 네트워크 계층(IP 서비스)은 비신뢰적
      • 순서 X, 무결성 보장 X, 손상 O
  • 단일 재전송 타이머 사용
    • 오버헤드 X
    • → 타이머가 비었을 때 가장 먼저 들어온 세그먼트를 기준으로 한다.
    • 타이머는 ACK 받지 않은 가장 오래된 세그먼트를 기준으로 한다.
  • 시나리오 1 : 송신자 관점. (타임 아웃과 확인 응답) 중복 ACK X
  • 송신자 관점에서의 동작
    1. 애플리케이션으로 데이터 받고 → 세그먼트로 이 데이터를 캡슐화 → IP 데이터 넘기기
      • 순서번호
      • 세그먼트를 IP로 넘길 때 타이머 시작 → TimeoutInterval
    2. 타임 아웃
      • 타임 아웃 시 재전송
    3. 수신자로의 ACK 수신
      • 예시
        • 송신자 변수 Sendbase (누적 확인 응답 번호)
        • 수신자로부터 ACK y 받음
      1. y > Sendbase → Sendbase 의 값을 y로 갱신
      2. y < Sendbase → 무시
  • 시나리오 2 : 송/수신자 관점. (타임 아웃과 확인 응답)

 

  1. 호스트 A가 호스트 B에 하나의 세그먼트를 송신
  2. 호스트 B가 확인응답을 보내다가 손실된 경우
  3. 송신자가 타임아웃 후에 이전에 보냈던 세그먼트 재전송

 

 

 

 

 

 

 

 

 

  1. 호스트 A가 호스트 B에 연속으로 두 개의 세그먼트를 송신
  2. 호스트 B는 수신된 두 개의 세그먼트에 대해서 확인응답을 보냈으나 이미 첫 번째 세그먼트가 Timeout이 발생한 경우
  3. 호스트 A는 첫번째 세그먼트를 호스트 B에게 송신
  4. 호스트 B는 누적 확인 응답으로 두 번째 세그먼트에 대한 확인응답을 보낸다.
  • 누적 확인 응답 (수신자가 어디까지 받았는지 보내는 응답, 누적으로 확인한다)
    • ACK 120의 의미 = ACK 120 이전의 데이터는 모두 받았어요.

 

 

  1. 호스트 A가 호스트 B에게 두 개의 세그먼트를 송신
  2. 호스트 B가 모두 확인응답 세그먼트를 호스트 A에게 보냈으나 첫번째 확인응답은 손실.
  3. 그러나 호스트 A 입장에서는 두 번째 세그먼트에 대한 확인 응답을 받았으므로 첫 번째 세그먼트에 대한 재전송 X
  • (누적 확인응답이기에)

 

 

  • 추가로 고려할 사항들 (위의 시나리오에서는 고려하지 않은 사항들)
  1. 재전송 시 타임아웃 주기 * 2
    • 제한된 형태의 혼잡 제어
      • 타임아웃은 주로 네트워크 혼잡 때문에 발생
        (= 라우터 버퍼 오버플로 / 오랜 큐 대기)

2. 빠른 재전송 - 중복 ACK

  • 긴 타임아웃 주기 = 종단 간의 지연
  • 수신자의 중복 ACK가 일어나는 경우
  • y는 호스트 B의 확인 응답 번호
  • Sendbase는 Host A 송신자 변수
    1. y > Sendbase
      Sendbase에 y 할당
      새로운 타이머 시작
    2. y ≤ Sendbase
      중복 ACK 받음
      1. 중복 ACK의 개수가 3
      2. 순서번호가 y인 세그먼트 재전송

 

 

 

  • GBN vs SR vs TCP
    • GBN vs TCP
      • 공통점
        • 송신자는 ack 받지 않은 가장 작은 확인응답 번호 기억,
          전송될 다음 바이트의 순서 번호 기억
      • 차이점 : TCP는 순서가 바뀐 세그먼트 버퍼링
        • 예시 : 1 ~ k ~ n 전송(오류 없이 완벽히 받음), k-1 타임아웃 전 ack 받음,
          k ack 패킷 손실.
        • GBN : k부터 n까지 모두 재전송
          • 순서 틀리면 버림 = 수신기 버퍼 X
        • TCP : k만 재전송 / k 타임아웃 전에 k+1 패킷 받으면 무시
    • SR vs TCP
      • 차이점
        • SR : 개별 확인 응답
        • TCP : ‘순서가 틀린’ 세그먼트에 대해 누적 확인응답 보냄
          • 중복 ACK
728x90

'Computer > 네트워크' 카테고리의 다른 글

[네트워크] 링크 계층  (0) 2026.07.14
[네트워크] TCP의 혼잡 제어  (0) 2026.07.13
[네트워크] 혼잡 제어  (0) 2026.07.13
[네트워크] TCP 흐름 제어 서비스  (1) 2026.07.13
[네트워크] 연결지향형 TCP 2  (1) 2026.07.13