신뢰성 있는 프로토콜(FSM, Finite State Machine)

  • 가정- Application 계층에 신뢰성이 있는 전송 서비스를 지원하려한다!
    - Network 계층은 안전한 데이터 전송 보장 X
    - Application 계층에서 rdt_send()에 의해 서비스가 요청됨
    - Network 계층에서 rdt_rcv()에 의해 서비스 요청
    - 신뢰성 있는 데이터 전송을 위한 프로토콜은 Transport 계층에서 수행됨
    - 프로토콜은 FSM(Finite State Machine)으로 표현

    >> 이제 TCP를 위해 어떤 방법들이 사용되었는지 알아보아요...
  • 신뢰성 있는 프로토콜 Version 1.0
    IF... 네트워크로 보낸 패킷은 반드시 상대편으로 전달 (loss 없음) + 패킷 데이터에 오류가 발생하지 않는다면
    (네트워크 계층에서 패킷 전송 신뢰성을 가진다면)

    송신자-수신자 모두 1개의 state를 가짐



  • 신뢰성 있는 프로토콜 Version 2.0
    IF... 네트워크로 보낸 패킷은 반드시 상대편으로 전달 (loss 없음) + 데이터에 에러 발생 가능(bit error)
    (checksum을 통해 bit error 감지!)

    - packet의 loss나 순서는 보장됨
    - ACK이 올 때까지 보낸 packet 보관

    [Ver 2.0 추가적 기능]
    (1) 오류 검출: 비트 오류 발생 여부 체크! --> packet 안에 checksum 필드 사용
    (2) 수신자 피드백
    : receiver가 올바른 packet을 받았다면 sender에게 ACK(acknowledgement, 긍정 확인응답)
    : receiver가 올바르지 않은 packet을 받았다면 sender에게 NAK(부정 확인응답)을 보냄
    (3) 재전송: 수신자로부터 NAK 응답이 온다면 --> 보냈던 패킷 재전송
  • 신뢰성 있는 프로토콜 Version 2.1


  • 신뢰성 있는 프로토콜 Version 2.2


  • 신뢰성 있는 프로토콜 Version 3.0


 

  • Pipelining 데이터 전송

'Study > data' 카테고리의 다른 글

네트워크 계층(Network layer)  (0) 2022.07.13
데이터링크 계층(Data Link layer)  (0) 2022.07.13