애플리케이션계층 2

ㄱㅇㅁ·2023년 10월 7일

네트워크

목록 보기
4/20

TCP의 기능

Reliable Data Transfer

  • Transport layer는 하위 계층을 통해 통신
    - 하위 계층은 reliable 하지 x

    Unreliable Channel

    1. packet error
    2. packet loss
  • transport layer에서 packet loss, packet error을 체크해주어야 함

Reliable Data Transfer (RDT) protocol

  • transport layer에서 reliable한 통신이 이루어지도록 하는 protocol
  • 하나 보내고 확인, 하나 보내고 확인

RDT 1.0

  • 매우 간단한 상황부터 가정
  • if) underlying network 채널에서 error, loss가 발생하지 않음
  • 그냥 보내면 됨
  • 매우 비현실적인 상황

RDT 2.0

  • if) underlying channel에서 error가 발생, loss는 발생 x
    1. sender가 packet을 보냄
    2. 받으면 receiver가 feedback을 보냄 (ACK, NAK)
    3. 만약 receiver가 NAK을 받으면 sender는 packet을 재전송

1. Error detection (에러 감지)

  • error 감지를 위해 보내는 packet에 checksum을 담아서 보냄

2. Feedback (피드백)

  • packet을 받을 때마다 데이터를 오류 없이 잘 받았는지 feedback을 주어야함

Acknowledgements(ACKs) : packet을 정상적으로 받았을 때
Negative Acknowledgements(NAKs) : packet에 에러가 있었을 때

3. Retransmission (재전송)

  • sender는 NAK을 받으면 이전에 보낸 packet을 재전송

RDT 2.1

Feedback 자체가 에러라면?

  • Feedback에도 checksum이 필요
  • sender는 ACK, NAK을 받았는지 판단 불가
    -> 무조건 재전송
    -> receiver는 packet이 중복인지 새로운것인지 판단할 수 없음
  • 해결방안 : header에 packet 번호를 붙이면 됨 (sequence number)
  • header의 크기는 작을수록 좋음 = Sequence number 개수를 최소화하고 싶음
    - 2개로 충분하다

packet error -> error detection, feedback, retransmisson, sequence number로 해결

RDT 2.2

  • NAK 없이 ACK만 사용
  • receiver가 마지막으로 정상적으로 받은 ACK 번호를 sender에게 보냄

RDT 3.0

  • if) underlying channel에서 error, loss 모두 발생
  • Timer 사용
    - 유실되었다면 아무 feedback 없음 = Time out
  • Timer 시간을 얼마로 해야할 것인가?
    • timer 시간 짧을 때
      장점 : 유실 일어났을 경우 recovery가 빠름
      단점 : 네트워크 오버헤드가 커짐
    • timer 시간 길 때
      장점 : 네트워크 오버헤드 작음
      단점 : loss 발생했을 때 반응이 늦음

Recap : Principles of Reliable Data Transfer

  • unreliable channel에서는 packet error, packet loss가 발생할 수 있음
  • packet error를 해결하기 위해 error detection, feedback, retransmission, sequence number을 사용
    • TCP header에 필드로 구성
  • packet loss를 해결하기 위해 timer 사용

Pipelined protocols

  • 하지만 지금까지의 RDT 프로토콜은 1번에 1개씩만 전송
    - packet 1개 전송 후 ACK가 올 때까지 소켓은 아무것도 안함
    • 실제 TCP는 이렇지 x
  • 실제 TCP는 pipelined 방식으로 동작
    • 한번에 packet 보내고 한번에 feedback 받음

0개의 댓글